tnx-shared 5.2.22 → 5.2.23

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.
Files changed (99) hide show
  1. package/classes/public-function.d.ts +4 -70
  2. package/classes/public-function.d.ts.map +1 -1
  3. package/esm2020/classes/public-function.mjs +1 -1
  4. package/esm2020/components/add-news/add-news.component.mjs +3 -3
  5. package/esm2020/components/autocomplete-datasource/autocomplete-datasource.component.mjs +1 -1
  6. package/esm2020/components/autocomplete-picker/autocomplete-picker.component.mjs +1 -1
  7. package/esm2020/components/avatar-uploader/avatar-uploader.component.mjs +1 -1
  8. package/esm2020/components/chat/chat-box/chat-box.component.mjs +1 -1
  9. package/esm2020/components/chat/chat-send-message-box/chat-send-message-box.component.mjs +1 -1
  10. package/esm2020/components/check-box-list/check-box-list.component.mjs +1 -1
  11. package/esm2020/components/cocautochuc/cocautochuc-picker/cocautochuc-picker.component.mjs +1 -1
  12. package/esm2020/components/common-app-component/app-topbar-v1/app-topbar-v1.component.mjs +1 -1
  13. package/esm2020/components/common-app-component/app-topbar-v2/app-topbar-v2.component.mjs +1 -1
  14. package/esm2020/components/common-app-component/app.menu.component.mjs +2 -2
  15. package/esm2020/components/common-app-component/app.topbar.component.mjs +1 -1
  16. package/esm2020/components/common-app-component/common-app-component.mjs +1 -1
  17. package/esm2020/components/common-app-component/default-setting-form/default-data-settings.component.mjs +1 -1
  18. package/esm2020/components/crud/advance-search/advance-search.component.mjs +1 -1
  19. package/esm2020/components/crud/crud-form/crud-form.component.mjs +1 -1
  20. package/esm2020/components/crud/crud-list/crud-list.component.mjs +1 -1
  21. package/esm2020/components/crud/table-detail-form/table-detail-form.component.mjs +1 -1
  22. package/esm2020/components/crud/tree-table/tree-table.component.mjs +1 -1
  23. package/esm2020/components/datetime-picker/datetime-picker.component.mjs +1 -1
  24. package/esm2020/components/dropdown/dropdown-setting-form/dropdown-setting-form.component.mjs +1 -1
  25. package/esm2020/components/dropdown/dropdown.component.mjs +4 -4
  26. package/esm2020/components/dropdown/quick-add-form/quick-add-form.component.mjs +1 -1
  27. package/esm2020/components/entity-permission/entity-permission.component.mjs +1 -1
  28. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.mjs +1 -1
  29. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.mjs +1 -1
  30. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-tree-data/entity-picker-tree-data.component.mjs +1 -1
  31. package/esm2020/components/entity-picker/entity-picker-dialog/components/entity-picker-tree-selected/entity-picker-tree-selected.component.mjs +1 -1
  32. package/esm2020/components/entity-picker/entity-picker-dialog/entity-picker-dialog.component.mjs +1 -1
  33. package/esm2020/components/entity-picker/entity-picker.component.mjs +1 -1
  34. package/esm2020/components/file-explorer/file-explorer.component.mjs +1 -1
  35. package/esm2020/components/file-explorer/file-form/file-form.component.mjs +1 -1
  36. package/esm2020/components/file-explorer/file-ky-so-sim/file-ky-so-sim.component.mjs +1 -1
  37. package/esm2020/components/file-explorer/file-manager/file-manager.component.mjs +1 -1
  38. package/esm2020/components/file-explorer/file-picker-dialog/file-picker-dialog.component.mjs +1 -1
  39. package/esm2020/components/file-explorer/file-tai-lieu/file-tai-lieu.component.mjs +1 -1
  40. package/esm2020/components/file-explorer/file-version-list/file-version-list.component.mjs +1 -1
  41. package/esm2020/components/file-explorer/file-viewer/file-viewer.component.mjs +1 -1
  42. package/esm2020/components/file-explorer/folder-form/folder-form.component.mjs +1 -1
  43. package/esm2020/components/file-explorer/ky-so-sim-danh-sach-chu-ky/ky-so-sim-danh-sach-chu-ky.component.mjs +1 -1
  44. package/esm2020/components/file-explorer/signature-detail/signature-detail.component.mjs +1 -1
  45. package/esm2020/components/file-upload/file-upload.component.mjs +1 -1
  46. package/esm2020/components/image-uploader/image-uploader.component.mjs +1 -1
  47. package/esm2020/components/paging-next-back-only/paging-next-back-only.component.mjs +1 -1
  48. package/esm2020/components/permission-utils/permission-utils.component.mjs +1 -1
  49. package/esm2020/components/qr-code-generator/qr-code-generator.component.mjs +1 -1
  50. package/esm2020/components/query-builders/query-builder/query-builder.component.mjs +1 -1
  51. package/esm2020/components/query-builders/query-builder-group/query-builder-group.component.mjs +2 -2
  52. package/esm2020/components/query-builders/query-builder-rule/query-builder-rule.component.mjs +3 -3
  53. package/esm2020/components/radio-button-list/radio-button-list.component.mjs +1 -1
  54. package/esm2020/components/report-queue/report-queue.component.mjs +1 -1
  55. package/esm2020/components/service-file-upload/service-file-upload.component.mjs +1 -1
  56. package/esm2020/components/settings/settings-row/settings-row.component.mjs +1 -1
  57. package/esm2020/components/settings/settings-workflow/settings-workflow.component.mjs +1 -1
  58. package/esm2020/components/settings/settings.component.mjs +1 -1
  59. package/esm2020/components/share-link-by-permission/share-link-by-permission.component.mjs +1 -1
  60. package/esm2020/components/statemachines/state/state.component.mjs +1 -1
  61. package/esm2020/components/statemachines/state-metadata/state-metadata.component.mjs +1 -1
  62. package/esm2020/components/statemachines/statemachines-connection-metadata/statemachines-connection-metadata.component.mjs +1 -1
  63. package/esm2020/components/statemachines/statemachines-designer/statemachines-designer.component.mjs +1 -1
  64. package/esm2020/components/tn-app-help/helper-current-page/helper-current-page.component.mjs +1 -1
  65. package/esm2020/components/tn-app-help/tn-app-help.component.mjs +1 -1
  66. package/esm2020/components/tn-app-notification/tn-app-notification.component.mjs +1 -1
  67. package/esm2020/components/tn-checkbox/tn-checkbox.component.mjs +1 -1
  68. package/esm2020/components/tn-color-picker/tn-color-picker.component.mjs +1 -1
  69. package/esm2020/components/tn-dialog/tn-dialog.component.mjs +1 -1
  70. package/esm2020/components/tn-tabview/tn-tabview.component.mjs +1 -1
  71. package/esm2020/components/tn-template/tn-template.component.mjs +1 -1
  72. package/esm2020/components/tn-tinymce/tn-tinymce.component.mjs +1 -1
  73. package/esm2020/components/tn-tree/tn-tree.component.mjs +1 -1
  74. package/esm2020/components/user-picker/user-picker-box/user-picker-box.component.mjs +1 -1
  75. package/esm2020/components/user-picker/user-picker.component.mjs +1 -1
  76. package/esm2020/components/usmart/chuoi-phan-tiet/chuoi-phan-tiet.component.mjs +1 -1
  77. package/esm2020/components/vanban-picker/vanban-den-picker/vanban-den-picker.component.mjs +2 -2
  78. package/esm2020/components/vanban-picker/vanban-di-picker/vanban-di-picker.component.mjs +2 -2
  79. package/esm2020/components/vanban-picker/vanban-picker-dialog/vanban-picker-dialog.component.mjs +1 -1
  80. package/esm2020/components/vanban-picker/vanban-picker.component.mjs +1 -1
  81. package/esm2020/components/workflow/cho-y-kien-form/cho-y-kien-form.component.mjs +1 -1
  82. package/esm2020/components/workflow/permission-sharing/permission-sharing.component.mjs +1 -1
  83. package/esm2020/components/workflow/process-workflow-form/process-workflow-form.component.mjs +1 -1
  84. package/esm2020/components/workflow/start-workflow/start-workflow.component.mjs +1 -1
  85. package/esm2020/components/workflow/workflow-history-new/workflow-history-new.component.mjs +1 -1
  86. package/esm2020/components/workflow/workflow-permission-form/workflow-permission-form.component.mjs +1 -1
  87. package/esm2020/components/workflow/workflow-picker/workflow-picker.component.mjs +1 -1
  88. package/esm2020/components/workflow/workflow-setting-new/workflow-setting-new.component.mjs +1 -1
  89. package/esm2020/congviec/congviec/congviec-dinhkem/congviec-dinhkem.component.mjs +1 -1
  90. package/esm2020/congviec/congviec/congviec-form/congviec-form.component.mjs +1 -1
  91. package/esm2020/congviec/congviec/congviec.component.mjs +2 -2
  92. package/esm2020/congviec/dm-linhvuc-congviec/dm-linhvuc-congviec-form/dm-linhvuc-congviec-form.component.mjs +1 -1
  93. package/esm2020/congviec/dm-loai-congviec/dm-loai-congviec-form/dm-loai-congviec-form.component.mjs +1 -1
  94. package/esm2020/congviec/dm-priority/dm-priority-form/dm-priority-form.component.mjs +1 -1
  95. package/fesm2015/tnx-shared.mjs +101 -101
  96. package/fesm2015/tnx-shared.mjs.map +1 -1
  97. package/fesm2020/tnx-shared.mjs +101 -101
  98. package/fesm2020/tnx-shared.mjs.map +1 -1
  99. package/package.json +3 -3
@@ -1,78 +1,12 @@
1
- import { DatePipe, DecimalPipe } from '@angular/common';
2
1
  import { HttpClient } from '@angular/common/http';
3
- import { FormsModule } from '@angular/forms';
4
- import { BrowserModule } from '@angular/platform-browser';
5
- import { TranslateService } from '@ngx-translate/core';
6
- import { OAuthModule } from 'angular-oauth2-oidc';
7
- import { ConfirmationService, MessageService } from 'tn-custom-primeng/api';
8
- import { AccessDeniedComponent } from '../components/access-denied-component/access-denied.component';
9
- import { CommonDashboardComponent } from '../components/common-dashboard/common-dashboard.component';
10
- import { EntityPermissionService } from '../components/entity-permission/services.cs/entity-permission.service';
11
- import { NotFoundComponent } from '../components/not-found/not-found.component';
12
- import { SplashComponentComponent } from '../components/splash-component/splash-component.component';
13
- import { UniversalLinkProcessorComponent } from '../components/universal-link-processor/universal-link-processor.component';
14
- import { EntityWorkflowHistoryService } from '../components/workflow/services/entity-workflow-history.service';
15
- import { EntityWorkflowSettingService } from '../components/workflow/services/entity-workflow-setting.service';
16
- import { LogInterceptor } from '../intercepters/log.interceptor';
17
- import { PermissionUtilsInterceptor } from '../intercepters/permission-utils.interceptor';
18
- import { SendAccessTokenInterceptor } from '../intercepters/send-access-token.interceptor';
19
- import { TraceInterceptor } from '../intercepters/trace.interceptor';
20
- import { HtmlFormatPipe } from '../pipes/html-format.pipe';
21
- import { MasterDataPipe } from '../pipes/masterData.pipe';
22
- import { OrganizationFormatPipe } from '../pipes/organization-format.pipe';
23
- import { OrganizationsFormatPipe } from '../pipes/organizations-format.pipe';
24
- import { SafeHtmlPipe } from '../pipes/safe-html.pipe';
25
- import { UserFormatPipe } from '../pipes/user-format.pipe';
26
- import { UsersFormatPipe } from '../pipes/users-format.pipe';
27
- import { NotifierService } from '../services/notifier.service';
28
2
  import { MultiTranslateHttpLoader } from './multi-translate-http-loader';
29
3
  export declare class PublicFunction {
30
4
  static initRoute(routes: any[]): any[];
31
- static commonRoutes(): ({
32
- path: string;
33
- component: typeof SplashComponentComponent;
34
- } | {
35
- path: string;
36
- component: typeof CommonDashboardComponent;
37
- } | {
38
- path: string;
39
- component: typeof AccessDeniedComponent;
40
- } | {
41
- path: string;
42
- component: typeof UniversalLinkProcessorComponent;
43
- })[];
44
- static defaultRoutes(): {
45
- path: string;
46
- component: typeof NotFoundComponent;
47
- }[];
5
+ static commonRoutes(): any[];
6
+ static defaultRoutes(): any[];
48
7
  static createTranslateLoader(http: HttpClient): MultiTranslateHttpLoader;
49
8
  static registerLocaleData(locale?: any, language?: any): void;
50
- static importRootModule(environment: any): (typeof FormsModule | typeof BrowserModule | import("@angular/core").ModuleWithProviders<OAuthModule>)[];
51
- static useRootProvider(enviromment: any): (typeof DecimalPipe | typeof DatePipe | typeof ConfirmationService | typeof MessageService | typeof TranslateService | typeof NotifierService | typeof EntityPermissionService | typeof EntityWorkflowHistoryService | typeof EntityWorkflowSettingService | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | typeof SafeHtmlPipe | typeof UserFormatPipe | typeof UsersFormatPipe | {
52
- provide: import("@angular/core").InjectionToken<string>;
53
- useValue: string;
54
- useClass?: undefined;
55
- multi?: undefined;
56
- } | {
57
- provide: import("@angular/core").InjectionToken<import("@angular/common/http").HttpInterceptor[]>;
58
- useClass: typeof SendAccessTokenInterceptor;
59
- multi: boolean;
60
- useValue?: undefined;
61
- } | {
62
- provide: import("@angular/core").InjectionToken<import("@angular/common/http").HttpInterceptor[]>;
63
- useClass: typeof LogInterceptor;
64
- multi: boolean;
65
- useValue?: undefined;
66
- } | {
67
- provide: import("@angular/core").InjectionToken<import("@angular/common/http").HttpInterceptor[]>;
68
- useClass: typeof PermissionUtilsInterceptor;
69
- multi: boolean;
70
- useValue?: undefined;
71
- } | {
72
- provide: import("@angular/core").InjectionToken<import("@angular/common/http").HttpInterceptor[]>;
73
- useClass: typeof TraceInterceptor;
74
- multi: boolean;
75
- useValue?: undefined;
76
- })[];
9
+ static importRootModule(environment: any): any[];
10
+ static useRootProvider(enviromment: any): any[];
77
11
  }
78
12
  //# sourceMappingURL=public-function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-function.d.ts","sourceRoot":"","sources":["../../../projects/shared/src/lib/classes/public-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAuC,MAAM,sBAAsB,CAAC;AAGvF,OAAO,EAAE,WAAW,EAAuB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAoC,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uEAAuE,CAAC;AAChH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;AACrG,OAAO,EAAE,+BAA+B,EAAE,MAAM,2EAA2E,CAAC;AAC5H,OAAO,EAAE,4BAA4B,EAAE,MAAM,iEAAiE,CAAC;AAC/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,iEAAiE,CAAC;AAC/G,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,qBAAa,cAAc;IAEvB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;IAQ9B,MAAM,CAAC,YAAY;;;;;;;;;;;;;IAqBnB,MAAM,CAAC,aAAa;;;;IAMpB,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU;IAS7C,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAA,EAAE,QAAQ,CAAC,KAAA;IAW5C,MAAM,CAAC,gBAAgB,CAAC,WAAW,KAAA;IAyBnC,MAAM,CAAC,eAAe,CAAC,WAAW,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CrC"}
