@rolatech/angular-property 20.0.0-beta.13 → 20.0.0-beta.14

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.
@@ -6,7 +6,7 @@ import { MatButtonModule } from '@angular/material/button';
6
6
  import * as i1 from '@angular/router';
7
7
  import { RouterModule } from '@angular/router';
8
8
  import { PropertyService } from '@rolatech/angular-services';
9
- import { P as PropertyViewingItemComponent } from './rolatech-angular-property-rolatech-angular-property-DSFZRtNt.mjs';
9
+ import { P as PropertyViewingItemComponent } from './rolatech-angular-property-rolatech-angular-property-BUtExPY1.mjs';
10
10
 
11
11
  class PropertyManageViewingsIndexComponent extends BaseComponent {
12
12
  propertyService = inject(PropertyService);
@@ -84,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
84
84
  }] });
85
85
 
86
86
  export { PropertyManageViewingsIndexComponent };
87
- //# sourceMappingURL=rolatech-angular-property-property-manage-viewings-index.component-BpzCLRiN.mjs.map
87
+ //# sourceMappingURL=rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-property-property-manage-viewings-index.component-BpzCLRiN.mjs","sources":["../tmp-esm2022/lib/pages/property-manage/property-manage-viewings-index/property-manage-viewings-index.component.js"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, EmptyComponent, TabComponent, TabsComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { PropertyViewingItemComponent } from '../../../components/property-viewing-item/property-viewing-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class PropertyManageViewingsIndexComponent extends BaseComponent {\n propertyService = inject(PropertyService);\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Completed',\n icon: 'category',\n status: 'completed',\n },\n {\n name: 'Cancelled',\n icon: 'category',\n status: 'cancelled',\n },\n ];\n filterOptions = {\n type: '',\n status: '',\n };\n viewings = [];\n ngOnInit() {\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n if (status) {\n this.filterOptions.status = status.toUpperCase();\n }\n else {\n delete this.filterOptions.status;\n }\n this.findViewings();\n });\n }\n findViewings() {\n const options = {\n sort: 'updatedAt desc',\n };\n const filterString = this.convertFilterOptions(this.filterOptions);\n if (filterString) {\n options['filter'] = filterString;\n }\n this.propertyService.findViewingsByAgent(options).subscribe({\n next: (res) => {\n this.viewings = res.data;\n },\n });\n }\n convertFilterOptions(jsonObj) {\n return Object.entries(jsonObj)\n .filter(([key, value]) => value !== '' && value !== undefined)\n .map(([key, value]) => {\n return `${key}:${value}`;\n })\n .join(',');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertyManageViewingsIndexComponent, isStandalone: true, selector: \"rolatech-property-manage-viewings-index\", usesInheritance: true, ngImport: i0, template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: ToolbarComponent, selector: \"rolatech-toolbar\", inputs: [\"title\", \"subtitle\", \"back\", \"link\", \"large\", \"divider\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: TabsComponent, selector: \"rolatech-tabs\", inputs: [\"select\", \"loading\"], outputs: [\"selectChange\"] }, { kind: \"component\", type: TabComponent, selector: \"rolatech-tab\", inputs: [\"label\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i1.RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"component\", type: EmptyComponent, selector: \"rolatech-empty\" }, { kind: \"component\", type: PropertyViewingItemComponent, selector: \"rolatech-property-viewing-item\", inputs: [\"viewing\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rolatech-property-manage-viewings-index', imports: [\n CommonModule,\n ToolbarComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterModule,\n EmptyComponent,\n PropertyViewingItemComponent,\n ], template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItcHJvcGVydHkvc3JjL2xpYi9wYWdlcy9wcm9wZXJ0eS1tYW5hZ2UvcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4L3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXByb3BlcnR5L3NyYy9saWIvcGFnZXMvcHJvcGVydHktbWFuYWdlL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQzs7O0FBa0J6SCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsYUFBYTtJQUNyRSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxLQUFLLEdBQUc7UUFDTjtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLFdBQVc7U0FDbEI7UUFDRDtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsVUFBVTtZQUNoQixNQUFNLEVBQUUsV0FBVztTQUNwQjtLQUNGLENBQUM7SUFDRixhQUFhLEdBQVE7UUFDbkIsSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFDRixRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUVqQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBSSxNQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ25DLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUFPO1FBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQzthQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzt1R0F6RFUsb0NBQW9DOzJGQUFwQyxvQ0FBb0MsMEhDeEJqRCxpdEJBcUJBLHlERFRJLFlBQVksK0JBQ1osZ0JBQWdCLCtIQUNoQixlQUFlLCtCQUNmLGFBQWEsb0hBQ2IsWUFBWSwyRUFDWixZQUFZLGdSQUNaLGNBQWMsMkRBQ2QsNEJBQTRCOzsyRkFLbkIsb0NBQW9DO2tCQWZoRCxTQUFTOytCQUNFLHlDQUF5QyxXQUMxQzt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRW1wdHlDb21wb25lbnQsIFRhYkNvbXBvbmVudCwgVGFic0NvbXBvbmVudCwgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wcm9wZXJ0eS12aWV3aW5nLWl0ZW0vcHJvcGVydHktdmlld2luZy1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmcgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBUYWJzQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRW1wdHlDb21wb25lbnQsXG4gICAgUHJvcGVydHlWaWV3aW5nSXRlbUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eU1hbmFnZVZpZXdpbmdzSW5kZXhDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvcGVydHlTZXJ2aWNlID0gaW5qZWN0KFByb3BlcnR5U2VydmljZSk7XG4gIHNlbGVjdCA9IDA7XG4gIGxpbmtzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdBbGwnLFxuICAgICAgaWNvbjogJ2Rhc2hib2FyZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnQ29tcGxldGVkJyxcbiAgICAgIGljb246ICdjYXRlZ29yeScsXG4gICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NhbmNlbGxlZCcsXG4gICAgICBpY29uOiAnY2F0ZWdvcnknLFxuICAgICAgc3RhdHVzOiAnY2FuY2VsbGVkJyxcbiAgICB9LFxuICBdO1xuICBmaWx0ZXJPcHRpb25zOiBhbnkgPSB7XG4gICAgdHlwZTogJycsXG4gICAgc3RhdHVzOiAnJyxcbiAgfTtcbiAgdmlld2luZ3M6IFByb3BlcnR5Vmlld2luZ1tdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHsgc3RhdHVzIH0pID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5saW5rcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSBzdGF0dXMpO1xuICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMuc3RhdHVzID0gKHN0YXR1cyBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJPcHRpb25zLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluZFZpZXdpbmdzKCk7XG4gICAgfSk7XG4gIH1cbiAgZmluZFZpZXdpbmdzKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBzb3J0OiAndXBkYXRlZEF0IGRlc2MnLFxuICAgIH07XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gdGhpcy5jb252ZXJ0RmlsdGVyT3B0aW9ucyh0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgIGlmIChmaWx0ZXJTdHJpbmcpIHtcbiAgICAgIG9wdGlvbnNbJ2ZpbHRlciddID0gZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLnByb3BlcnR5U2VydmljZS5maW5kVmlld2luZ3NCeUFnZW50KG9wdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy52aWV3aW5ncyA9IHJlcy5kYXRhO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjb252ZXJ0RmlsdGVyT3B0aW9ucyhqc29uT2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGpzb25PYmopXG4gICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtrZXl9OiR7dmFsdWV9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignLCcpO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIlZpZXdpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPjwvZGl2PlxuPC9yb2xhdGVjaC10b29sYmFyPlxuPHJvbGF0ZWNoLXRhYnMgW3NlbGVjdF09XCJzZWxlY3RcIj5cbiAgQGZvciAoaXRlbSBvZiBsaW5rczsgdHJhY2sgaXRlbSkge1xuICAgIEBpZiAoaXRlbS5zdGF0dXMpIHtcbiAgICAgIDxyb2xhdGVjaC10YWIgW2xhYmVsXT1cIml0ZW0ubmFtZVwiIHJvdXRlckxpbms9XCIuL1wiIFtxdWVyeVBhcmFtc109XCJ7IHN0YXR1czogaXRlbS5zdGF0dXMgfVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHJvbGF0ZWNoLXRhYiBbbGFiZWxdPVwiaXRlbS5uYW1lXCIgcm91dGVyTGluaz1cIi4vXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgfVxuICB9XG48L3JvbGF0ZWNoLXRhYnM+XG48ZGl2PlxuICBAaWYgKHZpZXdpbmdzKSB7XG4gICAgQGZvciAoaXRlbSBvZiB2aWV3aW5nczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8cm9sYXRlY2gtcHJvcGVydHktdmlld2luZy1pdGVtIFtyb3V0ZXJMaW5rXT1cIlsnLi8nLCBpdGVtLmlkXVwiIFt2aWV3aW5nXT1cIml0ZW1cIj48L3JvbGF0ZWNoLXByb3BlcnR5LXZpZXdpbmctaXRlbT5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDxyb2xhdGVjaC1lbXB0eT48L3JvbGF0ZWNoLWVtcHR5PlxuICB9XG48L2Rpdj5cbiJdfQ=="],"names":[],"mappings":";;;;;;;;;;AASO,MAAM,oCAAoC,SAAS,aAAa,CAAC;AACxE,IAAI,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAC7C,IAAI,MAAM,GAAG,CAAC;AACd,IAAI,KAAK,GAAG;AACZ,QAAQ;AACR,YAAY,IAAI,EAAE,KAAK;AACvB,YAAY,IAAI,EAAE,WAAW;AAC7B,SAAS;AACT,QAAQ;AACR,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,MAAM,EAAE,WAAW;AAC/B,SAAS;AACT,QAAQ;AACR,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,MAAM,EAAE,WAAW;AAC/B,SAAS;AACT,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,EAAE,EAAE;AAChB,QAAQ,MAAM,EAAE,EAAE;AAClB,KAAK;AACL,IAAI,QAAQ,GAAG,EAAE;AACjB,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK;AACzD,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;AAChF,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;AAChE;AACA,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM;AAChD;AACA,YAAY,IAAI,CAAC,YAAY,EAAE;AAC/B,SAAS,CAAC;AACV;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,IAAI,EAAE,gBAAgB;AAClC,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1E,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,OAAO,CAAC,QAAQ,CAAC,GAAG,YAAY;AAC5C;AACA,QAAQ,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACpE,YAAY,IAAI,EAAE,CAAC,GAAG,KAAK;AAC3B,gBAAgB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI;AACxC,aAAa;AACb,SAAS,CAAC;AACV;AACA,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO;AACrC,aAAa,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;AACzE,aAAa,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACnC,YAAY,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpC,SAAS;AACT,aAAa,IAAI,CAAC,GAAG,CAAC;AACtB;AACA,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;AAChM,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yCAAyC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,itBAAitB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,gCAAgC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;AAC34D;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,UAAU,EAAE,CAAC;AAC9I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,OAAO,EAAE;AACnF,wBAAwB,YAAY;AACpC,wBAAwB,gBAAgB;AACxC,wBAAwB,eAAe;AACvC,wBAAwB,aAAa;AACrC,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB,4BAA4B;AACpD,qBAAqB,EAAE,QAAQ,EAAE,itBAAitB,EAAE;AACpvB,SAAS,CAAC,EAAE,CAAC;;;;"}
1
+ {"version":3,"file":"rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs","sources":["../tmp-esm2022/lib/pages/property-manage/property-manage-viewings-index/property-manage-viewings-index.component.js"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseComponent, EmptyComponent, TabComponent, TabsComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { PropertyViewingItemComponent } from '../../../components/property-viewing-item/property-viewing-item.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nexport class PropertyManageViewingsIndexComponent extends BaseComponent {\n propertyService = inject(PropertyService);\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Completed',\n icon: 'category',\n status: 'completed',\n },\n {\n name: 'Cancelled',\n icon: 'category',\n status: 'cancelled',\n },\n ];\n filterOptions = {\n type: '',\n status: '',\n };\n viewings = [];\n ngOnInit() {\n this.route.queryParams.subscribe(({ status }) => {\n this.select = this.links.findIndex((item) => item.status === status);\n if (status) {\n this.filterOptions.status = status.toUpperCase();\n }\n else {\n delete this.filterOptions.status;\n }\n this.findViewings();\n });\n }\n findViewings() {\n const options = {\n sort: 'updatedAt desc',\n };\n const filterString = this.convertFilterOptions(this.filterOptions);\n if (filterString) {\n options['filter'] = filterString;\n }\n this.propertyService.findViewingsByAgent(options).subscribe({\n next: (res) => {\n this.viewings = res.data;\n },\n });\n }\n convertFilterOptions(jsonObj) {\n return Object.entries(jsonObj)\n .filter(([key, value]) => value !== '' && value !== undefined)\n .map(([key, value]) => {\n return `${key}:${value}`;\n })\n .join(',');\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.3\", type: PropertyManageViewingsIndexComponent, isStandalone: true, selector: \"rolatech-property-manage-viewings-index\", usesInheritance: true, ngImport: i0, template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: ToolbarComponent, selector: \"rolatech-toolbar\", inputs: [\"title\", \"subtitle\", \"back\", \"link\", \"large\", \"divider\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: TabsComponent, selector: \"rolatech-tabs\", inputs: [\"select\", \"loading\"], outputs: [\"selectChange\"] }, { kind: \"component\", type: TabComponent, selector: \"rolatech-tab\", inputs: [\"label\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"directive\", type: i1.RouterLink, selector: \"[routerLink]\", inputs: [\"target\", \"queryParams\", \"fragment\", \"queryParamsHandling\", \"state\", \"info\", \"relativeTo\", \"preserveFragment\", \"skipLocationChange\", \"replaceUrl\", \"routerLink\"] }, { kind: \"component\", type: EmptyComponent, selector: \"rolatech-empty\" }, { kind: \"component\", type: PropertyViewingItemComponent, selector: \"rolatech-property-viewing-item\", inputs: [\"viewing\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: PropertyManageViewingsIndexComponent, decorators: [{\n type: Component,\n args: [{ selector: 'rolatech-property-manage-viewings-index', imports: [\n CommonModule,\n ToolbarComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterModule,\n EmptyComponent,\n PropertyViewingItemComponent,\n ], template: \"<rolatech-toolbar title=\\\"Viewings\\\">\\n <div class=\\\"flex items-center gap-2\\\"></div>\\n</rolatech-toolbar>\\n<rolatech-tabs [select]=\\\"select\\\">\\n @for (item of links; track item) {\\n @if (item.status) {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\" [queryParams]=\\\"{ status: item.status }\\\"></rolatech-tab>\\n } @else {\\n <rolatech-tab [label]=\\\"item.name\\\" routerLink=\\\"./\\\"></rolatech-tab>\\n }\\n }\\n</rolatech-tabs>\\n<div>\\n @if (viewings) {\\n @for (item of viewings; track $index) {\\n <rolatech-property-viewing-item [routerLink]=\\\"['./', item.id]\\\" [viewing]=\\\"item\\\"></rolatech-property-viewing-item>\\n }\\n } @else {\\n <rolatech-empty></rolatech-empty>\\n }\\n</div>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItcHJvcGVydHkvc3JjL2xpYi9wYWdlcy9wcm9wZXJ0eS1tYW5hZ2UvcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4L3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXByb3BlcnR5L3NyYy9saWIvcGFnZXMvcHJvcGVydHktbWFuYWdlL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQzs7O0FBa0J6SCxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsYUFBYTtJQUNyRSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWCxLQUFLLEdBQUc7UUFDTjtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLFdBQVc7U0FDbEI7UUFDRDtZQUNFLElBQUksRUFBRSxXQUFXO1lBQ2pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsVUFBVTtZQUNoQixNQUFNLEVBQUUsV0FBVztTQUNwQjtLQUNGLENBQUM7SUFDRixhQUFhLEdBQVE7UUFDbkIsSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFDRixRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUVqQyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBSSxNQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9ELENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ25DLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzFELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUFPO1FBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQzthQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzt1R0F6RFUsb0NBQW9DOzJGQUFwQyxvQ0FBb0MsMEhDeEJqRCxpdEJBcUJBLHlERFRJLFlBQVksK0JBQ1osZ0JBQWdCLCtIQUNoQixlQUFlLCtCQUNmLGFBQWEsb0hBQ2IsWUFBWSwyRUFDWixZQUFZLGdSQUNaLGNBQWMsMkRBQ2QsNEJBQTRCOzsyRkFLbkIsb0NBQW9DO2tCQWZoRCxTQUFTOytCQUNFLHlDQUF5QyxXQUMxQzt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRW1wdHlDb21wb25lbnQsIFRhYkNvbXBvbmVudCwgVGFic0NvbXBvbmVudCwgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQcm9wZXJ0eVNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmdJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wcm9wZXJ0eS12aWV3aW5nLWl0ZW0vcHJvcGVydHktdmlld2luZy1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdpbmcgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvcGVydHktbWFuYWdlLXZpZXdpbmdzLWluZGV4JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBUYWJzQ29tcG9uZW50LFxuICAgIFRhYkNvbXBvbmVudCxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRW1wdHlDb21wb25lbnQsXG4gICAgUHJvcGVydHlWaWV3aW5nSXRlbUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnR5LW1hbmFnZS12aWV3aW5ncy1pbmRleC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9wZXJ0eS1tYW5hZ2Utdmlld2luZ3MtaW5kZXguY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eU1hbmFnZVZpZXdpbmdzSW5kZXhDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvcGVydHlTZXJ2aWNlID0gaW5qZWN0KFByb3BlcnR5U2VydmljZSk7XG4gIHNlbGVjdCA9IDA7XG4gIGxpbmtzID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdBbGwnLFxuICAgICAgaWNvbjogJ2Rhc2hib2FyZCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnQ29tcGxldGVkJyxcbiAgICAgIGljb246ICdjYXRlZ29yeScsXG4gICAgICBzdGF0dXM6ICdjb21wbGV0ZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0NhbmNlbGxlZCcsXG4gICAgICBpY29uOiAnY2F0ZWdvcnknLFxuICAgICAgc3RhdHVzOiAnY2FuY2VsbGVkJyxcbiAgICB9LFxuICBdO1xuICBmaWx0ZXJPcHRpb25zOiBhbnkgPSB7XG4gICAgdHlwZTogJycsXG4gICAgc3RhdHVzOiAnJyxcbiAgfTtcbiAgdmlld2luZ3M6IFByb3BlcnR5Vmlld2luZ1tdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHsgc3RhdHVzIH0pID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5saW5rcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSBzdGF0dXMpO1xuICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMuc3RhdHVzID0gKHN0YXR1cyBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJPcHRpb25zLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmluZFZpZXdpbmdzKCk7XG4gICAgfSk7XG4gIH1cbiAgZmluZFZpZXdpbmdzKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBzb3J0OiAndXBkYXRlZEF0IGRlc2MnLFxuICAgIH07XG4gICAgY29uc3QgZmlsdGVyU3RyaW5nID0gdGhpcy5jb252ZXJ0RmlsdGVyT3B0aW9ucyh0aGlzLmZpbHRlck9wdGlvbnMpO1xuICAgIGlmIChmaWx0ZXJTdHJpbmcpIHtcbiAgICAgIG9wdGlvbnNbJ2ZpbHRlciddID0gZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLnByb3BlcnR5U2VydmljZS5maW5kVmlld2luZ3NCeUFnZW50KG9wdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy52aWV3aW5ncyA9IHJlcy5kYXRhO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjb252ZXJ0RmlsdGVyT3B0aW9ucyhqc29uT2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGpzb25PYmopXG4gICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtrZXl9OiR7dmFsdWV9YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignLCcpO1xuICB9XG59XG4iLCI8cm9sYXRlY2gtdG9vbGJhciB0aXRsZT1cIlZpZXdpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPjwvZGl2PlxuPC9yb2xhdGVjaC10b29sYmFyPlxuPHJvbGF0ZWNoLXRhYnMgW3NlbGVjdF09XCJzZWxlY3RcIj5cbiAgQGZvciAoaXRlbSBvZiBsaW5rczsgdHJhY2sgaXRlbSkge1xuICAgIEBpZiAoaXRlbS5zdGF0dXMpIHtcbiAgICAgIDxyb2xhdGVjaC10YWIgW2xhYmVsXT1cIml0ZW0ubmFtZVwiIHJvdXRlckxpbms9XCIuL1wiIFtxdWVyeVBhcmFtc109XCJ7IHN0YXR1czogaXRlbS5zdGF0dXMgfVwiPjwvcm9sYXRlY2gtdGFiPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHJvbGF0ZWNoLXRhYiBbbGFiZWxdPVwiaXRlbS5uYW1lXCIgcm91dGVyTGluaz1cIi4vXCI+PC9yb2xhdGVjaC10YWI+XG4gICAgfVxuICB9XG48L3JvbGF0ZWNoLXRhYnM+XG48ZGl2PlxuICBAaWYgKHZpZXdpbmdzKSB7XG4gICAgQGZvciAoaXRlbSBvZiB2aWV3aW5nczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8cm9sYXRlY2gtcHJvcGVydHktdmlld2luZy1pdGVtIFtyb3V0ZXJMaW5rXT1cIlsnLi8nLCBpdGVtLmlkXVwiIFt2aWV3aW5nXT1cIml0ZW1cIj48L3JvbGF0ZWNoLXByb3BlcnR5LXZpZXdpbmctaXRlbT5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDxyb2xhdGVjaC1lbXB0eT48L3JvbGF0ZWNoLWVtcHR5PlxuICB9XG48L2Rpdj5cbiJdfQ=="],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { MatSnackBar } from '@angular/material/snack-bar';
10
10
  import { MatTableModule } from '@angular/material/table';
11
11
  import * as i1$1 from '@angular/router';
12
12
  import { RouterLink, RouterModule, Router, ActivatedRoute, RouterLinkActive, RouterOutlet } from '@angular/router';
13
- import { ThumbnailComponent, ImagePlaceholderComponent, ToolbarComponent, SpinnerComponent, ImagePreviewDialogComponent, BaseComponent, AcceptDialogComponent, RejectDialogComponent, RichLabelComponent, AngularComponentsModule, ConfirmationDialogComponent, TabsComponent, TabComponent, EmptyComponent, ContainerComponent, ListComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';
13
+ import { ThumbnailComponent, ImagePlaceholderComponent, ToolbarComponent, SpinnerComponent, ImagePreviewDialogComponent, BaseComponent, AcceptDialogComponent, RejectDialogComponent, RichLabelComponent, AngularComponentsModule, ConfirmationDialogComponent, TabsComponent, TabComponent, EmptyComponent, ContainerComponent, ListComponent, MediaListComponent, MediaListItemComponent, VideoUpload } from '@rolatech/angular-components';
14
14
  import { PropertyService, FeatureService } from '@rolatech/angular-services';
15
15
  import * as i1 from '@angular/common';
16
16
  import { CommonModule, NgClass, isPlatformBrowser, ViewportScroller, KeyValuePipe, Location } from '@angular/common';
@@ -30,7 +30,7 @@ import * as i5 from '@angular/material/select';
30
30
  import { MatSelectModule } from '@angular/material/select';
31
31
  import * as i1$5 from '@angular/material/chips';
32
32
  import { MatChipsModule } from '@angular/material/chips';
33
- import { startWith, map, defer, forkJoin } from 'rxjs';
33
+ import { startWith, map, defer, forkJoin, from, concatMap, take, Observable } from 'rxjs';
34
34
  import { ENTER, COMMA } from '@angular/cdk/keycodes';
35
35
  import * as i4$2 from '@angular/material/autocomplete';
36
36
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
@@ -2365,8 +2365,14 @@ class PropertyManageIndexComponent {
2365
2365
  },
2366
2366
  });