1
+ {"version":3,"file":"public-function.d.ts","sourceRoot":"","sources":["../../../projects/shared/src/lib/classes/public-function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAuC,MAAM,sBAAsB,CAAC;AAiCvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,qBAAa,cAAc;IAEvB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAQtC,MAAM,CAAC,YAAY,IAAI,GAAG,EAAE;IAqB5B,MAAM,CAAC,aAAa,IAAI,GAAG,EAAE;IAM7B,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU;IAS7C,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAA,EAAE,QAAQ,CAAC,KAAA;IAW5C,MAAM,CAAC,gBAAgB,CAAC,WAAW,KAAA,GAAG,GAAG,EAAE;IAyB3C,MAAM,CAAC,eAAe,CAAC,WAAW,KAAA,GAAG,GAAG,EAAE;CA2C7C"}
@@ -147,4 +147,4 @@ export class PublicFunction {
147
147
  ];
148
148
  }
149
149
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY2xhc3Nlcy9wdWJsaWMtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkYsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQzVILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxvQkFBb0I7QUFDcEIsa0ZBQWtGO0FBQ2xGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3pFLE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYTtRQUMxQixPQUFPO1lBQ0gsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFO1lBQ2hDLEdBQUcsTUFBTTtZQUNULEdBQUcsY0FBYyxDQUFDLGFBQWEsRUFBRTtTQUNwQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZO1FBQ2YsT0FBTztZQUNIO2dCQUNJLElBQUksRUFBRSxFQUFFO2dCQUNSLFNBQVMsRUFBRSx3QkFBd0I7YUFDdEM7WUFDRDtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLHdCQUF3QjthQUN0QztZQUNEO2dCQUNJLElBQUksRUFBRSxlQUFlO2dCQUNyQixTQUFTLEVBQUUscUJBQXFCO2FBQ25DO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsU0FBUyxFQUFFLCtCQUErQjthQUM3QztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWE7UUFDaEIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7U0FDL0MsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBZ0I7UUFDekMsT0FBTyxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFDcEM7WUFDSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUMzQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1NBQ3JELENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTyxFQUFFLFFBQVM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE1BQU0sR0FBRyxRQUFRLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsUUFBUSxHQUFHLElBQUksQ0FBQztTQUNuQjtRQUVELGtCQUFrQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7UUFDL0IsT0FBTztZQUNILGFBQWE7WUFDYixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsZUFBZSxDQUFDLE9BQU8sQ0FBQztnQkFDcEIsTUFBTSxFQUFFO29CQUNKLE9BQU8sRUFBRSxlQUFlO29CQUN4QixVQUFVLEVBQUUsY0FBYyxDQUFDLHFCQUFxQjtvQkFDaEQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUNyQjthQUNKLENBQUM7WUFDRixhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLFdBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hCLGNBQWMsRUFBRTtvQkFDWixXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztvQkFDakQsZUFBZSxFQUFFLEtBQUs7aUJBQ3pCO2FBQ0osQ0FBQztZQUNGLGlCQUFpQjtTQUNwQixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVztRQUM5QixPQUFPO1lBQ0gsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7WUFDekM7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixLQUFLLEVBQUUsSUFBSTthQUNkO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRCxjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLFFBQVE7WUFDUixjQUFjO1lBQ2QsZUFBZTtZQUNmLGNBQWM7WUFDZCxZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2QixjQUFjO1lBQ2QsZUFBZTtZQUNmLFdBQVc7WUFDWCxnQkFBZ0I7WUFDaEIsNEJBQTRCO1lBQzVCLDRCQUE0QjtZQUM1Qix1QkFBdUI7U0FDMUIsQ0FBQztJQUNOLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlLCBEZWNpbWFsUGlwZSwgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENsaWVudE1vZHVsZSwgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCBsb2NhbGVWaSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy92aSc7XHJcbmltcG9ydCB7IExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IEltZ0ZhbGxiYWNrTW9kdWxlIH0gZnJvbSAnbmd4LWltZy1mYWxsYmFjayc7XHJcbmltcG9ydCB7IE5neE1hc2tNb2R1bGUgfSBmcm9tICduZ3gtbWFzayc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQWNjZXNzRGVuaWVkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY2Nlc3MtZGVuaWVkLWNvbXBvbmVudC9hY2Nlc3MtZGVuaWVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbkRhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29tbW9uLWRhc2hib2FyZC9jb21tb24tZGFzaGJvYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGVybWlzc2lvbi9zZXJ2aWNlcy5jcy9lbnRpdHktcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdC1mb3VuZC9ub3QtZm91bmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3BsYXNoQ29tcG9uZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zcGxhc2gtY29tcG9uZW50L3NwbGFzaC1jb21wb25lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVW5pdmVyc2FsTGlua1Byb2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdW5pdmVyc2FsLWxpbmstcHJvY2Vzc29yL3VuaXZlcnNhbC1saW5rLXByb2Nlc3Nvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnRpdHlXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy93b3JrZmxvdy9zZXJ2aWNlcy9lbnRpdHktd29ya2Zsb3ctaGlzdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5V29ya2Zsb3dTZXR0aW5nU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd29ya2Zsb3cvc2VydmljZXMvZW50aXR5LXdvcmtmbG93LXNldHRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0ZXJzL2xvZy5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25VdGlsc0ludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0ZXJzL3Blcm1pc3Npb24tdXRpbHMuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBTZW5kQWNjZXNzVG9rZW5JbnRlcmNlcHRvciB9IGZyb20gJy4uL2ludGVyY2VwdGVycy9zZW5kLWFjY2Vzcy10b2tlbi5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFRyYWNlSW50ZXJjZXB0b3IgfSBmcm9tICcuLi9pbnRlcmNlcHRlcnMvdHJhY2UuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBIdG1sRm9ybWF0UGlwZSB9IGZyb20gJy4uL3BpcGVzL2h0bWwtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBNYXN0ZXJEYXRhUGlwZSB9IGZyb20gJy4uL3BpcGVzL21hc3RlckRhdGEucGlwZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkZvcm1hdFBpcGUgfSBmcm9tICcuLi9waXBlcy9vcmdhbml6YXRpb24tZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zRm9ybWF0UGlwZSB9IGZyb20gJy4uL3BpcGVzL29yZ2FuaXphdGlvbnMtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuLi9waXBlcy9zYWZlLWh0bWwucGlwZSc7XHJcbmltcG9ydCB7IFVzZXJGb3JtYXRQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdXNlci1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFVzZXJzRm9ybWF0UGlwZSB9IGZyb20gJy4uL3BpcGVzL3VzZXJzLWZvcm1hdC5waXBlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcbi8vIFRPRE86IFVwZ3JhZGUgc2F1XHJcbi8vIGltcG9ydCB7IEJyb3dzZXJGYXZpY29ucywgQlJPV1NFUl9GQVZJQ09OU19DT05GSUcsIEZhdmljb25zIH0gZnJvbSAnLi9mYXZpY29uJztcclxuaW1wb3J0IHsgTXVsdGlUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnLi9tdWx0aS10cmFuc2xhdGUtaHR0cC1sb2FkZXInO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNGdW5jdGlvbiB7XHJcblxyXG4gICAgc3RhdGljIGluaXRSb3V0ZShyb3V0ZXM6IGFueVtdKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgLi4uUHVibGljRnVuY3Rpb24uY29tbW9uUm91dGVzKCksXHJcbiAgICAgICAgICAgIC4uLnJvdXRlcyxcclxuICAgICAgICAgICAgLi4uUHVibGljRnVuY3Rpb24uZGVmYXVsdFJvdXRlcygpLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNvbW1vblJvdXRlcygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogU3BsYXNoQ29tcG9uZW50Q29tcG9uZW50LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnZGFzaGJvYXJkJyxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ29tbW9uRGFzaGJvYXJkQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnYWNjZXNzLWRlbmllZCcsXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEFjY2Vzc0RlbmllZENvbXBvbmVudCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGF0aDogJ3VuaXZlcnNhbC1saW5rJyxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogVW5pdmVyc2FsTGlua1Byb2Nlc3NvckNvbXBvbmVudCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBkZWZhdWx0Um91dGVzKCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHsgcGF0aDogJyoqJywgY29tcG9uZW50OiBOb3RGb3VuZENvbXBvbmVudCB9LFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNyZWF0ZVRyYW5zbGF0ZUxvYWRlcihodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBNdWx0aVRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgeyBwcmVmaXg6ICdhc3NldHMvaTE4bi8nLCBzdWZmaXg6ICcuanNvbicgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJlZml4OiAnYXNzZXRzL2kxOG4vc2hhcmVkLycsIHN1ZmZpeDogJy5qc29uJyB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGU/LCBsYW5ndWFnZT8pIHtcclxuICAgICAgICBpZiAoIWxvY2FsZSkge1xyXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVWaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFsYW5ndWFnZSkge1xyXG4gICAgICAgICAgICBsYW5ndWFnZSA9ICd2aSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlLCBsYW5ndWFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGltcG9ydFJvb3RNb2R1bGUoZW52aXJvbm1lbnQpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgICAgICAgICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICAgICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KHtcclxuICAgICAgICAgICAgICAgIGxvYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcclxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBQdWJsaWNGdW5jdGlvbi5jcmVhdGVUcmFuc2xhdGVMb2FkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVwczogW0h0dHBDbGllbnRdLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIE5neE1hc2tNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgICAgICAgICBPQXV0aE1vZHVsZS5mb3JSb290KHtcclxuICAgICAgICAgICAgICAgIHJlc291cmNlU2VydmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dlZFVybHM6IFtlbnZpcm9ubWVudC5hcHBNZXRhZGF0YS5hcHBHYXRld2F5XSxcclxuICAgICAgICAgICAgICAgICAgICBzZW5kQWNjZXNzVG9rZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIEltZ0ZhbGxiYWNrTW9kdWxlLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHVzZVJvb3RQcm92aWRlcihlbnZpcm9tbWVudCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VWYWx1ZTogJ3ZpLVZOJyB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBTZW5kQWNjZXNzVG9rZW5JbnRlcmNlcHRvcixcclxuICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBMb2dJbnRlcmNlcHRvcixcclxuICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBQZXJtaXNzaW9uVXRpbHNJbnRlcmNlcHRvcixcclxuICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcclxuICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBUcmFjZUludGVyY2VwdG9yLFxyXG4gICAgICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgICAgICBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICBEYXRlUGlwZSxcclxuICAgICAgICAgICAgVXNlckZvcm1hdFBpcGUsXHJcbiAgICAgICAgICAgIFVzZXJzRm9ybWF0UGlwZSxcclxuICAgICAgICAgICAgSHRtbEZvcm1hdFBpcGUsXHJcbiAgICAgICAgICAgIFNhZmVIdG1sUGlwZSxcclxuICAgICAgICAgICAgT3JnYW5pemF0aW9uRm9ybWF0UGlwZSxcclxuICAgICAgICAgICAgT3JnYW5pemF0aW9uc0Zvcm1hdFBpcGUsXHJcbiAgICAgICAgICAgIE1hc3RlckRhdGFQaXBlLFxyXG4gICAgICAgICAgICBOb3RpZmllclNlcnZpY2UsXHJcbiAgICAgICAgICAgIERlY2ltYWxQaXBlLFxyXG4gICAgICAgICAgICBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICBFbnRpdHlXb3JrZmxvd1NldHRpbmdTZXJ2aWNlLFxyXG4gICAgICAgICAgICBFbnRpdHlXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlLFxyXG4gICAgICAgICAgICBFbnRpdHlQZXJtaXNzaW9uU2VydmljZSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY2xhc3Nlcy9wdWJsaWMtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkYsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQzVILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxvQkFBb0I7QUFDcEIsa0ZBQWtGO0FBQ2xGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3pFLE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYTtRQUMxQixPQUFPO1lBQ0gsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFO1lBQ2hDLEdBQUcsTUFBTTtZQUNULEdBQUcsY0FBYyxDQUFDLGFBQWEsRUFBRTtTQUNwQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZO1FBQ2YsT0FBTztZQUNIO2dCQUNJLElBQUksRUFBRSxFQUFFO2dCQUNSLFNBQVMsRUFBRSx3QkFBd0I7YUFDdEM7WUFDRDtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsU0FBUyxFQUFFLHdCQUF3QjthQUN0QztZQUNEO2dCQUNJLElBQUksRUFBRSxlQUFlO2dCQUNyQixTQUFTLEVBQUUscUJBQXFCO2FBQ25DO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsU0FBUyxFQUFFLCtCQUErQjthQUM3QztTQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWE7UUFDaEIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7U0FDL0MsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBZ0I7UUFDekMsT0FBTyxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFDcEM7WUFDSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUMzQyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1NBQ3JELENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTyxFQUFFLFFBQVM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE1BQU0sR0FBRyxRQUFRLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsUUFBUSxHQUFHLElBQUksQ0FBQztTQUNuQjtRQUVELGtCQUFrQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7UUFDL0IsT0FBTztZQUNILGFBQWE7WUFDYixXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsZUFBZSxDQUFDLE9BQU8sQ0FBQztnQkFDcEIsTUFBTSxFQUFFO29CQUNKLE9BQU8sRUFBRSxlQUFlO29CQUN4QixVQUFVLEVBQUUsY0FBYyxDQUFDLHFCQUFxQjtvQkFDaEQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUNyQjthQUNKLENBQUM7WUFDRixhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLFdBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hCLGNBQWMsRUFBRTtvQkFDWixXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztvQkFDakQsZUFBZSxFQUFFLEtBQUs7aUJBQ3pCO2FBQ0osQ0FBQztZQUNGLGlCQUFpQjtTQUNwQixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVztRQUM5QixPQUFPO1lBQ0gsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7WUFDekM7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxjQUFjO2dCQUN4QixLQUFLLEVBQUUsSUFBSTthQUNkO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRCxjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLFFBQVE7WUFDUixjQUFjO1lBQ2QsZUFBZTtZQUNmLGNBQWM7WUFDZCxZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2QixjQUFjO1lBQ2QsZUFBZTtZQUNmLFdBQVc7WUFDWCxnQkFBZ0I7WUFDaEIsNEJBQTRCO1lBQzVCLDRCQUE0QjtZQUM1Qix1QkFBdUI7U0FDMUIsQ0FBQztJQUNOLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlLCBEZWNpbWFsUGlwZSwgcmVnaXN0ZXJMb2NhbGVEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENsaWVudE1vZHVsZSwgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCBsb2NhbGVWaSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy92aSc7XHJcbmltcG9ydCB7IExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE9BdXRoTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IEltZ0ZhbGxiYWNrTW9kdWxlIH0gZnJvbSAnbmd4LWltZy1mYWxsYmFjayc7XHJcbmltcG9ydCB7IE5neE1hc2tNb2R1bGUgfSBmcm9tICduZ3gtbWFzayc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQWNjZXNzRGVuaWVkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY2Nlc3MtZGVuaWVkLWNvbXBvbmVudC9hY2Nlc3MtZGVuaWVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbkRhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29tbW9uLWRhc2hib2FyZC9jb21tb24tZGFzaGJvYXJkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGVybWlzc2lvbi9zZXJ2aWNlcy5jcy9lbnRpdHktcGVybWlzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdC1mb3VuZC9ub3QtZm91bmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3BsYXNoQ29tcG9uZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zcGxhc2gtY29tcG9uZW50L3NwbGFzaC1jb21wb25lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVW5pdmVyc2FsTGlua1Byb2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdW5pdmVyc2FsLWxpbmstcHJvY2Vzc29yL3VuaXZlcnNhbC1saW5rLXByb2Nlc3Nvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnRpdHlXb3JrZmxvd0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy93b3JrZmxvdy9zZXJ2aWNlcy9lbnRpdHktd29ya2Zsb3ctaGlzdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5V29ya2Zsb3dTZXR0aW5nU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd29ya2Zsb3cvc2VydmljZXMvZW50aXR5LXdvcmtmbG93LXNldHRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0ZXJzL2xvZy5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25VdGlsc0ludGVyY2VwdG9yIH0gZnJvbSAnLi4vaW50ZXJjZXB0ZXJzL3Blcm1pc3Npb24tdXRpbHMuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBTZW5kQWNjZXNzVG9rZW5JbnRlcmNlcHRvciB9IGZyb20gJy4uL2ludGVyY2VwdGVycy9zZW5kLWFjY2Vzcy10b2tlbi5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFRyYWNlSW50ZXJjZXB0b3IgfSBmcm9tICcuLi9pbnRlcmNlcHRlcnMvdHJhY2UuaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBIdG1sRm9ybWF0UGlwZSB9IGZyb20gJy4uL3BpcGVzL2h0bWwtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBNYXN0ZXJEYXRhUGlwZSB9IGZyb20gJy4uL3BpcGVzL21hc3RlckRhdGEucGlwZSc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkZvcm1hdFBpcGUgfSBmcm9tICcuLi9waXBlcy9vcmdhbml6YXRpb24tZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zRm9ybWF0UGlwZSB9IGZyb20gJy4uL3BpcGVzL29yZ2FuaXphdGlvbnMtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuLi9waXBlcy9zYWZlLWh0bWwucGlwZSc7XHJcbmltcG9ydCB7IFVzZXJGb3JtYXRQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdXNlci1mb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFVzZXJzRm9ybWF0UGlwZSB9IGZyb20gJy4uL3BpcGVzL3VzZXJzLWZvcm1hdC5waXBlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcbi8vIFRPRE86IFVwZ3JhZGUgc2F1XHJcbi8vIGltcG9ydCB7IEJyb3dzZXJGYXZpY29ucywgQlJPV1NFUl9GQVZJQ09OU19DT05GSUcsIEZhdmljb25zIH0gZnJvbSAnLi9mYXZpY29uJztcclxuaW1wb3J0IHsgTXVsdGlUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnLi9tdWx0aS10cmFuc2xhdGUtaHR0cC1sb2FkZXInO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNGdW5jdGlvbiB7XHJcblxyXG4gICAgc3RhdGljIGluaXRSb3V0ZShyb3V0ZXM6IGFueVtdKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIC4uLlB1YmxpY0Z1bmN0aW9uLmNvbW1vblJvdXRlcygpLFxyXG4gICAgICAgICAgICAuLi5yb3V0ZXMsXHJcbiAgICAgICAgICAgIC4uLlB1YmxpY0Z1bmN0aW9uLmRlZmF1bHRSb3V0ZXMoKSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjb21tb25Sb3V0ZXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBTcGxhc2hDb21wb25lbnRDb21wb25lbnQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhdGg6ICdkYXNoYm9hcmQnLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBDb21tb25EYXNoYm9hcmRDb21wb25lbnQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhdGg6ICdhY2Nlc3MtZGVuaWVkJyxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQWNjZXNzRGVuaWVkQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAndW5pdmVyc2FsLWxpbmsnLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBVbml2ZXJzYWxMaW5rUHJvY2Vzc29yQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGRlZmF1bHRSb3V0ZXMoKTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHsgcGF0aDogJyoqJywgY29tcG9uZW50OiBOb3RGb3VuZENvbXBvbmVudCB9LFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNyZWF0ZVRyYW5zbGF0ZUxvYWRlcihodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBNdWx0aVRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCxcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgeyBwcmVmaXg6ICdhc3NldHMvaTE4bi8nLCBzdWZmaXg6ICcuanNvbicgfSxcclxuICAgICAgICAgICAgICAgIHsgcHJlZml4OiAnYXNzZXRzL2kxOG4vc2hhcmVkLycsIHN1ZmZpeDogJy5qc29uJyB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGU/LCBsYW5ndWFnZT8pIHtcclxuICAgICAgICBpZiAoIWxvY2FsZSkge1xyXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVWaTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFsYW5ndWFnZSkge1xyXG4gICAgICAgICAgICBsYW5ndWFnZSA9ICd2aSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlLCBsYW5ndWFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGltcG9ydFJvb3RNb2R1bGUoZW52aXJvbm1lbnQpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgQnJvd3Nlck1vZHVsZSxcclxuICAgICAgICAgICAgRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICAgICAgICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxyXG4gICAgICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgICAgICBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgICAgICAgICAgICBsb2FkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogUHVibGljRnVuY3Rpb24uY3JlYXRlVHJhbnNsYXRlTG9hZGVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBOZ3hNYXNrTW9kdWxlLmZvclJvb3QoKSxcclxuICAgICAgICAgICAgT0F1dGhNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgICAgICAgICAgICByZXNvdXJjZVNlcnZlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIGFsbG93ZWRVcmxzOiBbZW52aXJvbm1lbnQuYXBwTWV0YWRhdGEuYXBwR2F0ZXdheV0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZEFjY2Vzc1Rva2VuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBJbWdGYWxsYmFja01vZHVsZSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB1c2VSb290UHJvdmlkZXIoZW52aXJvbW1lbnQpOiBhbnlbXSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgeyBwcm92aWRlOiBMT0NBTEVfSUQsIHVzZVZhbHVlOiAndmktVk4nIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgICAgICAgdXNlQ2xhc3M6IFNlbmRBY2Nlc3NUb2tlbkludGVyY2VwdG9yLFxyXG4gICAgICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgICAgICAgdXNlQ2xhc3M6IExvZ0ludGVyY2VwdG9yLFxyXG4gICAgICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgICAgICAgdXNlQ2xhc3M6IFBlcm1pc3Npb25VdGlsc0ludGVyY2VwdG9yLFxyXG4gICAgICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxyXG4gICAgICAgICAgICAgICAgdXNlQ2xhc3M6IFRyYWNlSW50ZXJjZXB0b3IsXHJcbiAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgICAgIENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgIERhdGVQaXBlLFxyXG4gICAgICAgICAgICBVc2VyRm9ybWF0UGlwZSxcclxuICAgICAgICAgICAgVXNlcnNGb3JtYXRQaXBlLFxyXG4gICAgICAgICAgICBIdG1sRm9ybWF0UGlwZSxcclxuICAgICAgICAgICAgU2FmZUh0bWxQaXBlLFxyXG4gICAgICAgICAgICBPcmdhbml6YXRpb25Gb3JtYXRQaXBlLFxyXG4gICAgICAgICAgICBPcmdhbml6YXRpb25zRm9ybWF0UGlwZSxcclxuICAgICAgICAgICAgTWFzdGVyRGF0YVBpcGUsXHJcbiAgICAgICAgICAgIE5vdGlmaWVyU2VydmljZSxcclxuICAgICAgICAgICAgRGVjaW1hbFBpcGUsXHJcbiAgICAgICAgICAgIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgIEVudGl0eVdvcmtmbG93U2V0dGluZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgIEVudGl0eVdvcmtmbG93SGlzdG9yeVNlcnZpY2UsXHJcbiAgICAgICAgICAgIEVudGl0eVBlcm1pc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0=
@@ -10,8 +10,8 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "../../services/article.service";
11
11
  import * as i2 from "../../services/newscategory.service";
12
12
  import * as i3 from "tn-custom-primeng/button";
13
- import * as i4 from "tn-custom-primeng/tooltip";
14
- import * as i5 from "tn-custom-primeng/dropdown";
13
+ import * as i4 from "tn-custom-primeng/dropdown";
14
+ import * as i5 from "tn-custom-primeng/tooltip";
15
15
  import * as i6 from "@angular/forms";
16
16
  import * as i7 from "../crud/crud-list/crud-list.component";
17
17
  import * as i8 from "@ngx-translate/core";
@@ -177,7 +177,7 @@ export class AddNewsComponent extends DataListBase {
177
177
  }
178
178
  }
179
179
  AddNewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AddNewsComponent, deps: [{ token: i0.Injector }, { token: i1.ArticleService }, { token: i2.NewsCategoryService }], target: i0.ɵɵFactoryTarget.Component });
180
- AddNewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AddNewsComponent, selector: "add-news", inputs: { isShow: "isShow", languageCode: "languageCode" }, outputs: { showChange: "showChange" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ContextMenu, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"custom-list\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\"\r\n (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\"\r\n (onReloaded)=\"_unmarkLoading()\" [hiddenAdd]=\"true\" [hiddenDelete]=\"true\">\r\n <ng-template #toolbar>\r\n <div class=\"ui-g p-grid\">\r\n <div class=\" p-g-12 p-md-3\">\r\n <button (click)=\"addMultiple($event)\" pButton type=\"button\"\r\n label=\"Th\u00EAm ({{model.selectedItems.length}})\" icon=\"pi pi-plus\" iconPos=\"left\"\r\n class=\"p-button-rounded p-button-text p-button-info\"></button>\r\n </div>\r\n <div class=\" p-g-12 p-md-3 p-offset-6\">\r\n <p-dropdown [placeholder]=\"'Ch\u1ECDn lo\u1EA1i tin'\" [options]=\"optionArr\" [(ngModel)]=\"articleType\"\r\n (onChange)=\"onSelect($event)\">\r\n </p-dropdown>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button (click)=\"addRow(rowData)\" icon=\"pi pi-plus\" pTooltip=\"{{'Th\u00EAm' | translate}}\" tooltipPosition=\"top\"\r\n pButton type=\"button\" label=\"Th\u00EAm\"\r\n class=\"p-button-rounded p-button-text p-button-primary link-or-action\"></button>\r\n </ng-template>\r\n </crud-list>\r\n</div>\r\n", styles: ["::ng-deep .custom-list .custom-card{min-height:calc(100vh - 328px)}::ng-deep .custom-list .p-dropdown.p-component{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "maxItemDisplay", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "autofocusSelectedItem", "modifyOptionsWhenFilter", "delayFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.CrudListComponent, selector: "crud-list" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
180
+ AddNewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: AddNewsComponent, selector: "add-news", inputs: { isShow: "isShow", languageCode: "languageCode" }, outputs: { showChange: "showChange" }, providers: [ComponentContextService], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ContextMenu, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"custom-list\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\"\r\n (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\"\r\n (onReloaded)=\"_unmarkLoading()\" [hiddenAdd]=\"true\" [hiddenDelete]=\"true\">\r\n <ng-template #toolbar>\r\n <div class=\"ui-g p-grid\">\r\n <div class=\" p-g-12 p-md-3\">\r\n <button (click)=\"addMultiple($event)\" pButton type=\"button\"\r\n label=\"Th\u00EAm ({{model.selectedItems.length}})\" icon=\"pi pi-plus\" iconPos=\"left\"\r\n class=\"p-button-rounded p-button-text p-button-info\"></button>\r\n </div>\r\n <div class=\" p-g-12 p-md-3 p-offset-6\">\r\n <p-dropdown [placeholder]=\"'Ch\u1ECDn lo\u1EA1i tin'\" [options]=\"optionArr\" [(ngModel)]=\"articleType\"\r\n (onChange)=\"onSelect($event)\">\r\n </p-dropdown>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button (click)=\"addRow(rowData)\" icon=\"pi pi-plus\" pTooltip=\"{{'Th\u00EAm' | translate}}\" tooltipPosition=\"top\"\r\n pButton type=\"button\" label=\"Th\u00EAm\"\r\n class=\"p-button-rounded p-button-text p-button-primary link-or-action\"></button>\r\n </ng-template>\r\n </crud-list>\r\n</div>\r\n", styles: ["::ng-deep .custom-list .custom-card{min-height:calc(100vh - 328px)}::ng-deep .custom-list .p-dropdown.p-component{width:100%}\n"], dependencies: [{ kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "resetFilterOnHide", "dropdownIcon", "autoDisplayFirst", "emptyFilterMessage", "maxItemDisplay", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "autofocusFilter", "autofocusSelectedItem", "delayFilter", "disabled", "options", "filterValue", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "virtualScroll", "itemSize", "ariaFilterLabel", "ariaLabelledBy", "maxlength", "tooltipStyleClass", "modifyOptionsWhenFilter"], outputs: ["onChange", "onFocus", "onBlur", "onClick", "onShow", "onHide"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.CrudListComponent, selector: "crud-list" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
181
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AddNewsComponent, decorators: [{
182
182
  type: Component,
183
183
  args: [{ selector: 'add-news', providers: [ComponentContextService], template: "<div class=\"custom-list\">\r\n <crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onReload)=\"_triggerProcessData($event)\" (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\"\r\n (onView)=\"_view($event)\" (onDelete)=\"_delete($event)\" (onDeleteMultiple)=\"_deleteMultiple($event)\"\r\n (onReloaded)=\"_unmarkLoading()\" [hiddenAdd]=\"true\" [hiddenDelete]=\"true\">\r\n <ng-template #toolbar>\r\n <div class=\"ui-g p-grid\">\r\n <div class=\" p-g-12 p-md-3\">\r\n <button (click)=\"addMultiple($event)\" pButton type=\"button\"\r\n label=\"Th\u00EAm ({{model.selectedItems.length}})\" icon=\"pi pi-plus\" iconPos=\"left\"\r\n class=\"p-button-rounded p-button-text p-button-info\"></button>\r\n </div>\r\n <div class=\" p-g-12 p-md-3 p-offset-6\">\r\n <p-dropdown [placeholder]=\"'Ch\u1ECDn lo\u1EA1i tin'\" [options]=\"optionArr\" [(ngModel)]=\"articleType\"\r\n (onChange)=\"onSelect($event)\">\r\n </p-dropdown>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #function let-rowData=\"rowData\" let-crudList=\"crudList\">\r\n <button (click)=\"addRow(rowData)\" icon=\"pi pi-plus\" pTooltip=\"{{'Th\u00EAm' | translate}}\" tooltipPosition=\"top\"\r\n pButton type=\"button\" label=\"Th\u00EAm\"\r\n class=\"p-button-rounded p-button-text p-button-primary link-or-action\"></button>\r\n </ng-template>\r\n </crud-list>\r\n</div>\r\n", styles: ["::ng-deep .custom-list .custom-card{min-height:calc(100vh - 328px)}::ng-deep .custom-list .p-dropdown.p-component{width:100%}\n"] }]
@@ -100,7 +100,7 @@ AutocompleteDatasourceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
100
100
  useExisting: forwardRef(() => AutocompleteDatasourceComponent),
101
101
  multi: true
102
102
  }
103
- ], ngImport: i0, template: "<p-autoComplete [styleClass]=\"'tn-autocomplete'\" [disabled]=\"control.disabled\" [size]=\"300\" [dropdown]=\"true\"\r\n [suggestions]=\"lstDataSuggest\" [placeholder]=\"control.placeholder\" [showTransitionOptions]=\"showTransitionOptions\"\r\n [hideTransitionOptions]=\"hideTransitionOptions\" [multiple]=\"control.multiple\" [minLength]=\"control.minLengthFilter\"\r\n [appendTo]=\"control.appendTo\" [(ngModel)]=\"selectedValue\" (onSelect)=\"handleSelect($event)\"\r\n (onUnselect)=\"handleUnSelect($event)\" (onBlur)=\"handleBlur($event)\" (onFocus)=\"handleFocus($event)\"\r\n (onDropdownClick)=\"handleACDropdownClick($event)\" (completeMethod)=\"filterData($event)\"\r\n (onKeyUp)=\"handleKeyUp($event)\">\r\n</p-autoComplete>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "itemSize", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }] });
103
+ ], ngImport: i0, template: "<p-autoComplete [styleClass]=\"'tn-autocomplete'\" [disabled]=\"control.disabled\" [size]=\"300\" [dropdown]=\"true\"\r\n [suggestions]=\"lstDataSuggest\" [placeholder]=\"control.placeholder\" [showTransitionOptions]=\"showTransitionOptions\"\r\n [hideTransitionOptions]=\"hideTransitionOptions\" [multiple]=\"control.multiple\" [minLength]=\"control.minLengthFilter\"\r\n [appendTo]=\"control.appendTo\" [(ngModel)]=\"selectedValue\" (onSelect)=\"handleSelect($event)\"\r\n (onUnselect)=\"handleUnSelect($event)\" (onBlur)=\"handleBlur($event)\" (onFocus)=\"handleFocus($event)\"\r\n (onDropdownClick)=\"handleACDropdownClick($event)\" (completeMethod)=\"filterData($event)\"\r\n (onKeyUp)=\"handleKeyUp($event)\">\r\n</p-autoComplete>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "type", "autoZIndex", "baseZIndex", "dropdownIcon", "unique", "completeOnFocus", "scrollHeight", "dropdownMode", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "suggestions", "disabled", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "ariaLabel", "ariaLabelledBy", "field", "dropdown", "multiple", "tabindex", "dataKey", "emptyMessage", "autofocus"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }] });
104
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AutocompleteDatasourceComponent, decorators: [{
105
105
  type: Component,
106
106
  args: [{ selector: 'app-autocomplete-datasource', providers: [
@@ -530,7 +530,7 @@ AutoCompletePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
530
530
  },
531
531
  ComponentContextService,
532
532
  EntityMetadataService
533
- ], viewQueries: [{ propertyName: "entityPickerBoxComponent", first: true, predicate: ["entityPickerBox"], descendants: true, static: true }, { propertyName: "autoComplete", first: true, predicate: ["autoComplete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"p-inputgroup autocomplete-picker\" *ngIf=\"control\" [class.has-value]=\"hasValue\"\r\n [class.multiple]=\"control.multiple\" [class.disabled]=\"control.disabled\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete #autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\"\r\n [disabled]=\"disabled\" [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\"\r\n [suggestions]=\"results\" field=\"label\" [styleClass]=\"control.validators && control.required ? 'rq' : ''\"\r\n [multiple]=\"control.multiple\" [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\"\r\n (onFocus)=\"handleFocus($event)\" (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\"\r\n (onKeyUp)=\"handleKeyUp($event)\" (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"entity-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <entity-picker-box #entityPickerBox [currentNode]=\"currentNode\" [control]=\"control\" [parentSetting]=\"setting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onContentLeftInit)=\"handleContentLeftInit($event)\" (onContentRightInit)=\"handleContentRightInit($event)\"\r\n (onChanged)=\"handleChangeEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleHide($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, entityPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh' | translate\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [".autocomplete-picker{position:relative}.autocomplete-picker .icon-clear{position:absolute;right:36px;top:50%;transform:translateY(-50%);font-size:11px;color:#555;padding:3px;cursor:pointer}::ng-deep .autocomplete-picker.has-value:not(.multiple):not(.disabled) p-autocomplete .p-inputtext{padding-right:34px}::ng-deep .autocomplete-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:.143rem 0}::ng-deep .autocomplete-picker .p-autocomplete .p-autocomplete-multiple-container,::ng-deep .autocomplete-picker .p-autocomplete .p-autocomplete-input{border-radius:4px 0 0 4px}@media (max-width: 640px){::ng-deep autocomplete-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:0 0 3px}::ng-deep autocomplete-picker .p-autocomplete-input-token>input{height:21.5px!important}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "itemSize", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i7.EntityPickerBoxComponent, selector: "entity-picker-box", inputs: ["parentSetting", "advanceData", "control", "width", "height", "readOnlyValues", "selectedValue", "currentNode"], outputs: ["onContentLeftInit", "onContentRightInit", "onRowSelect", "onChanged", "onSelect", "onUnSelect", "onDone"] }, { kind: "component", type: i8.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
533
+ ], viewQueries: [{ propertyName: "entityPickerBoxComponent", first: true, predicate: ["entityPickerBox"], descendants: true, static: true }, { propertyName: "autoComplete", first: true, predicate: ["autoComplete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"p-inputgroup autocomplete-picker\" *ngIf=\"control\" [class.has-value]=\"hasValue\"\r\n [class.multiple]=\"control.multiple\" [class.disabled]=\"control.disabled\">\r\n <div style=\"width: calc(100% - 28px)\" [pTooltip]=\"tooltip\" tooltipPosition=\"top\">\r\n <p-autoComplete #autoComplete emptyMessage=\"Kh\u00F4ng c\u00F3 k\u1EBFt qu\u1EA3 n\u00E0o\" [ngClass]=\"'custom-autocomplete'\"\r\n [disabled]=\"disabled\" [placeholder]=\"control.placeholder\" [appendTo]=\"control.appendTo\"\r\n [suggestions]=\"results\" field=\"label\" [styleClass]=\"control.validators && control.required ? 'rq' : ''\"\r\n [multiple]=\"control.multiple\" [minLength]=\"2\" [(ngModel)]=\"selectedValueObject\"\r\n (onFocus)=\"handleFocus($event)\" (onBlur)=\"handleBlur($event)\" (completeMethod)=\"search($event)\"\r\n (onKeyUp)=\"handleKeyUp($event)\" (onSelect)=\"handleSelect($event)\" (onUnselect)=\"handleUnSelect($event)\">\r\n </p-autoComplete>\r\n </div>\r\n <span *ngIf=\"!control.multiple && !disabled && hasValue\" class=\"icon-clear\" (click)=\"clearValue()\"><i\r\n class=\"fas fa-times\"></i></span>\r\n <button class=\"custom-autocomplete-button\" [disabled]=\"disabled\" tabindex=\"-1\" (click)=\"showPickForm()\" pButton\r\n [pTooltip]=\"control.title\" icon=\"fas fa-external-link-alt\" type=\"button\"></button>\r\n</div>\r\n<tn-dialog #dialog *ngIf=\"showFormPicker\" styleClass=\"entity-picker-box-dialog no-padding\" [useDefaultScrollBar]=\"true\"\r\n [header]=\"control.title | translate\" [popupSize]=\"popupSize\" (onHide)=\"handleHide($event)\">\r\n <entity-picker-box #entityPickerBox [currentNode]=\"currentNode\" [control]=\"control\" [parentSetting]=\"setting\"\r\n [advanceData]=\"advanceData\" [readOnlyValues]=\"readOnlyValues\" [selectedValue]=\"selectedValue\"\r\n (onContentLeftInit)=\"handleContentLeftInit($event)\" (onContentRightInit)=\"handleContentRightInit($event)\"\r\n (onChanged)=\"handleChangeEntity($event)\" (onSelect)=\"handleSelectEntity($event)\"\r\n (onUnSelect)=\"handleUnSelectEntity($event)\" (onDone)=\"handleHide($event)\"\r\n (onRowSelect)=\"handleRowSelect($event)\">\r\n </entity-picker-box>\r\n <ng-template #footer>\r\n <button type=\" button\" pButton class=\"p-button-text\" (click)=\"onClickSubmitButton($event, entityPickerBox)\"\r\n [label]=\"'Ho\u00E0n th\u00E0nh' | translate\" icon=\"pi pi-check\"></button>\r\n </ng-template>\r\n</tn-dialog>", styles: [".autocomplete-picker{position:relative}.autocomplete-picker .icon-clear{position:absolute;right:36px;top:50%;transform:translateY(-50%);font-size:11px;color:#555;padding:3px;cursor:pointer}::ng-deep .autocomplete-picker.has-value:not(.multiple):not(.disabled) p-autocomplete .p-inputtext{padding-right:34px}::ng-deep .autocomplete-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:.143rem 0}::ng-deep .autocomplete-picker .p-autocomplete .p-autocomplete-multiple-container,::ng-deep .autocomplete-picker .p-autocomplete .p-autocomplete-input{border-radius:4px 0 0 4px}@media (max-width: 640px){::ng-deep autocomplete-picker .p-autocomplete.p-autocomplete-multiple .p-autocomplete-multiple-container .p-autocomplete-input-token{padding:0 0 3px}::ng-deep autocomplete-picker .p-autocomplete-input-token>input{height:21.5px!important}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "label", "icon"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "type", "autoZIndex", "baseZIndex", "dropdownIcon", "unique", "completeOnFocus", "scrollHeight", "dropdownMode", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "suggestions", "disabled", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "ariaLabel", "ariaLabelledBy", "field", "dropdown", "multiple", "tabindex", "dataKey", "emptyMessage", "autofocus"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }, { kind: "component", type: i7.EntityPickerBoxComponent, selector: "entity-picker-box", inputs: ["parentSetting", "advanceData", "control", "width", "height", "readOnlyValues", "selectedValue", "currentNode"], outputs: ["onContentLeftInit", "onContentRightInit", "onRowSelect", "onChanged", "onSelect", "onUnSelect", "onDone"] }, { kind: "component", type: i8.TnDialogComponent, selector: "tn-dialog", inputs: ["maskClass", "styleClass", "scrollBarStyleClass", "useDefaultScrollBar", "visible", "disabledButton", "modal", "header", "popupSize", "closeOnEscape", "showFooter", "positionTop", "minY", "hiddenSave", "maximizable"], outputs: ["onSave", "onCancel", "onShow", "onHide"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
534
534
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AutoCompletePickerComponent, decorators: [{
535
535
  type: Component,
536
536
  args: [{ selector: 'autocomplete-picker', providers: [
@@ -204,7 +204,7 @@ AvatarUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
204
204
  useExisting: forwardRef(() => AvatarUploaderComponent),
205
205
  multi: true
206
206
  }
207
- ], viewQueries: [{ propertyName: "fileControl", first: true, predicate: FileUpload, descendants: true }], ngImport: i0, template: "<!-- Todo: code lom, refactory lai sau -->\r\n<div *ngIf=\"!fileIdUploaded\">\r\n <div class=\"tn-thumbnail\">\r\n <img src=\"{{defaultNoImageUrl}}\" width=\"100%\" height=\"100%\" />\r\n\r\n <div class=\"tn-btn-thumbnail text-center\" *ngIf=\"!disabled && !showNoti\" (click)=\"onSelectThumbnailClick()\">\r\n <span class=\"text-center\"><i class=\"fas fa-cloud-upload-alt\"\r\n style=\"margin-right: 5px\"></i>{{chooseLabel}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"showNoti\" class=\"tn-btn-thumbnail noti-container\">\r\n <i class=\"loader-icon pi pi-spin pi-spinner\"></i>\r\n {{notification}}\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!disabled\" style=\"display:none;\">\r\n <p-fileUpload #fileControl (onBeforeUpload)=\"onBeforeUpload($event)\" [multiple]=\"false\" accept=\"image/*\"\r\n [chooseLabel]=\"chooseLabel\" (onUpload)=\"onUploadEvent($event)\" mode=\"basic\" name=\"file\" [url]=\"apiUploadUrl\"\r\n maxFileSize=\"10000000\" auto=\"true\"></p-fileUpload>\r\n </div>\r\n</div>\r\n<div *ngIf=\"fileIdUploaded != null\">\r\n <div class=\"tn-thumbnail\">\r\n <img (error)=\"onError($event)\" [src]=\"getImageUrl()\" width=\"100%\" height=\"100%\" />\r\n <div *ngIf=\"!disabled && !showNoti\" class=\"tn-btn-thumbnail text-center\" (click)=\"deleteAvatar()\">\r\n <a class=\"text-center text-danger\">\r\n <i class=\"pi pi-trash btn-delete\"></i>\r\n X\u00F3a</a>\r\n </div>\r\n <div *ngIf=\"showNoti\" class=\"tn-btn-thumbnail noti-container\">\r\n <i class=\"loader-icon pi pi-spin pi-spinner\"></i>\r\n {{notification}}\r\n </div>\r\n </div>\r\n</div>", styles: [".tn-thumbnail{width:100%;height:100%;position:relative;border:1px solid #eee}.tn-btn-thumbnail{display:inline-block;position:absolute;bottom:0;height:30px;width:100%;opacity:.5;background:#000;left:0;cursor:pointer;border:1px solid #eee}.tn-btn-thumbnail span{line-height:30px;color:#fff}.tn-btn-thumbnail .btn-delete{margin-right:5px}.text-center{text-align:center;vertical-align:middle;vertical-align:-webkit-baseline-middle}.text-danger{color:red}.noti-container{display:flex;justify-content:center;align-items:center;font-size:12px;font-weight:400;color:#fff}.noti-container .loader-icon{margin-right:5px;font-size:13px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }] });
207
+ ], viewQueries: [{ propertyName: "fileControl", first: true, predicate: FileUpload, descendants: true }], ngImport: i0, template: "<!-- Todo: code lom, refactory lai sau -->\r\n<div *ngIf=\"!fileIdUploaded\">\r\n <div class=\"tn-thumbnail\">\r\n <img src=\"{{defaultNoImageUrl}}\" width=\"100%\" height=\"100%\" />\r\n\r\n <div class=\"tn-btn-thumbnail text-center\" *ngIf=\"!disabled && !showNoti\" (click)=\"onSelectThumbnailClick()\">\r\n <span class=\"text-center\"><i class=\"fas fa-cloud-upload-alt\"\r\n style=\"margin-right: 5px\"></i>{{chooseLabel}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"showNoti\" class=\"tn-btn-thumbnail noti-container\">\r\n <i class=\"loader-icon pi pi-spin pi-spinner\"></i>\r\n {{notification}}\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!disabled\" style=\"display:none;\">\r\n <p-fileUpload #fileControl (onBeforeUpload)=\"onBeforeUpload($event)\" [multiple]=\"false\" accept=\"image/*\"\r\n [chooseLabel]=\"chooseLabel\" (onUpload)=\"onUploadEvent($event)\" mode=\"basic\" name=\"file\" [url]=\"apiUploadUrl\"\r\n maxFileSize=\"10000000\" auto=\"true\"></p-fileUpload>\r\n </div>\r\n</div>\r\n<div *ngIf=\"fileIdUploaded != null\">\r\n <div class=\"tn-thumbnail\">\r\n <img (error)=\"onError($event)\" [src]=\"getImageUrl()\" width=\"100%\" height=\"100%\" />\r\n <div *ngIf=\"!disabled && !showNoti\" class=\"tn-btn-thumbnail text-center\" (click)=\"deleteAvatar()\">\r\n <a class=\"text-center text-danger\">\r\n <i class=\"pi pi-trash btn-delete\"></i>\r\n X\u00F3a</a>\r\n </div>\r\n <div *ngIf=\"showNoti\" class=\"tn-btn-thumbnail noti-container\">\r\n <i class=\"loader-icon pi pi-spin pi-spinner\"></i>\r\n {{notification}}\r\n </div>\r\n </div>\r\n</div>", styles: [".tn-thumbnail{width:100%;height:100%;position:relative;border:1px solid #eee}.tn-btn-thumbnail{display:inline-block;position:absolute;bottom:0;height:30px;width:100%;opacity:.5;background:#000;left:0;cursor:pointer;border:1px solid #eee}.tn-btn-thumbnail span{line-height:30px;color:#fff}.tn-btn-thumbnail .btn-delete{margin-right:5px}.text-center{text-align:center;vertical-align:middle;vertical-align:-webkit-baseline-middle}.text-danger{color:red}.noti-container{display:flex;justify-content:center;align-items:center;font-size:12px;font-weight:400;color:#fff}.noti-container .loader-icon{margin-right:5px;font-size:13px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FileUpload, selector: "p-fileUpload", inputs: ["method", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "previewWidth", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "files", "name", "url", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "style", "styleClass", "chooseLabel", "uploadLabel", "cancelLabel", "headers", "customUpload", "fileLimit"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler"] }] });
208
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AvatarUploaderComponent, decorators: [{
209
209
  type: Component,
210
210
  args: [{ selector: 'app-avatar-uploader', providers: [
@@ -583,7 +583,7 @@ export class ChatBoxComponent extends ComponentBase {
583
583
  }
584
584
  }
585
585
  ChatBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChatBoxComponent, deps: [{ token: i0.Injector }, { token: i1.ChatService }, { token: i2.MessageBoardService }, { token: i3.UserService }, { token: i4.CheckControlVisibleService }, { token: i5.SignalRService }, { token: i6.FileExplorerService }, { token: i7.CrudService }, { token: i8.NotifierService }, { token: i9.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
586
- ChatBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ChatBoxComponent, selector: "chat-box", inputs: { taskId: "taskId", serviceCode: "serviceCode", entity: "entity", users: "users", showSendMessageBox: "showSendMessageBox" }, providers: [ComponentContextService, CheckControlVisibleService], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "fileElement", first: true, predicate: ["fileElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"dashboard\">\r\n <div class=\"chat\">\r\n <div class=\"group-info\">\r\n <a href=\"javascript:\">C\u00F3 {{peopleAll.length}} ng\u01B0\u1EDDi trong nh\u00F3m n\u00E0y</a>\r\n <div class=\"circleButton\" pTooltip=\"Xem to\u00E0n b\u1ED9 \u0111\u00EDnh k\u00E8m\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"far fa-images\"></i></a>\r\n </div>\r\n <div (click)=\"addPeople()\" class=\"circleButton\" pTooltip=\"Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi v\u00E0o nh\u00F3m\" tooltipPosition=\"top\"\r\n disabled=\"true\">\r\n <a href=\"javascript:\"><i class=\"fas fa-user-plus\"></i></a>\r\n </div>\r\n </div>\r\n <ul #scrollMe [ngClass]=\"{'hasPin': model.pinnedMessage != null}\">\r\n <li *ngIf=\"model.pinnedMessage\" class=\"clearfix pin\" [ngClass]=\"{'message-from': true}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"messageItem; context: { i : -1, item: model.pinnedMessage, isPinnedMessage: true}\">\r\n </ng-container>\r\n </li>\r\n <li *ngFor=\"let item of model.dataSource; let i = index; trackBy: trackByFunc\" class=\"clearfix\"\r\n [ngClass]=\"{ 'message-own': item.type == 'own'}\">\r\n <ng-container *ngTemplateOutlet=\"messageItem; context: { i : i, item: item}\">\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <!-- <chat-send-message-box *ngIf=\"showSendMessageBox\"></chat-send-message-box>-->\r\n <div [ngClass]=\"{'visible2': model.scrolling, 'hidden2': !model.scrolling}\" class=\"scroll-to-bottom\">\r\n <span *ngIf=\"model.newMessageNotUpdatedCount > 0\" (click)=\"scrollToBottom(350, true, null)\">\r\n {{model.newMessageNotUpdatedCount <= 5 ? model.newMessageNotUpdatedCount : '5+' }} </span>\r\n <span (click)=\"scrollToBottom(350, true, null)\" *ngIf=\"model.newMessageNotUpdatedCount == 0\">\r\n <i class=\"fas fa-chevron-down\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<file-viewer *ngIf=\"fileViewerModel.showEditForm\" [parentContext]=\"context\" [parentModel]=\"model\"\r\n [model]=\"fileViewerModel\">\r\n</file-viewer>\r\n\r\n<ng-template #messageItem let-i=\"i\" let-isPinnedMessage=\"isPinnedMessage\" let-item=\"item\">\r\n <img *ngIf=\"item.isFirstMessageFlow && item.type != 'own' && !isPinnedMessage && item.avatar != null\" alt=\"\"\r\n class=\"chat-avatar\" src=\"{{getCurrentUserAvatar(item.avatar)}}\">\r\n <p *ngIf=\"(item.isFirstMessageFlow && item.type != 'own') && !isPinnedMessage\" class=\"message-created-by\">\r\n {{item.fullName}}\r\n </p>\r\n <span *ngIf=\"!hasAttachment(item)\">\r\n <!-- [class]=\"addClassToMessage(item, isPinnedMessage)\">-->\r\n <p *ngIf=\"!hasAttachment(item)\" class=\"message-content\">\r\n <i (click)=\"pinMessage(item)\" class=\"fas fa-thumbtack\" style=\"right: 0;\"></i>\r\n <i (click)=\"quickNote(item)\" class=\"fas fa-sticky-note\"></i>\r\n {{item.content}}\r\n </p>\r\n <p *ngIf=\"!isPinnedMessage && (item.isLastMessageFlow || !inTheSameTime(i, item, model.dataSource))\"\r\n class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n <p *ngIf=\"isPinnedMessage\" class=\"message-created\">\r\n {{item.createdBy}} \u0111\u00E3 g\u1EEDi l\u00FAc {{item.created | date:'dd/MM/yyyy HH:mm'}}\r\n </p>\r\n </span>\r\n <ng-container *ngIf=\"hasAttachment(item)\">\r\n <ng-container *ngFor=\"let attachmentItem of item.attachments;let index=index\">\r\n <div class=\"file\"\r\n [ngClass]=\"{'first':item.isFirstMessageFlow && index == 0, 'middle':index > 0 || !item.isFirstMessageFlow, 'image' : attachmentItem.type == 'image'}\"\r\n [ngStyle]=\"{'width': model.img[i + 'width' + index]}\">\r\n <p class=\"attachment\">\r\n <span (mouseup)=\"onMouseUp($event)\" class=\"attachment-item\">\r\n <a *ngIf=\"attachmentItem.type != 'image'\" (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <i class=\"fas fa-paperclip\"></i>{{attachmentItem.fileName}}\r\n </a>\r\n <a *ngIf=\"attachmentItem.type == 'image'\" #aElement\r\n [ngClass]=\"{'hidden': !model.img[i + '' + index], 'visible':model.img[i + '' + index]}\"\r\n (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <img class=\"message-img\" (load)=\"loadImg($event, i, index)\"\r\n [src]=\"attachmentItem.url | secure | async\" />\r\n </a>\r\n </span>\r\n </p>\r\n <div style=\"clear: both\"></div>\r\n <p class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n </div>\r\n <div style=\"clear: both\"></div>\r\n </ng-container>\r\n </ng-container>\r\n <after-view-checked *ngIf=\"model.dataSource.length == i + 1\" (loading)=\"scrollToBottom(0, false, item.sent)\">\r\n </after-view-checked>\r\n</ng-template>\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\"-->\r\n<!-- (onCancel)=\"userPickerForm.show = false\"-->\r\n<!-- (onHide)=\"userPickerForm.show = false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n<!-- <user-picker-box #formBase [control]=\"userPickerControl\"-->\r\n<!-- [(ngModel)]=\"this.peopleAll\" [multiple]=\"userPickerControl.multiple\">-->\r\n<!-- </user-picker-box>-->\r\n<!--</tn-dialog>-->\r\n\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\" (onHide)=\"userPickerForm.show == false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n\r\n<!-- &lt;!&ndash;<quick-add-form *ngIf=\"model.editFormModel.showQuickNoteForm\" [parentContext]=\"context\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; [parentModel]=\"context.data.noteDataModel\"></quick-add-form>&ndash;&gt;-->\r\n<!--</tn-dialog>-->", styles: [".paging-advance{list-style:none;padding-left:0;margin:3px 0}.paging-advance li{width:150px;padding-left:15px;line-height:30}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{cursor:default;background:none}.paging-advance li:hover{cursor:pointer;background:red}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{right:auto;left:1.25em;margin-left:-10}.paging-advance-overlay.ui-overlaypanel-shifted:after{right:auto;left:1.25em;margin-left:-8px}.chat-avatar{height:36px;border:2px solid #eee}\n", "@charset \"UTF-8\";@import\"~@angular/material/prebuilt-themes/indigo-pink.css\";@import\"~jsoneditor/dist/jsoneditor.min.css\";.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-h{justify-content:center}.flex.center-all{align-items:center;justify-content:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap;background-color:#fff}.tn-scroll-bar.bgWhite>div{background-color:#fff}.label-primary{padding:2px;border-radius:.25em;background-color:#1ab394;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-danger{padding:2px 5px;border-radius:.25em;background-color:#ed5565;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-warning{padding:2px;border-radius:.25em;background-color:#b8860b;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-secondary{padding:2px;border-radius:.25em;background-color:#a9a9a9;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-done{padding:2px;border-radius:.25em;background-color:#3b1ef7;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{max-height:calc(100vh - 180px);min-height:80px;overflow-y:hidden;overflow-x:hidden;border:1px solid #eee;border-radius:5px}.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{padding:60px 0 0;overflow:hidden}div.circleButton{line-height:32px;border-radius:50%;width:32px;height:32px;text-align:center;position:relative;display:inline-block;transform:perspective(1px);overflow:hidden;margin-top:4px;margin-bottom:4px}div.circleButton>a{padding:0!important;line-height:32px}div.circleButton>a>i{width:24px!important}div.circleButton:before{content:\"\";position:absolute;top:0;left:0;bottom:0;right:0;background:#e6e6e6;z-index:-1;transform:scale(0);transition:all cubic-bezier(.4,.34,.01,.97) .3s;border-radius:50%}div.circleButton:hover:before{transform:scale(1)}.message-notice{text-align:center;background:#e0e0e0}.message-created-by{font-weight:400;font-size:.82em;color:#888;margin-top:5px;margin-bottom:3px;margin-left:45px}.message-created{font-size:.82em;color:#495057;margin-top:0;margin-bottom:0;display:inline-block}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-right:10px;padding-left:6px}.message-content{margin-top:3px;margin-bottom:6px;line-height:20px;position:relative;color:#000}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{float:left;width:84px;height:84px;margin:8px;position:relative;overflow:hidden;background:#f1f1f1;border-radius:8px;text-align:center;border:1px solid #ccc;box-shadow:1px 2px 3px #0000000f;-webkit-user-select:none;user-select:none}.attachment-list .attachment-item img{width:100%;height:100%}.attachment-list .attachment-item span{position:absolute;top:25px;left:0;padding:5px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{height:120px;width:auto;margin-left:0;float:none}.message-attachment{cursor:pointer;position:relative;font-size:1.5em;margin:0 5px 0 0}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{position:absolute;right:5px;top:5px;cursor:pointer;color:#fff;font-size:20px;background:#495057;border-radius:50%}.attachment-list{position:absolute;bottom:51px;width:calc(100% + 30px);background:#fff;left:-15px;height:100px;display:none;box-shadow:0 -2px 3px -3px #00000036}.attachment-list.attached-file{display:block}.dashboard{margin-top:-5px;margin-bottom:-15px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{white-space:nowrap;color:#555}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{white-space:pre-wrap;text-align:justify;line-height:18px;padding-left:30px}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{position:absolute;left:20px;margin-top:3px}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{display:flex;border:0;text-align:left;margin:0;padding:0}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{line-height:40px;display:inline-block;width:40px;height:100%;text-align:center}.dashboard .chat .new-message .message-emotion i{line-height:inherit;font-size:24px}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{border-radius:2px 20px 20px 2px;background-color:#f0e3fd;border:0}.dashboard .chat ul li.message-from>.middle,.dashboard .chat ul li.message-from>.first{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{margin-left:45px!important;border-radius:2px 20px 20px}.dashboard .chat ul li.message-from>img{margin-top:5px;width:36px;border-radius:50%;position:absolute}.dashboard .chat ul li.message-own>span{border-radius:20px 2px 2px 20px;background-color:#def6f8;border:0;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-right:0;padding-left:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{display:inline-block;cursor:pointer;font-weight:700;color:#555}.dashboard .chat ul li.message-own>div.file{border-radius:6px;background:#f1f1f1;display:inline-block;margin:1px;text-align:right;border:1px solid #e4e4e4;overflow:hidden}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-right:0;padding-left:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{display:inline-block;cursor:pointer;font-weight:700;color:#555}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{border-radius:6px;background:#f1f1f1;display:inline-block;margin:1px;text-align:left;border:1px solid #e4e4e4;overflow:hidden}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;width:220px;transition:width .15s linear;padding:15px;max-width:100%}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;padding:0;margin:0}.visible{visibility:visible;opacity:1;transition:opacity .15s linear}.hidden{visibility:hidden;opacity:0;transition:visibility 0s .1s,opacity .1s linear}.visible2{visibility:visible;opacity:1;transition:opacity .35s linear}.hidden2{visibility:hidden;opacity:0;transition:visibility 0s .3s,opacity .3s linear}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{position:sticky;bottom:6px;text-align:right;padding-right:12px;min-height:40px}.dashboard .chat .scroll-to-bottom span{cursor:pointer;font-size:20px;color:#fff;background:#495057;box-shadow:0 0 10px #00000059;border:2px solid #fff;border-radius:50%;width:35px;height:35px;display:inline-block;line-height:35px;text-align:center;overflow:hidden}.dashboard .chat .group-info{position:sticky;top:0;background:#fff;margin:-10px;box-shadow:0 0 3px -1px #00000036;z-index:99;line-height:30px;padding:5px 10px}.dashboard .chat .pin{position:sticky;top:40px;z-index:98;background:#fff;margin-left:-10px;margin-bottom:10px;width:calc(100% + 20px);box-shadow:0 0 3px -1px #00000036}.dashboard .chat ul li.message-own.pin>span,.dashboard .chat ul li.message-from.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;font-size:11px;cursor:pointer}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{position:absolute;right:-15px;padding:5px}.dashboard .chat .group-info .circleButton{float:right;margin-top:0;margin-bottom:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{outline:none;box-shadow:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml strong,.normalHtml b{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{width:40px;height:40px;margin-top:-6px;border:1px solid #fff;border-radius:50%}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;top:0!important;width:100%!important;left:0!important;max-height:100%;min-width:100%!important;min-height:unset!important}#image-view-list.image-gallery-2{height:calc(100vh - 41px);width:100%;margin:-14px auto 0;background-color:#0006;touch-action:none}#image-view-list.image-gallery-2 .image-container{bottom:0;border:0;height:85%;margin:auto;background-color:transparent}#image-view-list.image-gallery-2 .image-container .iv-snap-view{top:auto;bottom:20px;left:calc(50% - 75px)}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.prev,#image-view-list .material-icons.next{display:none}#image-view-list .options-image-viewer{margin-right:37px;-webkit-user-select:none;user-select:none}.mobile-image-viewer-close{color:#fff;position:absolute;top:0;right:0;height:42px;width:37px;text-align:center;vertical-align:middle;line-height:42px;font-size:x-large;padding-right:7px;padding-top:2px;cursor:pointer}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{padding:8px 30px;text-align:right;width:100%;border-top:1px solid #e8e8e8;left:0;position:absolute;bottom:0;background:#fff;border-radius:0 0 5px 5px}.box-function button{margin-left:5px}.quick-note-button-holder{display:none;position:absolute;bottom:40px;right:50px;height:50px;width:50px;z-index:99}.quick-note-button{display:block;font-size:2em;color:#fff;outline:none;height:50px;width:50px;border-radius:50%;background:#ffc107;box-shadow:0 2px 5px #b9b9b9;line-height:50px;text-align:center;border:2px solid #fff}.quick-note-button:hover{color:#fff}.all-note-button{position:absolute;right:5px;top:5px;display:block;font-size:1.5em;color:#fff;outline:none;height:40px;width:40px;border-radius:50%;background:#ffd24b;box-shadow:0 2px 5px #b9b9b9;line-height:40px;text-align:center;border:2px solid #fff;transition:right;transition-duration:.16s;transition-timing-function:ease-in;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{top:5px;position:absolute;right:5px;display:block;font-size:1.5em;color:#fff;outline:none;height:40px;width:40px;border-radius:50%;background:#ffd24b;box-shadow:0 2px 5px #b9b9b9;line-height:40px;text-align:center;border:2px solid #fff;transition:right;transition-duration:.16s;transition-timing-function:ease-in;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{display:none;position:absolute;bottom:20px;left:20px;width:250px;z-index:98}.pinned-notes{display:block;outline:none;background:transparent;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{font-size:.8rem;box-shadow:1px 2px 3px #b98b06a1;padding:0;margin-bottom:10px;background-color:#fff1ac;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{padding-top:5px;width:25px;height:25px;text-align:center;position:absolute;right:-15px;top:-15px;background:#ffc003;box-shadow:1px 2px 3px #b98b06a1;border-radius:50%;cursor:pointer;color:#fff;border:1px solid #fff;z-index:1}.pinned-note-header-line{position:absolute;left:3px;width:13px;box-shadow:1px 1px 2px #0006;border:1px solid #fff;margin-bottom:.5rem;margin-top:.5rem;height:calc(100% - 1rem);max-height:20px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{opacity:.8;display:none;width:14px;height:14px;float:left;margin-right:2px}.pinned-note-header-button-complete{padding-top:2px;display:none}.pinned-note-body{float:right;width:100%;padding:.5rem .5rem .5rem 25px}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-unpin,.pinned-note-body:hover .pinned-note-header-button-complete{display:block}.pinned-note-line-title{display:block;font-weight:700;padding-bottom:6px;color:#333}.pinned-note-line{display:block}.view-port{position:absolute;display:none;height:0;width:0;background:transparent;z-index:999;box-shadow:0 0 0 9999px #00000096;border-radius:5px}.view-port-mask{position:absolute;display:block;height:100%;width:100%;top:0;left:0;background:transparent;z-index:9998}.tinymce-control{width:100%;border:1px solid #ccc;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;display:none}.input-tab-trap{opacity:0!important;filter:alpha(opacity=0)!important;width:0!important;overflow:hidden!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}video,video:focus,audio,audio:focus{outline:none}.iv-image-view img.iv-image{animation:fadein .5s;visibility:hidden!important}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-top:0;padding-bottom:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{color:#fff;background-color:#007ad9;border:1px solid #007ad9;font-size:14px;transition:background-color .2s,box-shadow .2s;border-radius:3px}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;color:#fff;border-color:#116fbf}body .fc .fc-toolbar .fc-button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.old-content,.fc-axis,.fc-timeGridDay-button,.fc-timeGridWeek-button,.fc-dayGridMonth-button{text-indent:-9999px;line-height:0}.new-content,.fc-axis:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.fc-dayGridMonth-button:after{text-indent:0;display:block;line-height:initial}.fc-dayGridMonth-button:after{content:\"Th\\e1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\\1ea7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\\e0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group p-button,.ui-fluid .button-group button{margin-right:.5em!important;width:auto;text-align:left}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-immediately,.base-status-urgent,.base-status-high,.base-status-medium,.base-status-low,.base-status-ended,.base-status-aborted,.base-status-completed,.base-status-rejected,.base-status-returned,.base-status-approved,.base-status-pending,.base-status-on-conducting,.base-status-on-going,.base-status-create-new{padding:3px;border-radius:.25em;color:#fff;font-size:.8em;text-align:center}.base-status-create-new{color:#666;background-color:#f2f2f2}.base-status-on-going,.base-status-on-conducting{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{color:#666;background-color:#f2f2f2}.base-status-high{background-color:#ffba01}.base-status-urgent,.base-status-immediately{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form tn-mask,.crud-form dropdown{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{position:relative;padding-left:20px;margin-bottom:5px;display:block}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";position:absolute;left:0;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr th,.table-sticky tr td{border:none!important;border-right:1px solid #eee!important;border-bottom:1px solid #eee!important}.table-sticky tr th:first-child,.table-sticky tr td:first-child{border-left:1px solid #eee!important}.table-sticky tr th:last-child,.table-sticky tr td:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid white!important}.table-sticky.fix-height tr:first-child th{position:sticky;top:0;z-index:2}.container-flex{display:flex;align-items:center}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-top:.5em;padding-right:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{position:absolute;left:0;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{display:flex;justify-content:center;align-items:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:initial;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-weight:700;font-family:cursive}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;flex:1 1;display:flex;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{padding-top:.5em;overflow:hidden;position:absolute;left:0;top:0;width:100%;height:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{margin-left:0;max-width:200px;width:100%;height:26px}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{position:absolute;height:100%;width:100%;overflow:auto}.waiting-box{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none}.waiting-box .overlay{background-color:red;background-color:#6d6d6d80;width:100%;height:100%}.waiting-box .content-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:initial}.function-topbar .container-control dropdown{width:100%}*:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.status span,.__status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.p-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-right-arrow-icon,.tn-animated-left-arrow-icon{height:32px;width:14px;position:relative;z-index:10}.tn-animated-right-arrow-icon{animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-right-arrow-icon:before,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-left-arrow-icon:after{content:\"\";position:absolute;background-color:#88b0dd;width:5px;height:20px;display:block}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@keyframes arrowBounceToLeft{0%{transform:translate(-3px)}to{transform:translate(3px)}}@keyframes arrowBounceToRight{0%{transform:translate(3px)}to{transform:translate(-3px)}}.pass{color:#49c949;margin:5px;text-align:center}.not-pass{color:red;margin:5px;text-align:center}\n"], dependencies: [{ kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i12.AfterViewCheckedComponent, selector: "after-view-checked", inputs: ["renderKey"], outputs: ["loaded", "loading", "unloading", "reRender"] }, { kind: "component", type: i13.FileViewerComponent, selector: "file-viewer", inputs: ["model", "readonly", "showPrint", "showDownload", "showDelete"], outputs: ["onClose", "onRename", "onDelete"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.DatePipe, name: "date" }, { kind: "pipe", type: i14.SecurePipe, name: "secure" }] });
586
+ ChatBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: ChatBoxComponent, selector: "chat-box", inputs: { taskId: "taskId", serviceCode: "serviceCode", entity: "entity", users: "users", showSendMessageBox: "showSendMessageBox" }, providers: [ComponentContextService, CheckControlVisibleService], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "fileElement", first: true, predicate: ["fileElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"dashboard\">\r\n <div class=\"chat\">\r\n <div class=\"group-info\">\r\n <a href=\"javascript:\">C\u00F3 {{peopleAll.length}} ng\u01B0\u1EDDi trong nh\u00F3m n\u00E0y</a>\r\n <div class=\"circleButton\" pTooltip=\"Xem to\u00E0n b\u1ED9 \u0111\u00EDnh k\u00E8m\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"far fa-images\"></i></a>\r\n </div>\r\n <div (click)=\"addPeople()\" class=\"circleButton\" pTooltip=\"Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi v\u00E0o nh\u00F3m\" tooltipPosition=\"top\"\r\n disabled=\"true\">\r\n <a href=\"javascript:\"><i class=\"fas fa-user-plus\"></i></a>\r\n </div>\r\n </div>\r\n <ul #scrollMe [ngClass]=\"{'hasPin': model.pinnedMessage != null}\">\r\n <li *ngIf=\"model.pinnedMessage\" class=\"clearfix pin\" [ngClass]=\"{'message-from': true}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"messageItem; context: { i : -1, item: model.pinnedMessage, isPinnedMessage: true}\">\r\n </ng-container>\r\n </li>\r\n <li *ngFor=\"let item of model.dataSource; let i = index; trackBy: trackByFunc\" class=\"clearfix\"\r\n [ngClass]=\"{ 'message-own': item.type == 'own'}\">\r\n <ng-container *ngTemplateOutlet=\"messageItem; context: { i : i, item: item}\">\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <!-- <chat-send-message-box *ngIf=\"showSendMessageBox\"></chat-send-message-box>-->\r\n <div [ngClass]=\"{'visible2': model.scrolling, 'hidden2': !model.scrolling}\" class=\"scroll-to-bottom\">\r\n <span *ngIf=\"model.newMessageNotUpdatedCount > 0\" (click)=\"scrollToBottom(350, true, null)\">\r\n {{model.newMessageNotUpdatedCount <= 5 ? model.newMessageNotUpdatedCount : '5+' }} </span>\r\n <span (click)=\"scrollToBottom(350, true, null)\" *ngIf=\"model.newMessageNotUpdatedCount == 0\">\r\n <i class=\"fas fa-chevron-down\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<file-viewer *ngIf=\"fileViewerModel.showEditForm\" [parentContext]=\"context\" [parentModel]=\"model\"\r\n [model]=\"fileViewerModel\">\r\n</file-viewer>\r\n\r\n<ng-template #messageItem let-i=\"i\" let-isPinnedMessage=\"isPinnedMessage\" let-item=\"item\">\r\n <img *ngIf=\"item.isFirstMessageFlow && item.type != 'own' && !isPinnedMessage && item.avatar != null\" alt=\"\"\r\n class=\"chat-avatar\" src=\"{{getCurrentUserAvatar(item.avatar)}}\">\r\n <p *ngIf=\"(item.isFirstMessageFlow && item.type != 'own') && !isPinnedMessage\" class=\"message-created-by\">\r\n {{item.fullName}}\r\n </p>\r\n <span *ngIf=\"!hasAttachment(item)\">\r\n <!-- [class]=\"addClassToMessage(item, isPinnedMessage)\">-->\r\n <p *ngIf=\"!hasAttachment(item)\" class=\"message-content\">\r\n <i (click)=\"pinMessage(item)\" class=\"fas fa-thumbtack\" style=\"right: 0;\"></i>\r\n <i (click)=\"quickNote(item)\" class=\"fas fa-sticky-note\"></i>\r\n {{item.content}}\r\n </p>\r\n <p *ngIf=\"!isPinnedMessage && (item.isLastMessageFlow || !inTheSameTime(i, item, model.dataSource))\"\r\n class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n <p *ngIf=\"isPinnedMessage\" class=\"message-created\">\r\n {{item.createdBy}} \u0111\u00E3 g\u1EEDi l\u00FAc {{item.created | date:'dd/MM/yyyy HH:mm'}}\r\n </p>\r\n </span>\r\n <ng-container *ngIf=\"hasAttachment(item)\">\r\n <ng-container *ngFor=\"let attachmentItem of item.attachments;let index=index\">\r\n <div class=\"file\"\r\n [ngClass]=\"{'first':item.isFirstMessageFlow && index == 0, 'middle':index > 0 || !item.isFirstMessageFlow, 'image' : attachmentItem.type == 'image'}\"\r\n [ngStyle]=\"{'width': model.img[i + 'width' + index]}\">\r\n <p class=\"attachment\">\r\n <span (mouseup)=\"onMouseUp($event)\" class=\"attachment-item\">\r\n <a *ngIf=\"attachmentItem.type != 'image'\" (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <i class=\"fas fa-paperclip\"></i>{{attachmentItem.fileName}}\r\n </a>\r\n <a *ngIf=\"attachmentItem.type == 'image'\" #aElement\r\n [ngClass]=\"{'hidden': !model.img[i + '' + index], 'visible':model.img[i + '' + index]}\"\r\n (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <img class=\"message-img\" (load)=\"loadImg($event, i, index)\"\r\n [src]=\"attachmentItem.url | secure | async\" />\r\n </a>\r\n </span>\r\n </p>\r\n <div style=\"clear: both\"></div>\r\n <p class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n </div>\r\n <div style=\"clear: both\"></div>\r\n </ng-container>\r\n </ng-container>\r\n <after-view-checked *ngIf=\"model.dataSource.length == i + 1\" (loading)=\"scrollToBottom(0, false, item.sent)\">\r\n </after-view-checked>\r\n</ng-template>\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\"-->\r\n<!-- (onCancel)=\"userPickerForm.show = false\"-->\r\n<!-- (onHide)=\"userPickerForm.show = false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n<!-- <user-picker-box #formBase [control]=\"userPickerControl\"-->\r\n<!-- [(ngModel)]=\"this.peopleAll\" [multiple]=\"userPickerControl.multiple\">-->\r\n<!-- </user-picker-box>-->\r\n<!--</tn-dialog>-->\r\n\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\" (onHide)=\"userPickerForm.show == false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n\r\n<!-- &lt;!&ndash;<quick-add-form *ngIf=\"model.editFormModel.showQuickNoteForm\" [parentContext]=\"context\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; [parentModel]=\"context.data.noteDataModel\"></quick-add-form>&ndash;&gt;-->\r\n<!--</tn-dialog>-->", styles: [".paging-advance{list-style:none;padding-left:0;margin:3px 0}.paging-advance li{width:150px;padding-left:15px;line-height:30}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{cursor:default;background:none}.paging-advance li:hover{cursor:pointer;background:red}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{right:auto;left:1.25em;margin-left:-10}.paging-advance-overlay.ui-overlaypanel-shifted:after{right:auto;left:1.25em;margin-left:-8px}.chat-avatar{height:36px;border:2px solid #eee}\n", "@charset \"UTF-8\";@import\"~@angular/material/prebuilt-themes/indigo-pink.css\";@import\"~jsoneditor/dist/jsoneditor.min.css\";.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-h{justify-content:center}.flex.center-all{align-items:center;justify-content:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap;background-color:#fff}.tn-scroll-bar.bgWhite>div{background-color:#fff}.label-primary{padding:2px;border-radius:.25em;background-color:#1ab394;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-danger{padding:2px 5px;border-radius:.25em;background-color:#ed5565;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-warning{padding:2px;border-radius:.25em;background-color:#b8860b;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-secondary{padding:2px;border-radius:.25em;background-color:#a9a9a9;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-done{padding:2px;border-radius:.25em;background-color:#3b1ef7;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{max-height:calc(100vh - 180px);min-height:80px;overflow-y:hidden;overflow-x:hidden;border:1px solid #eee;border-radius:5px}.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{padding:60px 0 0;overflow:hidden}div.circleButton{line-height:32px;border-radius:50%;width:32px;height:32px;text-align:center;position:relative;display:inline-block;transform:perspective(1px);overflow:hidden;margin-top:4px;margin-bottom:4px}div.circleButton>a{padding:0!important;line-height:32px}div.circleButton>a>i{width:24px!important}div.circleButton:before{content:\"\";position:absolute;top:0;left:0;bottom:0;right:0;background:#e6e6e6;z-index:-1;transform:scale(0);transition:all cubic-bezier(.4,.34,.01,.97) .3s;border-radius:50%}div.circleButton:hover:before{transform:scale(1)}.message-notice{text-align:center;background:#e0e0e0}.message-created-by{font-weight:400;font-size:.82em;color:#888;margin-top:5px;margin-bottom:3px;margin-left:45px}.message-created{font-size:.82em;color:#495057;margin-top:0;margin-bottom:0;display:inline-block}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-right:10px;padding-left:6px}.message-content{margin-top:3px;margin-bottom:6px;line-height:20px;position:relative;color:#000}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{float:left;width:84px;height:84px;margin:8px;position:relative;overflow:hidden;background:#f1f1f1;border-radius:8px;text-align:center;border:1px solid #ccc;box-shadow:1px 2px 3px #0000000f;-webkit-user-select:none;user-select:none}.attachment-list .attachment-item img{width:100%;height:100%}.attachment-list .attachment-item span{position:absolute;top:25px;left:0;padding:5px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{height:120px;width:auto;margin-left:0;float:none}.message-attachment{cursor:pointer;position:relative;font-size:1.5em;margin:0 5px 0 0}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{position:absolute;right:5px;top:5px;cursor:pointer;color:#fff;font-size:20px;background:#495057;border-radius:50%}.attachment-list{position:absolute;bottom:51px;width:calc(100% + 30px);background:#fff;left:-15px;height:100px;display:none;box-shadow:0 -2px 3px -3px #00000036}.attachment-list.attached-file{display:block}.dashboard{margin-top:-5px;margin-bottom:-15px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{white-space:nowrap;color:#555}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{white-space:pre-wrap;text-align:justify;line-height:18px;padding-left:30px}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{position:absolute;left:20px;margin-top:3px}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{display:flex;border:0;text-align:left;margin:0;padding:0}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{line-height:40px;display:inline-block;width:40px;height:100%;text-align:center}.dashboard .chat .new-message .message-emotion i{line-height:inherit;font-size:24px}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{border-radius:2px 20px 20px 2px;background-color:#f0e3fd;border:0}.dashboard .chat ul li.message-from>.middle,.dashboard .chat ul li.message-from>.first{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{margin-left:45px!important;border-radius:2px 20px 20px}.dashboard .chat ul li.message-from>img{margin-top:5px;width:36px;border-radius:50%;position:absolute}.dashboard .chat ul li.message-own>span{border-radius:20px 2px 2px 20px;background-color:#def6f8;border:0;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-right:0;padding-left:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{display:inline-block;cursor:pointer;font-weight:700;color:#555}.dashboard .chat ul li.message-own>div.file{border-radius:6px;background:#f1f1f1;display:inline-block;margin:1px;text-align:right;border:1px solid #e4e4e4;overflow:hidden}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-right:0;padding-left:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{display:inline-block;cursor:pointer;font-weight:700;color:#555}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{border-radius:6px;background:#f1f1f1;display:inline-block;margin:1px;text-align:left;border:1px solid #e4e4e4;overflow:hidden}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;width:220px;transition:width .15s linear;padding:15px;max-width:100%}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;padding:0;margin:0}.visible{visibility:visible;opacity:1;transition:opacity .15s linear}.hidden{visibility:hidden;opacity:0;transition:visibility 0s .1s,opacity .1s linear}.visible2{visibility:visible;opacity:1;transition:opacity .35s linear}.hidden2{visibility:hidden;opacity:0;transition:visibility 0s .3s,opacity .3s linear}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{position:sticky;bottom:6px;text-align:right;padding-right:12px;min-height:40px}.dashboard .chat .scroll-to-bottom span{cursor:pointer;font-size:20px;color:#fff;background:#495057;box-shadow:0 0 10px #00000059;border:2px solid #fff;border-radius:50%;width:35px;height:35px;display:inline-block;line-height:35px;text-align:center;overflow:hidden}.dashboard .chat .group-info{position:sticky;top:0;background:#fff;margin:-10px;box-shadow:0 0 3px -1px #00000036;z-index:99;line-height:30px;padding:5px 10px}.dashboard .chat .pin{position:sticky;top:40px;z-index:98;background:#fff;margin-left:-10px;margin-bottom:10px;width:calc(100% + 20px);box-shadow:0 0 3px -1px #00000036}.dashboard .chat ul li.message-own.pin>span,.dashboard .chat ul li.message-from.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;font-size:11px;cursor:pointer}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{position:absolute;right:-15px;padding:5px}.dashboard .chat .group-info .circleButton{float:right;margin-top:0;margin-bottom:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{outline:none;box-shadow:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml strong,.normalHtml b{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{width:40px;height:40px;margin-top:-6px;border:1px solid #fff;border-radius:50%}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;top:0!important;width:100%!important;left:0!important;max-height:100%;min-width:100%!important;min-height:unset!important}#image-view-list.image-gallery-2{height:calc(100vh - 41px);width:100%;margin:-14px auto 0;background-color:#0006;touch-action:none}#image-view-list.image-gallery-2 .image-container{bottom:0;border:0;height:85%;margin:auto;background-color:transparent}#image-view-list.image-gallery-2 .image-container .iv-snap-view{top:auto;bottom:20px;left:calc(50% - 75px)}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.prev,#image-view-list .material-icons.next{display:none}#image-view-list .options-image-viewer{margin-right:37px;-webkit-user-select:none;user-select:none}.mobile-image-viewer-close{color:#fff;position:absolute;top:0;right:0;height:42px;width:37px;text-align:center;vertical-align:middle;line-height:42px;font-size:x-large;padding-right:7px;padding-top:2px;cursor:pointer}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{padding:8px 30px;text-align:right;width:100%;border-top:1px solid #e8e8e8;left:0;position:absolute;bottom:0;background:#fff;border-radius:0 0 5px 5px}.box-function button{margin-left:5px}.quick-note-button-holder{display:none;position:absolute;bottom:40px;right:50px;height:50px;width:50px;z-index:99}.quick-note-button{display:block;font-size:2em;color:#fff;outline:none;height:50px;width:50px;border-radius:50%;background:#ffc107;box-shadow:0 2px 5px #b9b9b9;line-height:50px;text-align:center;border:2px solid #fff}.quick-note-button:hover{color:#fff}.all-note-button{position:absolute;right:5px;top:5px;display:block;font-size:1.5em;color:#fff;outline:none;height:40px;width:40px;border-radius:50%;background:#ffd24b;box-shadow:0 2px 5px #b9b9b9;line-height:40px;text-align:center;border:2px solid #fff;transition:right;transition-duration:.16s;transition-timing-function:ease-in;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{top:5px;position:absolute;right:5px;display:block;font-size:1.5em;color:#fff;outline:none;height:40px;width:40px;border-radius:50%;background:#ffd24b;box-shadow:0 2px 5px #b9b9b9;line-height:40px;text-align:center;border:2px solid #fff;transition:right;transition-duration:.16s;transition-timing-function:ease-in;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{display:none;position:absolute;bottom:20px;left:20px;width:250px;z-index:98}.pinned-notes{display:block;outline:none;background:transparent;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{font-size:.8rem;box-shadow:1px 2px 3px #b98b06a1;padding:0;margin-bottom:10px;background-color:#fff1ac;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{padding-top:5px;width:25px;height:25px;text-align:center;position:absolute;right:-15px;top:-15px;background:#ffc003;box-shadow:1px 2px 3px #b98b06a1;border-radius:50%;cursor:pointer;color:#fff;border:1px solid #fff;z-index:1}.pinned-note-header-line{position:absolute;left:3px;width:13px;box-shadow:1px 1px 2px #0006;border:1px solid #fff;margin-bottom:.5rem;margin-top:.5rem;height:calc(100% - 1rem);max-height:20px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{opacity:.8;display:none;width:14px;height:14px;float:left;margin-right:2px}.pinned-note-header-button-complete{padding-top:2px;display:none}.pinned-note-body{float:right;width:100%;padding:.5rem .5rem .5rem 25px}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-unpin,.pinned-note-body:hover .pinned-note-header-button-complete{display:block}.pinned-note-line-title{display:block;font-weight:700;padding-bottom:6px;color:#333}.pinned-note-line{display:block}.view-port{position:absolute;display:none;height:0;width:0;background:transparent;z-index:999;box-shadow:0 0 0 9999px #00000096;border-radius:5px}.view-port-mask{position:absolute;display:block;height:100%;width:100%;top:0;left:0;background:transparent;z-index:9998}.tinymce-control{width:100%;border:1px solid #ccc;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;display:none}.input-tab-trap{opacity:0!important;filter:alpha(opacity=0)!important;width:0!important;overflow:hidden!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}video,video:focus,audio,audio:focus{outline:none}.iv-image-view img.iv-image{animation:fadein .5s;visibility:hidden!important}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-top:0;padding-bottom:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{color:#fff;background-color:#007ad9;border:1px solid #007ad9;font-size:14px;transition:background-color .2s,box-shadow .2s;border-radius:3px}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;color:#fff;border-color:#116fbf}body .fc .fc-toolbar .fc-button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.old-content,.fc-axis,.fc-timeGridDay-button,.fc-timeGridWeek-button,.fc-dayGridMonth-button{text-indent:-9999px;line-height:0}.new-content,.fc-axis:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.fc-dayGridMonth-button:after{text-indent:0;display:block;line-height:initial}.fc-dayGridMonth-button:after{content:\"Th\\e1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\\1ea7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\\e0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group p-button,.ui-fluid .button-group button{margin-right:.5em!important;width:auto;text-align:left}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-immediately,.base-status-urgent,.base-status-high,.base-status-medium,.base-status-low,.base-status-ended,.base-status-aborted,.base-status-completed,.base-status-rejected,.base-status-returned,.base-status-approved,.base-status-pending,.base-status-on-conducting,.base-status-on-going,.base-status-create-new{padding:3px;border-radius:.25em;color:#fff;font-size:.8em;text-align:center}.base-status-create-new{color:#666;background-color:#f2f2f2}.base-status-on-going,.base-status-on-conducting{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{color:#666;background-color:#f2f2f2}.base-status-high{background-color:#ffba01}.base-status-urgent,.base-status-immediately{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form tn-mask,.crud-form dropdown{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{position:relative;padding-left:20px;margin-bottom:5px;display:block}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";position:absolute;left:0;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr th,.table-sticky tr td{border:none!important;border-right:1px solid #eee!important;border-bottom:1px solid #eee!important}.table-sticky tr th:first-child,.table-sticky tr td:first-child{border-left:1px solid #eee!important}.table-sticky tr th:last-child,.table-sticky tr td:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid white!important}.table-sticky.fix-height tr:first-child th{position:sticky;top:0;z-index:2}.container-flex{display:flex;align-items:center}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-top:.5em;padding-right:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{position:absolute;left:0;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{display:flex;justify-content:center;align-items:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:initial;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-weight:700;font-family:cursive}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;flex:1 1;display:flex;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{padding-top:.5em;overflow:hidden;position:absolute;left:0;top:0;width:100%;height:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{margin-left:0;max-width:200px;width:100%;height:26px}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{position:absolute;height:100%;width:100%;overflow:auto}.waiting-box{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none}.waiting-box .overlay{background-color:red;background-color:#6d6d6d80;width:100%;height:100%}.waiting-box .content-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:initial}.function-topbar .container-control dropdown{width:100%}*:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.status span,.__status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.p-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-right-arrow-icon,.tn-animated-left-arrow-icon{height:32px;width:14px;position:relative;z-index:10}.tn-animated-right-arrow-icon{animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-right-arrow-icon:before,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-left-arrow-icon:after{content:\"\";position:absolute;background-color:#88b0dd;width:5px;height:20px;display:block}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@keyframes arrowBounceToLeft{0%{transform:translate(-3px)}to{transform:translate(3px)}}@keyframes arrowBounceToRight{0%{transform:translate(3px)}to{transform:translate(-3px)}}.pass{color:#49c949;margin:5px;text-align:center}.not-pass{color:red;margin:5px;text-align:center}\n"], dependencies: [{ kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "tooltipZIndex", "escape", "tooltipDisabled", "pTooltip", "positionStyle", "tooltipStyleClass", "showDelay", "hideDelay", "life"] }, { kind: "component", type: i12.AfterViewCheckedComponent, selector: "after-view-checked", inputs: ["renderKey"], outputs: ["loaded", "loading", "unloading", "reRender"] }, { kind: "component", type: i13.FileViewerComponent, selector: "file-viewer", inputs: ["model", "readonly", "showPrint", "showDownload", "showDelete"], outputs: ["onClose", "onRename", "onDelete"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.DatePipe, name: "date" }, { kind: "pipe", type: i14.SecurePipe, name: "secure" }] });
587
587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: ChatBoxComponent, decorators: [{
588
588
  type: Component,
589
589
  args: [{ selector: 'chat-box', providers: [ComponentContextService, CheckControlVisibleService], template: "<div class=\"dashboard\">\r\n <div class=\"chat\">\r\n <div class=\"group-info\">\r\n <a href=\"javascript:\">C\u00F3 {{peopleAll.length}} ng\u01B0\u1EDDi trong nh\u00F3m n\u00E0y</a>\r\n <div class=\"circleButton\" pTooltip=\"Xem to\u00E0n b\u1ED9 \u0111\u00EDnh k\u00E8m\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"far fa-images\"></i></a>\r\n </div>\r\n <div (click)=\"addPeople()\" class=\"circleButton\" pTooltip=\"Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi v\u00E0o nh\u00F3m\" tooltipPosition=\"top\"\r\n disabled=\"true\">\r\n <a href=\"javascript:\"><i class=\"fas fa-user-plus\"></i></a>\r\n </div>\r\n </div>\r\n <ul #scrollMe [ngClass]=\"{'hasPin': model.pinnedMessage != null}\">\r\n <li *ngIf=\"model.pinnedMessage\" class=\"clearfix pin\" [ngClass]=\"{'message-from': true}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"messageItem; context: { i : -1, item: model.pinnedMessage, isPinnedMessage: true}\">\r\n </ng-container>\r\n </li>\r\n <li *ngFor=\"let item of model.dataSource; let i = index; trackBy: trackByFunc\" class=\"clearfix\"\r\n [ngClass]=\"{ 'message-own': item.type == 'own'}\">\r\n <ng-container *ngTemplateOutlet=\"messageItem; context: { i : i, item: item}\">\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <!-- <chat-send-message-box *ngIf=\"showSendMessageBox\"></chat-send-message-box>-->\r\n <div [ngClass]=\"{'visible2': model.scrolling, 'hidden2': !model.scrolling}\" class=\"scroll-to-bottom\">\r\n <span *ngIf=\"model.newMessageNotUpdatedCount > 0\" (click)=\"scrollToBottom(350, true, null)\">\r\n {{model.newMessageNotUpdatedCount <= 5 ? model.newMessageNotUpdatedCount : '5+' }} </span>\r\n <span (click)=\"scrollToBottom(350, true, null)\" *ngIf=\"model.newMessageNotUpdatedCount == 0\">\r\n <i class=\"fas fa-chevron-down\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<file-viewer *ngIf=\"fileViewerModel.showEditForm\" [parentContext]=\"context\" [parentModel]=\"model\"\r\n [model]=\"fileViewerModel\">\r\n</file-viewer>\r\n\r\n<ng-template #messageItem let-i=\"i\" let-isPinnedMessage=\"isPinnedMessage\" let-item=\"item\">\r\n <img *ngIf=\"item.isFirstMessageFlow && item.type != 'own' && !isPinnedMessage && item.avatar != null\" alt=\"\"\r\n class=\"chat-avatar\" src=\"{{getCurrentUserAvatar(item.avatar)}}\">\r\n <p *ngIf=\"(item.isFirstMessageFlow && item.type != 'own') && !isPinnedMessage\" class=\"message-created-by\">\r\n {{item.fullName}}\r\n </p>\r\n <span *ngIf=\"!hasAttachment(item)\">\r\n <!-- [class]=\"addClassToMessage(item, isPinnedMessage)\">-->\r\n <p *ngIf=\"!hasAttachment(item)\" class=\"message-content\">\r\n <i (click)=\"pinMessage(item)\" class=\"fas fa-thumbtack\" style=\"right: 0;\"></i>\r\n <i (click)=\"quickNote(item)\" class=\"fas fa-sticky-note\"></i>\r\n {{item.content}}\r\n </p>\r\n <p *ngIf=\"!isPinnedMessage && (item.isLastMessageFlow || !inTheSameTime(i, item, model.dataSource))\"\r\n class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n <p *ngIf=\"isPinnedMessage\" class=\"message-created\">\r\n {{item.createdBy}} \u0111\u00E3 g\u1EEDi l\u00FAc {{item.created | date:'dd/MM/yyyy HH:mm'}}\r\n </p>\r\n </span>\r\n <ng-container *ngIf=\"hasAttachment(item)\">\r\n <ng-container *ngFor=\"let attachmentItem of item.attachments;let index=index\">\r\n <div class=\"file\"\r\n [ngClass]=\"{'first':item.isFirstMessageFlow && index == 0, 'middle':index > 0 || !item.isFirstMessageFlow, 'image' : attachmentItem.type == 'image'}\"\r\n [ngStyle]=\"{'width': model.img[i + 'width' + index]}\">\r\n <p class=\"attachment\">\r\n <span (mouseup)=\"onMouseUp($event)\" class=\"attachment-item\">\r\n <a *ngIf=\"attachmentItem.type != 'image'\" (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <i class=\"fas fa-paperclip\"></i>{{attachmentItem.fileName}}\r\n </a>\r\n <a *ngIf=\"attachmentItem.type == 'image'\" #aElement\r\n [ngClass]=\"{'hidden': !model.img[i + '' + index], 'visible':model.img[i + '' + index]}\"\r\n (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <img class=\"message-img\" (load)=\"loadImg($event, i, index)\"\r\n [src]=\"attachmentItem.url | secure | async\" />\r\n </a>\r\n </span>\r\n </p>\r\n <div style=\"clear: both\"></div>\r\n <p class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n </div>\r\n <div style=\"clear: both\"></div>\r\n </ng-container>\r\n </ng-container>\r\n <after-view-checked *ngIf=\"model.dataSource.length == i + 1\" (loading)=\"scrollToBottom(0, false, item.sent)\">\r\n </after-view-checked>\r\n</ng-template>\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\"-->\r\n<!-- (onCancel)=\"userPickerForm.show = false\"-->\r\n<!-- (onHide)=\"userPickerForm.show = false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n<!-- <user-picker-box #formBase [control]=\"userPickerControl\"-->\r\n<!-- [(ngModel)]=\"this.peopleAll\" [multiple]=\"userPickerControl.multiple\">-->\r\n<!-- </user-picker-box>-->\r\n<!--</tn-dialog>-->\r\n\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\" (onHide)=\"userPickerForm.show == false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n\r\n<!-- &lt;!&ndash;<quick-add-form *ngIf=\"model.editFormModel.showQuickNoteForm\" [parentContext]=\"context\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; [parentModel]=\"context.data.noteDataModel\"></quick-add-form>&ndash;&gt;-->\r\n<!--</tn-dialog>-->", styles: [".paging-advance{list-style:none;padding-left:0;margin:3px 0}.paging-advance li{width:150px;padding-left:15px;line-height:30}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{cursor:default;background:none}.paging-advance li:hover{cursor:pointer;background:red}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{right:auto;left:1.25em;margin-left:-10}.paging-advance-overlay.ui-overlaypanel-shifted:after{right:auto;left:1.25em;margin-left:-8px}.chat-avatar{height:36px;border:2px solid #eee}\n", "@charset \"UTF-8\";@import\"~@angular/material/prebuilt-themes/indigo-pink.css\";@import\"~jsoneditor/dist/jsoneditor.min.css\";.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-h{justify-content:center}.flex.center-all{align-items:center;justify-content:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap;background-color:#fff}.tn-scroll-bar.bgWhite>div{background-color:#fff}.label-primary{padding:2px;border-radius:.25em;background-color:#1ab394;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-danger{padding:2px 5px;border-radius:.25em;background-color:#ed5565;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-warning{padding:2px;border-radius:.25em;background-color:#b8860b;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-secondary{padding:2px;border-radius:.25em;background-color:#a9a9a9;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.label-done{padding:2px;border-radius:.25em;background-color:#3b1ef7;color:#fff;font-size:12px;margin-right:3px;margin-left:3px;min-width:60px;display:inline-block}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{max-height:calc(100vh - 180px);min-height:80px;overflow-y:hidden;overflow-x:hidden;border:1px solid #eee;border-radius:5px}.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{padding:60px 0 0;overflow:hidden}div.circleButton{line-height:32px;border-radius:50%;width:32px;height:32px;text-align:center;position:relative;display:inline-block;transform:perspective(1px);overflow:hidden;margin-top:4px;margin-bottom:4px}div.circleButton>a{padding:0!important;line-height:32px}div.circleButton>a>i{width:24px!important}div.circleButton:before{content:\"\";position:absolute;top:0;left:0;bottom:0;right:0;background:#e6e6e6;z-index:-1;transform:scale(0);transition:all cubic-bezier(.4,.34,.01,.97) .3s;border-radius:50%}div.circleButton:hover:before{transform:scale(1)}.message-notice{text-align:center;background:#e0e0e0}.message-created-by{font-weight:400;font-size:.82em;color:#888;margin-top:5px;margin-bottom:3px;margin-left:45px}.message-created{font-size:.82em;color:#495057;margin-top:0;margin-bottom:0;display:inline-block}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-right:10px;padding-left:6px}.message-content{margin-top:3px;margin-bottom:6px;line-height:20px;position:relative;color:#000}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{float:left;width:84px;height:84px;margin:8px;position:relative;overflow:hidden;background:#f1f1f1;border-radius:8px;text-align:center;border:1px solid #ccc;box-shadow:1px 2px 3px #0000000f;-webkit-user-select:none;user-select:none}.attachment-list .attachment-item img{width:100%;height:100%}.attachment-list .attachment-item span{position:absolute;top:25px;left:0;padding:5px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{height:120px;width:auto;margin-left:0;float:none}.message-attachment{cursor:pointer;position:relative;font-size:1.5em;margin:0 5px 0 0}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{position:absolute;right:5px;top:5px;cursor:pointer;color:#fff;font-size:20px;background:#495057;border-radius:50%}.attachment-list{position:absolute;bottom:51px;width:calc(100% + 30px);background:#fff;left:-15px;height:100px;display:none;box-shadow:0 -2px 3px -3px #00000036}.attachment-list.attached-file{display:block}.dashboard{margin-top:-5px;margin-bottom:-15px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{white-space:nowrap;color:#555}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{white-space:pre-wrap;text-align:justify;line-height:18px;padding-left:30px}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{position:absolute;left:20px;margin-top:3px}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{display:flex;border:0;text-align:left;margin:0;padding:0}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{line-height:40px;display:inline-block;width:40px;height:100%;text-align:center}.dashboard .chat .new-message .message-emotion i{line-height:inherit;font-size:24px}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{border-radius:2px 20px 20px 2px;background-color:#f0e3fd;border:0}.dashboard .chat ul li.message-from>.middle,.dashboard .chat ul li.message-from>.first{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{margin-left:45px!important;border-radius:2px 20px 20px}.dashboard .chat ul li.message-from>img{margin-top:5px;width:36px;border-radius:50%;position:absolute}.dashboard .chat ul li.message-own>span{border-radius:20px 2px 2px 20px;background-color:#def6f8;border:0;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-right:0;padding-left:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{display:inline-block;cursor:pointer;font-weight:700;color:#555}.dashboard .chat ul li.message-own>div.file{border-radius:6px;background:#f1f1f1;display:inline-block;margin:1px;text-align:right;border:1px solid #e4e4e4;overflow:hidden}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-right:0;padding-left:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{display:inline-block;cursor:pointer;font-weight:700;color:#555}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{border-radius:6px;background:#f1f1f1;display:inline-block;margin:1px;text-align:left;border:1px solid #e4e4e4;overflow:hidden}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;width:220px;transition:width .15s linear;padding:15px;max-width:100%}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;padding:0;margin:0}.visible{visibility:visible;opacity:1;transition:opacity .15s linear}.hidden{visibility:hidden;opacity:0;transition:visibility 0s .1s,opacity .1s linear}.visible2{visibility:visible;opacity:1;transition:opacity .35s linear}.hidden2{visibility:hidden;opacity:0;transition:visibility 0s .3s,opacity .3s linear}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{position:sticky;bottom:6px;text-align:right;padding-right:12px;min-height:40px}.dashboard .chat .scroll-to-bottom span{cursor:pointer;font-size:20px;color:#fff;background:#495057;box-shadow:0 0 10px #00000059;border:2px solid #fff;border-radius:50%;width:35px;height:35px;display:inline-block;line-height:35px;text-align:center;overflow:hidden}.dashboard .chat .group-info{position:sticky;top:0;background:#fff;margin:-10px;box-shadow:0 0 3px -1px #00000036;z-index:99;line-height:30px;padding:5px 10px}.dashboard .chat .pin{position:sticky;top:40px;z-index:98;background:#fff;margin-left:-10px;margin-bottom:10px;width:calc(100% + 20px);box-shadow:0 0 3px -1px #00000036}.dashboard .chat ul li.message-own.pin>span,.dashboard .chat ul li.message-from.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;font-size:11px;cursor:pointer}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{position:absolute;right:-15px;padding:5px}.dashboard .chat .group-info .circleButton{float:right;margin-top:0;margin-bottom:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{outline:none;box-shadow:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml strong,.normalHtml b{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{width:40px;height:40px;margin-top:-6px;border:1px solid #fff;border-radius:50%}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;top:0!important;width:100%!important;left:0!important;max-height:100%;min-width:100%!important;min-height:unset!important}#image-view-list.image-gallery-2{height:calc(100vh - 41px);width:100%;margin:-14px auto 0;background-color:#0006;touch-action:none}#image-view-list.image-gallery-2 .image-container{bottom:0;border:0;height:85%;margin:auto;background-color:transparent}#image-view-list.image-gallery-2 .image-container .iv-snap-view{top:auto;bottom:20px;left:calc(50% - 75px)}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.prev,#image-view-list .material-icons.next{display:none}#image-view-list .options-image-viewer{margin-right:37px;-webkit-user-select:none;user-select:none}.mobile-image-viewer-close{color:#fff;position:absolute;top:0;right:0;height:42px;width:37px;text-align:center;vertical-align:middle;line-height:42px;font-size:x-large;padding-right:7px;padding-top:2px;cursor:pointer}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{padding:8px 30px;text-align:right;width:100%;border-top:1px solid #e8e8e8;left:0;position:absolute;bottom:0;background:#fff;border-radius:0 0 5px 5px}.box-function button{margin-left:5px}.quick-note-button-holder{display:none;position:absolute;bottom:40px;right:50px;height:50px;width:50px;z-index:99}.quick-note-button{display:block;font-size:2em;color:#fff;outline:none;height:50px;width:50px;border-radius:50%;background:#ffc107;box-shadow:0 2px 5px #b9b9b9;line-height:50px;text-align:center;border:2px solid #fff}.quick-note-button:hover{color:#fff}.all-note-button{position:absolute;right:5px;top:5px;display:block;font-size:1.5em;color:#fff;outline:none;height:40px;width:40px;border-radius:50%;background:#ffd24b;box-shadow:0 2px 5px #b9b9b9;line-height:40px;text-align:center;border:2px solid #fff;transition:right;transition-duration:.16s;transition-timing-function:ease-in;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{top:5px;position:absolute;right:5px;display:block;font-size:1.5em;color:#fff;outline:none;height:40px;width:40px;border-radius:50%;background:#ffd24b;box-shadow:0 2px 5px #b9b9b9;line-height:40px;text-align:center;border:2px solid #fff;transition:right;transition-duration:.16s;transition-timing-function:ease-in;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{display:none;position:absolute;bottom:20px;left:20px;width:250px;z-index:98}.pinned-notes{display:block;outline:none;background:transparent;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{font-size:.8rem;box-shadow:1px 2px 3px #b98b06a1;padding:0;margin-bottom:10px;background-color:#fff1ac;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{padding-top:5px;width:25px;height:25px;text-align:center;position:absolute;right:-15px;top:-15px;background:#ffc003;box-shadow:1px 2px 3px #b98b06a1;border-radius:50%;cursor:pointer;color:#fff;border:1px solid #fff;z-index:1}.pinned-note-header-line{position:absolute;left:3px;width:13px;box-shadow:1px 1px 2px #0006;border:1px solid #fff;margin-bottom:.5rem;margin-top:.5rem;height:calc(100% - 1rem);max-height:20px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{opacity:.8;display:none;width:14px;height:14px;float:left;margin-right:2px}.pinned-note-header-button-complete{padding-top:2px;display:none}.pinned-note-body{float:right;width:100%;padding:.5rem .5rem .5rem 25px}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-unpin,.pinned-note-body:hover .pinned-note-header-button-complete{display:block}.pinned-note-line-title{display:block;font-weight:700;padding-bottom:6px;color:#333}.pinned-note-line{display:block}.view-port{position:absolute;display:none;height:0;width:0;background:transparent;z-index:999;box-shadow:0 0 0 9999px #00000096;border-radius:5px}.view-port-mask{position:absolute;display:block;height:100%;width:100%;top:0;left:0;background:transparent;z-index:9998}.tinymce-control{width:100%;border:1px solid #ccc;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;display:none}.input-tab-trap{opacity:0!important;filter:alpha(opacity=0)!important;width:0!important;overflow:hidden!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}video,video:focus,audio,audio:focus{outline:none}.iv-image-view img.iv-image{animation:fadein .5s;visibility:hidden!important}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-top:0;padding-bottom:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{color:#fff;background-color:#007ad9;border:1px solid #007ad9;font-size:14px;transition:background-color .2s,box-shadow .2s;border-radius:3px}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;color:#fff;border-color:#116fbf}body .fc .fc-toolbar .fc-button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.old-content,.fc-axis,.fc-timeGridDay-button,.fc-timeGridWeek-button,.fc-dayGridMonth-button{text-indent:-9999px;line-height:0}.new-content,.fc-axis:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.fc-dayGridMonth-button:after{text-indent:0;display:block;line-height:initial}.fc-dayGridMonth-button:after{content:\"Th\\e1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\\1ea7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\\e0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group p-button,.ui-fluid .button-group button{margin-right:.5em!important;width:auto;text-align:left}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-immediately,.base-status-urgent,.base-status-high,.base-status-medium,.base-status-low,.base-status-ended,.base-status-aborted,.base-status-completed,.base-status-rejected,.base-status-returned,.base-status-approved,.base-status-pending,.base-status-on-conducting,.base-status-on-going,.base-status-create-new{padding:3px;border-radius:.25em;color:#fff;font-size:.8em;text-align:center}.base-status-create-new{color:#666;background-color:#f2f2f2}.base-status-on-going,.base-status-on-conducting{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{color:#666;background-color:#f2f2f2}.base-status-high{background-color:#ffba01}.base-status-urgent,.base-status-immediately{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form tn-mask,.crud-form dropdown{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{position:relative;padding-left:20px;margin-bottom:5px;display:block}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";position:absolute;left:0;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr th,.table-sticky tr td{border:none!important;border-right:1px solid #eee!important;border-bottom:1px solid #eee!important}.table-sticky tr th:first-child,.table-sticky tr td:first-child{border-left:1px solid #eee!important}.table-sticky tr th:last-child,.table-sticky tr td:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid white!important}.table-sticky.fix-height tr:first-child th{position:sticky;top:0;z-index:2}.container-flex{display:flex;align-items:center}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-top:.5em;padding-right:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{position:absolute;left:0;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{display:flex;justify-content:center;align-items:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:initial;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-weight:700;font-family:cursive}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;flex:1 1;display:flex;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{padding-top:.5em;overflow:hidden;position:absolute;left:0;top:0;width:100%;height:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{margin-left:0;max-width:200px;width:100%;height:26px}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{position:absolute;height:100%;width:100%;overflow:auto}.waiting-box{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:none}.waiting-box .overlay{background-color:red;background-color:#6d6d6d80;width:100%;height:100%}.waiting-box .content-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:initial}.function-topbar .container-control dropdown{width:100%}*:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.status span,.__status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.p-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.p-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-right-arrow-icon,.tn-animated-left-arrow-icon{height:32px;width:14px;position:relative;z-index:10}.tn-animated-right-arrow-icon{animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-right-arrow-icon:before,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-left-arrow-icon:after{content:\"\";position:absolute;background-color:#88b0dd;width:5px;height:20px;display:block}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@keyframes arrowBounceToLeft{0%{transform:translate(-3px)}to{transform:translate(3px)}}@keyframes arrowBounceToRight{0%{transform:translate(3px)}to{transform:translate(-3px)}}.pass{color:#49c949;margin:5px;text-align:center}.not-pass{color:red;margin:5px;text-align:center}\n"] }]