2367
2367
  }
2368
+ export() {
2369
+ this.propertyService.export().subscribe({
2370
+ next: (res) => {
2371
+ },
2372
+ });
2373
+ }
2368
2374
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2369
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageIndexComponent, isStandalone: true, selector: "rolatech-property-manage-index", host: { properties: { "class.rolatech-property-manage-index": "this.hasClass" } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], ngImport: i0, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.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: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3$2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: PropertyManageItemComponent, selector: "rolatech-property-manage-item", inputs: ["property", "thumbnail", "list"] }, { kind: "component", type: PropertyManageFilterComponent, selector: "rolatech-property-manage-filter" }], encapsulation: i0.ViewEncapsulation.None });
2375
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageIndexComponent, isStandalone: true, selector: "rolatech-property-manage-index", host: { properties: { "class.rolatech-property-manage-index": "this.hasClass" } }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], ngImport: i0, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n <button mat-flat-button (click)=\"export()\">\n <mat-icon>file_export</mat-icon>\n <span i18n>Export</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.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: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i3$2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: PropertyManageItemComponent, selector: "rolatech-property-manage-item", inputs: ["property", "thumbnail", "list"] }, { kind: "component", type: PropertyManageFilterComponent, selector: "rolatech-property-manage-filter" }], encapsulation: i0.ViewEncapsulation.None });
2370
2376
  }
2371
2377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageIndexComponent, decorators: [{
2372
2378
  type: Component,
@@ -2381,7 +2387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
2381
2387
  SpinnerComponent,
2382
2388
  PropertyManageItemComponent,
2383
2389
  PropertyManageFilterComponent,
2384
- ], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"] }]
2390
+ ], encapsulation: ViewEncapsulation.None, template: "<rolatech-toolbar title=\"Properties\">\n <div class=\"flex items-center gap-2\">\n <button mat-flat-button routerLink=\"./create\">\n <mat-icon>add</mat-icon>\n <span i18n>Add property</span>\n </button>\n <button mat-flat-button (click)=\"export()\">\n <mat-icon>file_export</mat-icon>\n <span i18n>Export</span>\n </button>\n </div>\n</rolatech-toolbar>\n@if (isLoading) {\n <div class=\"flex justify-center items-center\">\n <rolatech-spinner></rolatech-spinner>\n </div>\n} @else {\n <div class=\"bg-[--rt-rasised-background] h-full\">\n <rolatech-property-manage-filter></rolatech-property-manage-filter>\n <div class=\"flex flex-wrap p-3 gap-3\">\n @for (item of properties; track $index) {\n <rolatech-property-manage-item\n [property]=\"item\"\n routerLink=\"./{{ item.id }}/manage/info\"\n ></rolatech-property-manage-item>\n }\n </div>\n </div>\n}\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"pageEvent = findProperties($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: ["mat-form-field{width:100%}table{width:100%}td.mat-column-actions{text-align:right;max-width:64px;font-size:.8rem;padding:0 8px}.mat-mdc-header-cell.actions{text-align:right;max-width:64px;width:64px}.mat-mdc-cell:nth-last-child(2),.mat-mdc-header-cell:nth-last-child(2),.mat-mdc-footer-cell:nth-last-child(2){text-align:right;max-width:180px;width:180px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{text-align:right;padding-right:8px!important}rolatech-property-manage-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media (min-width: 600px){rolatech-property-manage-index{--rt-property-view-items-per-row: 2}}@media (min-width: 768px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1280px){rolatech-property-manage-index{--rt-property-view-items-per-row: 3}}@media (min-width: 1536px){rolatech-property-manage-index{--rt-property-view-items-per-row: 4}}@media (min-width: 1920px){rolatech-property-manage-index{--rt-property-view-items-per-row: 5}}\n"] }]
2385
2391
  }], propDecorators: { hasClass: [{
2386
2392
  type: HostBinding,
2387
2393
  args: ['class.rolatech-property-manage-index']
@@ -3138,7 +3144,7 @@ class PropertyManageLocationComponent extends BaseComponent {
3138
3144
  location = model({
3139
3145
  flatNumber: '',
3140
3146
  streetNumber: '',
3141
- buildingName: '',
3147
+ name: '',
3142
3148
  street: '',
3143
3149
  town: '',
3144
3150
  postCode: '',
@@ -3267,7 +3273,7 @@ class PropertyManageLocationComponent extends BaseComponent {
3267
3273
  searchSchools(lat, lng, radius = 2000) {
3268
3274
  }
3269
3275
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageLocationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3270
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageLocationComponent, isStandalone: true, selector: "rolatech-property-manage-location", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { location: "locationChange" }, viewQueries: [{ propertyName: "autocompleteInput", first: true, predicate: ["autocompleteInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().buildingName\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"location().street\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Town </mat-label>\n <input matInput [(ngModel)]=\"location().town\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Postcode </mat-label>\n <input matInput [(ngModel)]=\"location().postCode\" required />\n </mat-form-field>\n </div>\n </div>\n <div class=\"flex justify-end items-center p-3 gap-3\">\n <button mat-flat-button i18n (click)=\"save()\">Save</button>\n </div>\n</rolatech-property-manage-content>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: TextFieldModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.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: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: [
3276
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageLocationComponent, isStandalone: true, selector: "rolatech-property-manage-location", inputs: { location: { classPropertyName: "location", publicName: "location", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { location: "locationChange" }, viewQueries: [{ propertyName: "autocompleteInput", first: true, predicate: ["autocompleteInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"location().street\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Town </mat-label>\n <input matInput [(ngModel)]=\"location().town\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Postcode </mat-label>\n <input matInput [(ngModel)]=\"location().postCode\" required />\n </mat-form-field>\n </div>\n </div>\n <div class=\"flex justify-end items-center p-3 gap-3\">\n <button mat-flat-button i18n (click)=\"save()\">Save</button>\n </div>\n</rolatech-property-manage-content>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.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: TextFieldModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i4$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i4$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.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: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: [
3271
3277
  trigger('contentAnimation', [
3272
3278
  state('hidden', style({
3273
3279
  height: '0',
@@ -3307,7 +3313,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
3307
3313
  })),
3308
3314
  transition('hidden <=> visible', animate('300ms ease-in-out')),
3309
3315
  ]),
3310
- ], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().buildingName\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"location().street\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Town </mat-label>\n <input matInput [(ngModel)]=\"location().town\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Postcode </mat-label>\n <input matInput [(ngModel)]=\"location().postCode\" required />\n </mat-form-field>\n </div>\n </div>\n <div class=\"flex justify-end items-center p-3 gap-3\">\n <button mat-flat-button i18n (click)=\"save()\">Save</button>\n </div>\n</rolatech-property-manage-content>\n", styles: ["mat-form-field{width:100%}\n"] }]
3316
+ ], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Location\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <mat-form-field position=\"left\">\n <input\n type=\"text\"\n placeholder=\"Search for a location\"\n #searchInput\n (input)=\"onInputChange($event)\"\n matInput\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n class=\"single-autocomplete\"\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onOptionSelected($event)\"\n [displayWith]=\"displayFn\"\n >\n @for (prediction of predictions; track $index) {\n <mat-option [value]=\"prediction\">\n {{ prediction.description }}\n </mat-option>\n }\n </mat-autocomplete>\n </mat-form-field>\n <div class=\"border px-3 rounded-md\">\n <div class=\"flex justify-between items-center py-3 cursor-pointer select-none\" i18n (click)=\"expand = !expand\">\n <span> Enter the address manually </span>\n <mat-icon>{{ expand ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</mat-icon>\n </div>\n <div [@contentAnimation]=\"expand\" [class.hidden]=\"!expand\">\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Flat number </mat-label>\n <input matInput [(ngModel)]=\"location().flatNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street number </mat-label>\n <input matInput [(ngModel)]=\"location().streetNumber\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Building name </mat-label>\n <input matInput [(ngModel)]=\"location().name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"location().street\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Town </mat-label>\n <input matInput [(ngModel)]=\"location().town\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Postcode </mat-label>\n <input matInput [(ngModel)]=\"location().postCode\" required />\n </mat-form-field>\n </div>\n </div>\n <div class=\"flex justify-end items-center p-3 gap-3\">\n <button mat-flat-button i18n (click)=\"save()\">Save</button>\n </div>\n</rolatech-property-manage-content>\n", styles: ["mat-form-field{width:100%}\n"] }]
3311
3317
  }], propDecorators: { autocompleteInput: [{
3312
3318
  type: ViewChild,
3313
3319
  args: ['autocompleteInput', { static: false }]
@@ -3344,6 +3350,7 @@ class PropertyManageVideoTourComponent extends BaseComponent {
3344
3350
  safeURL = this.sanitizer.bypassSecurityTrustResourceUrl('');
3345
3351
  thumbnailUrl;
3346
3352
  type = PropertyVideoTourType;
3353
+ chunkSize = 5 * 1024 * 1024; // 切片大小
3347
3354
  ngOnInit() {
3348
3355
  this.id = this.route.parent?.snapshot.paramMap.get('id');
3349
3356
  this.getVideoTour();
@@ -3419,12 +3426,108 @@ class PropertyManageVideoTourComponent extends BaseComponent {
3419
3426
  },
3420
3427
  });
3421
3428
  }
3429
+ onUploadToCOS(event) {
3430
+ const file = event.data.target.files[0];
3431
+ if (!file) {
3432
+ return;
3433
+ }
3434
+ const item = {
3435
+ url: URL.createObjectURL(file),
3436
+ };
3437
+ const reader = new FileReader();
3438
+ if (reader.readyState === FileReader.EMPTY) {
3439
+ reader.onload = async (e) => {
3440
+ const fileBuffer = e.target.result;
3441
+ crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {
3442
+ const hashArray = Array.from(new Uint8Array(res));
3443
+ const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');
3444
+ const data = { hash: hashHex, filename: file.name, fileType: file.type };
3445
+ this.propertyService.uploadVideoTourInit(this.id, data).subscribe({
3446
+ next: (res) => {
3447
+ this.uploadPart(null, res.data.uploadId, file);
3448
+ },
3449
+ error: (e) => { },
3450
+ });
3451
+ });
3452
+ };
3453
+ reader.onerror = (error) => { };
3454
+ reader.readAsArrayBuffer(file);
3455
+ }
3456
+ }
3457
+ uploadPart(lecture, uploadId, file) {
3458
+ let uploadedCount = 0;
3459
+ const fileChunkList = this.createFileChunk(file);
3460
+ const numberOfChunks = fileChunkList.length;
3461
+ from(fileChunkList)
3462
+ .pipe(concatMap((val, index) => this.uploadFile(lecture, val.file, index, uploadId)), take(numberOfChunks))
3463
+ .subscribe((res) => {
3464
+ uploadedCount++;
3465
+ const p = ((uploadedCount / numberOfChunks) * 100).toFixed(0);
3466
+ lecture.item.progress = parseFloat(p);
3467
+ if (uploadedCount === numberOfChunks) {
3468
+ this.completePartUpload(lecture, { uploadId });
3469
+ }
3470
+ });
3471
+ }
3472
+ completePartUpload(lecture, data) {
3473
+ data.duration = lecture.item.duration;
3474
+ this.propertyService.completePartUpload(lecture.id, data).subscribe({
3475
+ next: (res) => {
3476
+ lecture.isUploading = false;
3477
+ lecture.item.id = res.data.id;
3478
+ },
3479
+ error: (e) => {
3480
+ this.snackBarService.open('Upload failed: ' + e.message);
3481
+ },
3482
+ });
3483
+ }
3484
+ uploadFile(lecture, file, index, uploadId) {
3485
+ const reader = new FileReader();
3486
+ return new Observable((observer) => {
3487
+ reader.readAsArrayBuffer(file);
3488
+ reader.onload = (e) => {
3489
+ const fileBuffer = e.target.result;
3490
+ crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {
3491
+ const hashArray = Array.from(new Uint8Array(res));
3492
+ const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');
3493
+ const formData = new FormData();
3494
+ formData.append('file', file);
3495
+ formData.append('uploadId', uploadId);
3496
+ formData.append('number', index + 1);
3497
+ formData.append('hash', hashHex);
3498
+ this.propertyService.uploadVideoTourPartsToProperty(lecture.id, formData).subscribe({
3499
+ next: (res) => {
3500
+ observer.next(res);
3501
+ observer.complete();
3502
+ },
3503
+ error: (e) => {
3504
+ this.snackBarService.open('Upload failed: ' + e.message);
3505
+ },
3506
+ });
3507
+ });
3508
+ };
3509
+ reader.onerror = (error) => {
3510
+ this.snackBarService.open('Upload failed: ' + error);
3511
+ };
3512
+ });
3513
+ }
3514
+ createFileChunk(file, size = this.chunkSize) {
3515
+ const fileChunkList = [];
3516
+ let count = 0;
3517
+ while (count < file.size) {
3518
+ fileChunkList.push({
3519
+ file: file.slice(count, count + size),
3520
+ });
3521
+ count += size;
3522
+ }
3523
+ return fileChunkList;
3524
+ }
3422
3525
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageVideoTourComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3423
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageVideoTourComponent, isStandalone: true, selector: "rolatech-property-manage-video-tour", usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.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"] }] });
3526
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: PropertyManageVideoTourComponent, isStandalone: true, selector: "rolatech-property-manage-video-tour", usesInheritance: true, ngImport: i0, template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n <rolatech-video-upload (upload)=\"onUploadToCOS($event)\"></rolatech-video-upload>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n", styles: [""], dependencies: [{ kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: PropertyManageContentComponent, selector: "rolatech-property-manage-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$4.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: VideoUpload, selector: "rolatech-video-upload", inputs: ["item", "uploading", "editing", "progress", "editId", "hasUnsaved"], outputs: ["uploadingChange", "editingChange", "mediaEdit", "thumbnailUpload", "upload", "deleteMedia", "editIdChange"] }] });
3424
3527
  }
3425
3528
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: PropertyManageVideoTourComponent, decorators: [{
3426
3529
  type: Component,
3427
- args: [{ selector: 'rolatech-property-manage-video-tour', imports: [ToolbarComponent, PropertyManageContentComponent, MatButtonModule], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n" }]
3530
+ args: [{ selector: 'rolatech-property-manage-video-tour', imports: [ToolbarComponent, PropertyManageContentComponent, MatButtonModule, VideoUpload], template: "<rolatech-property-manage-content>\n <rolatech-toolbar title=\"Video tour\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <!-- <rolatech-property-video-tour-item [property]=\"\"></rolatech-property-video-tour-item> -->\n <div class=\"flex flex-col\">\n <div>\n <div>Youtube</div>\n <div></div>\n </div>\n <div>\n <div>COS</div>\n <div></div>\n </div>\n </div>\n <rolatech-video-upload (upload)=\"onUploadToCOS($event)\"></rolatech-video-upload>\n @for (item of propertyVideoTour; track $index) {\n <div>{{ type[item.type] === 'Youtube' }}</div>\n @if (type[item.type] === 'Youtube') {\n <div class=\"relative w-full aspect-video\">\n @if (!iframeLoaded) {\n <div class=\"absolute inset-0 flex items-center justify-center bg-black/10\">\n <span>Loading...</span>\n </div>\n }\n <iframe [src]=\"safeURL\" frameborder=\"0\" allowfullscreen class=\"w-full h-full\" (load)=\"iframeLoaded = true\"></iframe>\n </div>\n <button mat-flat-button (click)=\"updateVideoTour()\" class=\"mt-3\">Update video tour</button>\n }\n @if (type[item.type] === 'COS') {}\n }\n <!-- @if (propertyVideoTour) {\n\n } @else {\n <button mat-flat-button (click)=\"addVideoTour()\">Add video tour</button>\n } -->\n</rolatech-property-manage-content>\n" }]
3428
3531
  }] });
3429
3532
 
3430
3533
  const propertyManageRoutes = [
@@ -3578,7 +3681,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
3578
3681
  const propertyManageViewingsRoutes = [
3579
3682
  {
3580
3683
  path: '',
3581
- loadComponent: () => import('./rolatech-angular-property-property-manage-viewings-index.component-BpzCLRiN.mjs').then((x) => x.PropertyManageViewingsIndexComponent),
3684
+ loadComponent: () => import('./rolatech-angular-property-property-manage-viewings-index.component-CPGJsz-b.mjs').then((x) => x.PropertyManageViewingsIndexComponent),
3582
3685
  },
3583
3686
  {
3584
3687
  path: ':id',
@@ -4192,4 +4295,4 @@ const tenantManageRoutes = [
4192
4295
  */
4193
4296
 
4194
4297
  export { AdverseCreditStatus as A, EmploymentStatus as E, PropertyViewingItemComponent as P, ResidencyStatus as R, ViewingTime as V, propertyManageOffersRoutes as a, propertyRoutes as b, propertyManageRoutes as c, propertyManageViewingsRoutes as d, PropertyActionsComponent as e, featureManageRoutes as f, PropertyItemComponent as g, PropertyPricingComponent as h, PropertyPriceType as i, PropertyVideoTourType as j, PropertyStatus as k, lettingManageRoutes as l, PropertyType as m, PropertyInventoryStatus as n, PropertyScope as o, propertyReviewRoutes as p, PropertyViewingStatus as q, PropertyViewerCategory as r, PropertyOfferTimelineStatus as s, tenantManageRoutes as t, PropertyOfferType as u, PropertyOfferStatus as v, PropertyApplicantType as w };
4195
- //# sourceMappingURL=rolatech-angular-property-rolatech-angular-property-DSFZRtNt.mjs.map
4298
+ //# sourceMappingURL=rolatech-angular-property-rolatech-angular-property-BUtExPY1.mjs.map