@idea-ionic/uncommon 8.5.13 → 8.6.0-beta.1

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 (57) hide show
  1. package/fesm2022/idea-ionic-uncommon.mjs +85 -85
  2. package/fesm2022/idea-ionic-uncommon.mjs.map +1 -1
  3. package/index.d.ts +1405 -3
  4. package/package.json +12 -13
  5. package/esm2022/idea-ionic-uncommon.mjs +0 -5
  6. package/esm2022/public-api.mjs +0 -26
  7. package/esm2022/src/AWSAPI.service.mjs +0 -431
  8. package/esm2022/src/AWSAPISocket.service.mjs +0 -188
  9. package/esm2022/src/address/address.component.mjs +0 -409
  10. package/esm2022/src/announcement/announcement.component.mjs +0 -72
  11. package/esm2022/src/cachedResources.service.mjs +0 -55
  12. package/esm2022/src/colors/colorPicker.component.mjs +0 -191
  13. package/esm2022/src/contacts/contacts.component.mjs +0 -188
  14. package/esm2022/src/dateTime/calendarPicker.component.mjs +0 -213
  15. package/esm2022/src/dateTime/dateTime.component.mjs +0 -217
  16. package/esm2022/src/duration/duration.component.mjs +0 -195
  17. package/esm2022/src/echo/echo.page.mjs +0 -233
  18. package/esm2022/src/echo/echo.routes.mjs +0 -6
  19. package/esm2022/src/errorReporting.service.mjs +0 -69
  20. package/esm2022/src/mde/mde.component.mjs +0 -143
  21. package/esm2022/src/mde/mdeToolbar.component.mjs +0 -25
  22. package/esm2022/src/offline/cacheableResource.component.mjs +0 -56
  23. package/esm2022/src/offline/offline.service.mjs +0 -63
  24. package/esm2022/src/offline/offlineData.service.mjs +0 -480
  25. package/esm2022/src/offline/offlineIndicator.component.mjs +0 -105
  26. package/esm2022/src/offline/offlineManager.component.mjs +0 -101
  27. package/esm2022/src/pushNotifications.service.mjs +0 -57
  28. package/esm2022/src/sentiment/sentiment.component.mjs +0 -112
  29. package/esm2022/src/timeInterval/fromTimeToTime.component.mjs +0 -171
  30. package/esm2022/src/timeInterval/timeInterval.component.mjs +0 -206
  31. package/esm2022/src/tinCan.service.mjs +0 -49
  32. package/public-api.d.ts +0 -25
  33. package/src/AWSAPI.service.d.ts +0 -178
  34. package/src/AWSAPISocket.service.d.ts +0 -129
  35. package/src/address/address.component.d.ts +0 -64
  36. package/src/announcement/announcement.component.d.ts +0 -23
  37. package/src/cachedResources.service.d.ts +0 -34
  38. package/src/colors/colorPicker.component.d.ts +0 -78
  39. package/src/contacts/contacts.component.d.ts +0 -31
  40. package/src/dateTime/calendarPicker.component.d.ts +0 -45
  41. package/src/dateTime/dateTime.component.d.ts +0 -81
  42. package/src/duration/duration.component.d.ts +0 -68
  43. package/src/echo/echo.page.d.ts +0 -34
  44. package/src/echo/echo.routes.d.ts +0 -2
  45. package/src/errorReporting.service.d.ts +0 -26
  46. package/src/mde/mde.component.d.ts +0 -39
  47. package/src/mde/mdeToolbar.component.d.ts +0 -5
  48. package/src/offline/cacheableResource.component.d.ts +0 -11
  49. package/src/offline/offline.service.d.ts +0 -39
  50. package/src/offline/offlineData.service.d.ts +0 -281
  51. package/src/offline/offlineIndicator.component.d.ts +0 -25
  52. package/src/offline/offlineManager.component.d.ts +0 -17
  53. package/src/pushNotifications.service.d.ts +0 -26
  54. package/src/sentiment/sentiment.component.d.ts +0 -35
  55. package/src/timeInterval/fromTimeToTime.component.d.ts +0 -61
  56. package/src/timeInterval/timeInterval.component.d.ts +0 -84
  57. package/src/tinCan.service.d.ts +0 -31
@@ -1,105 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, Input, inject } from '@angular/core';
3
- import { ModalController, AlertController, Platform, IonFab, IonFabButton, IonIcon } from '@ionic/angular/standalone';
4
- import { IDEATranslationsService } from '@idea-ionic/common';
5
- import { IDEAOfflineManagerComponent } from './offlineManager.component';
6
- import { IDEAOfflineDataService } from './offlineData.service';
7
- import * as i0 from "@angular/core";
8
- export class IDEAOfflineIndicatorComponent {
9
- constructor() {
10
- this._alert = inject(AlertController);
11
- this._modal = inject(ModalController);
12
- this._translate = inject(IDEATranslationsService);
13
- this._platform = inject(Platform);
14
- this._offline = inject(IDEAOfflineDataService);
15
- /**
16
- * Vertical position.
17
- */
18
- this.vertical = 'bottom';
19
- /**
20
- * Horizontal position.
21
- */
22
- this.horizontal = 'start';
23
- /**
24
- * Whether it is positionated on an edge.
25
- */
26
- this.edge = false;
27
- }
28
- async showStatus() {
29
- if (this._offline.isOffline()) {
30
- const isOnline = await this._offline.check();
31
- if (!isOnline) {
32
- const alert = await this._alert.create({
33
- header: this._translate._('IDEA_UNCOMMON.OFFLINE.YOU_ARE_OFFLINE'),
34
- message: this._translate._('IDEA_UNCOMMON.OFFLINE.FEATURES_REDUCED_CONTENTS_NOT_UP_TO_DATE'),
35
- buttons: [this._translate._('COMMON.GOT_IT')]
36
- });
37
- alert.present();
38
- }
39
- }
40
- else if (this._offline.isAllowed()) {
41
- const modal = await this._modal.create({ component: IDEAOfflineManagerComponent });
42
- modal.present();
43
- }
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAOfflineIndicatorComponent, isStandalone: true, selector: "idea-offline-indicator", inputs: { vertical: "vertical", horizontal: "horizontal", edge: "edge" }, ngImport: i0, template: `
47
- @if (
48
- _platform.is('mobile') && (_offline.isOffline() || _offline.synchronizing || _offline.requiresManualConfirmation)
49
- ) {
50
- <ion-fab [vertical]="vertical" [horizontal]="horizontal" [edge]="edge">
51
- <ion-fab-button color="dark" size="small" (click)="showStatus()">
52
- <!-- OFFLINE -->
53
- @if (_offline.isOffline()) {
54
- <ion-icon name="airplane" />
55
- }
56
- <!-- SYNCHRONISING -->
57
- @if (_offline.isOnline() && _offline.synchronizing) {
58
- <ion-icon name="sync" />
59
- }
60
- <!-- NEED MANAL SYNCHRONISATION -->
61
- @if (_offline.isOnline() && _offline.requiresManualConfirmation) {
62
- <ion-icon name="pause" />
63
- }
64
- </ion-fab-button>
65
- </ion-fab>
66
- }
67
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonFab, selector: "ion-fab", inputs: ["activated", "edge", "horizontal", "vertical"] }, { kind: "component", type: IonFabButton, selector: "ion-fab-button", inputs: ["activated", "closeIcon", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "show", "size", "target", "translucent", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineIndicatorComponent, decorators: [{
70
- type: Component,
71
- args: [{
72
- selector: 'idea-offline-indicator',
73
- standalone: true,
74
- imports: [CommonModule, IonFab, IonFabButton, IonIcon],
75
- template: `
76
- @if (
77
- _platform.is('mobile') && (_offline.isOffline() || _offline.synchronizing || _offline.requiresManualConfirmation)
78
- ) {
79
- <ion-fab [vertical]="vertical" [horizontal]="horizontal" [edge]="edge">
80
- <ion-fab-button color="dark" size="small" (click)="showStatus()">
81
- <!-- OFFLINE -->
82
- @if (_offline.isOffline()) {
83
- <ion-icon name="airplane" />
84
- }
85
- <!-- SYNCHRONISING -->
86
- @if (_offline.isOnline() && _offline.synchronizing) {
87
- <ion-icon name="sync" />
88
- }
89
- <!-- NEED MANAL SYNCHRONISATION -->
90
- @if (_offline.isOnline() && _offline.requiresManualConfirmation) {
91
- <ion-icon name="pause" />
92
- }
93
- </ion-fab-button>
94
- </ion-fab>
95
- }
96
- `
97
- }]
98
- }], propDecorators: { vertical: [{
99
- type: Input
100
- }], horizontal: [{
101
- type: Input
102
- }], edge: [{
103
- type: Input
104
- }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZUluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9vZmZsaW5lL29mZmxpbmVJbmRpY2F0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBNkIvRCxNQUFNLE9BQU8sNkJBQTZCO0lBM0IxQztRQTRCVSxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3JELGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTFDOztXQUVHO1FBQ00sYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUM3Qjs7V0FFRztRQUNNLGVBQVUsR0FBRyxPQUFPLENBQUM7UUFDOUI7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFDO0tBa0J2QjtJQWhCQyxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDO29CQUNsRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFLENBQUM7b0JBQzVGLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUM5QyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxDQUFDLENBQUM7WUFDbkYsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDOzhHQW5DVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qiw0SkF2QjlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQsMkRBdEJTLFlBQVksK0JBQUUsTUFBTSw2R0FBRSxZQUFZLDhPQUFFLE9BQU87OzJGQXdCMUMsNkJBQTZCO2tCQTNCekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO29CQUN0RCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVDtpQkFDRjs4QkFXVSxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBBbGVydENvbnRyb2xsZXIsIFBsYXRmb3JtLCBJb25GYWIsIElvbkZhYkJ1dHRvbiwgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBT2ZmbGluZU1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuL29mZmxpbmVNYW5hZ2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJREVBT2ZmbGluZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi9vZmZsaW5lRGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1vZmZsaW5lLWluZGljYXRvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkZhYiwgSW9uRmFiQnV0dG9uLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKFxuICAgICAgX3BsYXRmb3JtLmlzKCdtb2JpbGUnKSAmJiAoX29mZmxpbmUuaXNPZmZsaW5lKCkgfHwgX29mZmxpbmUuc3luY2hyb25pemluZyB8fCBfb2ZmbGluZS5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbilcbiAgICApIHtcbiAgICAgIDxpb24tZmFiIFt2ZXJ0aWNhbF09XCJ2ZXJ0aWNhbFwiIFtob3Jpem9udGFsXT1cImhvcml6b250YWxcIiBbZWRnZV09XCJlZGdlXCI+XG4gICAgICAgIDxpb24tZmFiLWJ1dHRvbiBjb2xvcj1cImRhcmtcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwic2hvd1N0YXR1cygpXCI+XG4gICAgICAgICAgPCEtLSBPRkZMSU5FIC0tPlxuICAgICAgICAgIEBpZiAoX29mZmxpbmUuaXNPZmZsaW5lKCkpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYWlycGxhbmVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8IS0tIFNZTkNIUk9OSVNJTkcgLS0+XG4gICAgICAgICAgQGlmIChfb2ZmbGluZS5pc09ubGluZSgpICYmIF9vZmZsaW5lLnN5bmNocm9uaXppbmcpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic3luY1wiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIDwhLS0gTkVFRCBNQU5BTCBTWU5DSFJPTklTQVRJT04gLS0+XG4gICAgICAgICAgQGlmIChfb2ZmbGluZS5pc09ubGluZSgpICYmIF9vZmZsaW5lLnJlcXVpcmVzTWFudWFsQ29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBhdXNlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWZhYi1idXR0b24+XG4gICAgICA8L2lvbi1mYWI+XG4gICAgfVxuICBgXG59KVxuZXhwb3J0IGNsYXNzIElERUFPZmZsaW5lSW5kaWNhdG9yQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfYWxlcnQgPSBpbmplY3QoQWxlcnRDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcbiAgX3BsYXRmb3JtID0gaW5qZWN0KFBsYXRmb3JtKTtcbiAgX29mZmxpbmUgPSBpbmplY3QoSURFQU9mZmxpbmVEYXRhU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFZlcnRpY2FsIHBvc2l0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgdmVydGljYWwgPSAnYm90dG9tJztcbiAgLyoqXG4gICAqIEhvcml6b250YWwgcG9zaXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBob3Jpem9udGFsID0gJ3N0YXJ0JztcbiAgLyoqXG4gICAqIFdoZXRoZXIgaXQgaXMgcG9zaXRpb25hdGVkIG9uIGFuIGVkZ2UuXG4gICAqL1xuICBASW5wdXQoKSBlZGdlID0gZmFsc2U7XG5cbiAgYXN5bmMgc2hvd1N0YXR1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fb2ZmbGluZS5pc09mZmxpbmUoKSkge1xuICAgICAgY29uc3QgaXNPbmxpbmUgPSBhd2FpdCB0aGlzLl9vZmZsaW5lLmNoZWNrKCk7XG4gICAgICBpZiAoIWlzT25saW5lKSB7XG4gICAgICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5fYWxlcnQuY3JlYXRlKHtcbiAgICAgICAgICBoZWFkZXI6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuWU9VX0FSRV9PRkZMSU5FJyksXG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5GRUFUVVJFU19SRURVQ0VEX0NPTlRFTlRTX05PVF9VUF9UT19EQVRFJyksXG4gICAgICAgICAgYnV0dG9uczogW3RoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uR09UX0lUJyldXG4gICAgICAgIH0pO1xuICAgICAgICBhbGVydC5wcmVzZW50KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLl9vZmZsaW5lLmlzQWxsb3dlZCgpKSB7XG4gICAgICBjb25zdCBtb2RhbCA9IGF3YWl0IHRoaXMuX21vZGFsLmNyZWF0ZSh7IGNvbXBvbmVudDogSURFQU9mZmxpbmVNYW5hZ2VyQ29tcG9uZW50IH0pO1xuICAgICAgbW9kYWwucHJlc2VudCgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,101 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, inject } from '@angular/core';
3
- import { ModalController, AlertController, IonHeader, IonToolbar, IonButton, IonIcon, IonButtons, IonTitle, IonContent, IonList, IonListHeader, IonLabel, IonText, IonItem, IonSpinner } from '@ionic/angular/standalone';
4
- import { Browser } from '@capacitor/browser';
5
- import { IDEAActionSheetController, IDEALocalizedDatePipe, IDEATranslatePipe, IDEATranslationsService } from '@idea-ionic/common';
6
- import { IDEAOfflineDataService } from './offlineData.service';
7
- import { IDEACacheableResourceComponent } from './cacheableResource.component';
8
- import * as i0 from "@angular/core";
9
- export class IDEAOfflineManagerComponent {
10
- constructor() {
11
- this._modal = inject(ModalController);
12
- this._alert = inject(AlertController);
13
- this._actions = inject(IDEAActionSheetController);
14
- this._translate = inject(IDEATranslationsService);
15
- this._offline = inject(IDEAOfflineDataService);
16
- }
17
- async sync() {
18
- const alert = await this._alert.create({
19
- header: this._translate._('IDEA_UNCOMMON.OFFLINE.SYNC_NOW'),
20
- message: this._translate._('IDEA_UNCOMMON.OFFLINE.DONT_EXIT_APP_DISCLAIMER'),
21
- buttons: [
22
- { text: this._translate._('COMMON.CANCEL') },
23
- { text: this._translate._('COMMON.GOT_IT'), handler: () => this._offline.synchronize(true) }
24
- ]
25
- });
26
- alert.present();
27
- }
28
- async deleteRequest(request) {
29
- const alert = await this._alert.create({
30
- header: this._translate._('COMMON.ARE_YOU_SURE'),
31
- message: this._translate._('IDEA_UNCOMMON.OFFLINE.DELETION_IS_IRREVERSIBLE'),
32
- buttons: [
33
- { text: this._translate._('COMMON.CANCEL') },
34
- {
35
- text: this._translate._('COMMON.CONFIRM'),
36
- handler: () => this._offline.deleteRequest(request)
37
- }
38
- ]
39
- });
40
- alert.present();
41
- }
42
- downloadRequestLog(request) {
43
- const dataURL = window.URL.createObjectURL(new Blob([JSON.stringify(request)], { type: 'text/json' }));
44
- Browser.open({ url: dataURL });
45
- }
46
- async actions() {
47
- const buttons = [
48
- {
49
- text: this._translate._('IDEA_UNCOMMON.OFFLINE.FORCE_FULL_SYNC'),
50
- icon: 'sync',
51
- handler: () => this.forceFullSync()
52
- },
53
- { text: this._translate._('COMMON.CANCEL'), role: 'cancel', icon: 'arrow-undo' }
54
- ];
55
- const actions = await this._actions.create({
56
- header: this._translate._('IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS'),
57
- buttons
58
- });
59
- actions.present();
60
- }
61
- async forceFullSync() {
62
- const alert = await this._alert.create({
63
- header: this._translate._('IDEA_UNCOMMON.OFFLINE.FORCE_FULL_SYNC'),
64
- subHeader: this._translate._('COMMON.ARE_YOU_SURE'),
65
- message: this._translate._('IDEA_UNCOMMON.OFFLINE.FULL_SYNC_DISCLAIMER'),
66
- buttons: [
67
- { text: this._translate._('COMMON.CANCEL'), role: 'cancel' },
68
- { text: this._translate._('COMMON.CONFIRM'), handler: () => this._offline.forceFullSync() }
69
- ]
70
- });
71
- alert.present();
72
- }
73
- close() {
74
- this._modal.dismiss();
75
- }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAOfflineManagerComponent, isStandalone: true, selector: "idea-offline-manager", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: IDEALocalizedDatePipe, name: "dateLocale" }, { kind: "component", type: IDEACacheableResourceComponent, selector: "idea-cacheable-resource", inputs: ["resource"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }] }); }
78
- }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineManagerComponent, decorators: [{
80
- type: Component,
81
- args: [{ selector: 'idea-offline-manager', standalone: true, imports: [
82
- CommonModule,
83
- IDEATranslatePipe,
84
- IDEALocalizedDatePipe,
85
- IDEACacheableResourceComponent,
86
- IonSpinner,
87
- IonItem,
88
- IonText,
89
- IonLabel,
90
- IonListHeader,
91
- IonList,
92
- IonContent,
93
- IonTitle,
94
- IonButtons,
95
- IonIcon,
96
- IonButton,
97
- IonToolbar,
98
- IonHeader
99
- ], template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"] }]
100
- }] });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZU1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9vZmZsaW5lTWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9vZmZsaW5lL29mZmxpbmVNYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLGFBQWEsRUFDYixRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxzQkFBc0IsRUFBYyxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQTJCL0UsTUFBTSxPQUFPLDJCQUEyQjtJQXpCeEM7UUEwQlUsV0FBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FB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Q1osaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLDhCQUE4Qjt3QkFDOUIsVUFBVTt3QkFDVixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxTQUFTO3dCQUNULFVBQVU7d0JBQ1YsU0FBUztxQkFDViIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTW9kYWxDb250cm9sbGVyLFxuICBBbGVydENvbnRyb2xsZXIsXG4gIElvbkhlYWRlcixcbiAgSW9uVG9vbGJhcixcbiAgSW9uQnV0dG9uLFxuICBJb25JY29uLFxuICBJb25CdXR0b25zLFxuICBJb25UaXRsZSxcbiAgSW9uQ29udGVudCxcbiAgSW9uTGlzdCxcbiAgSW9uTGlzdEhlYWRlcixcbiAgSW9uTGFiZWwsXG4gIElvblRleHQsXG4gIElvbkl0ZW0sXG4gIElvblNwaW5uZXJcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBCcm93c2VyIH0gZnJvbSAnQGNhcGFjaXRvci9icm93c2VyJztcbmltcG9ydCB7XG4gIElERUFBY3Rpb25TaGVldENvbnRyb2xsZXIsXG4gIElERUFMb2NhbGl6ZWREYXRlUGlwZSxcbiAgSURFQVRyYW5zbGF0ZVBpcGUsXG4gIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlXG59IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFPZmZsaW5lRGF0YVNlcnZpY2UsIEFQSVJlcXVlc3QgfSBmcm9tICcuL29mZmxpbmVEYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURFQUNhY2hlYWJsZVJlc291cmNlQ29tcG9uZW50IH0gZnJvbSAnLi9jYWNoZWFibGVSZXNvdXJjZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLW9mZmxpbmUtbWFuYWdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSURFQVRyYW5zbGF0ZVBpcGUsXG4gICAgSURFQUxvY2FsaXplZERhdGVQaXBlLFxuICAgIElERUFDYWNoZWFibGVSZXNvdXJjZUNvbXBvbmVudCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uVGV4dCxcbiAgICBJb25MYWJlbCxcbiAgICBJb25MaXN0SGVhZGVyLFxuICAgIElvbkxpc3QsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25UaXRsZSxcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkljb24sXG4gICAgSW9uQnV0dG9uLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uSGVhZGVyXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnb2ZmbGluZU1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnb2ZmbGluZU1hbmFnZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBT2ZmbGluZU1hbmFnZXJDb21wb25lbnQge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9hbGVydCA9IGluamVjdChBbGVydENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9hY3Rpb25zID0gaW5qZWN0KElERUFBY3Rpb25TaGVldENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuICBfb2ZmbGluZSA9IGluamVjdChJREVBT2ZmbGluZURhdGFTZXJ2aWNlKTtcblxuICBhc3luYyBzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5fYWxlcnQuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5TWU5DX05PVycpLFxuICAgICAgbWVzc2FnZTogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5ET05UX0VYSVRfQVBQX0RJU0NMQUlNRVInKSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgeyB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkNBTkNFTCcpIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5HT1RfSVQnKSwgaGFuZGxlcjogKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5fb2ZmbGluZS5zeW5jaHJvbml6ZSh0cnVlKSB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgYWxlcnQucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlUmVxdWVzdChyZXF1ZXN0OiBBUElSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLl9hbGVydC5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkFSRV9ZT1VfU1VSRScpLFxuICAgICAgbWVzc2FnZTogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5ERUxFVElPTl9JU19JUlJFVkVSU0lCTEUnKSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgeyB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkNBTkNFTCcpIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkNPTkZJUk0nKSxcbiAgICAgICAgICBoYW5kbGVyOiAoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLl9vZmZsaW5lLmRlbGV0ZVJlcXVlc3QocmVxdWVzdClcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuICBkb3dubG9hZFJlcXVlc3RMb2cocmVxdWVzdDogQVBJUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFVUkwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVxdWVzdCldLCB7IHR5cGU6ICd0ZXh0L2pzb24nIH0pKTtcbiAgICBCcm93c2VyLm9wZW4oeyB1cmw6IGRhdGFVUkwgfSk7XG4gIH1cblxuICBhc3luYyBhY3Rpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1dHRvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRk9SQ0VfRlVMTF9TWU5DJyksXG4gICAgICAgIGljb246ICdzeW5jJyxcbiAgICAgICAgaGFuZGxlcjogKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5mb3JjZUZ1bGxTeW5jKClcbiAgICAgIH0sXG4gICAgICB7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ0FOQ0VMJyksIHJvbGU6ICdjYW5jZWwnLCBpY29uOiAnYXJyb3ctdW5kbycgfVxuICAgIF07XG4gICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuX2FjdGlvbnMuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5BRFZBTkNFRF9BQ1RJT05TJyksXG4gICAgICBidXR0b25zXG4gICAgfSk7XG4gICAgYWN0aW9ucy5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBmb3JjZUZ1bGxTeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5fYWxlcnQuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5GT1JDRV9GVUxMX1NZTkMnKSxcbiAgICAgIHN1YkhlYWRlcjogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5BUkVfWU9VX1NVUkUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRlVMTF9TWU5DX0RJU0NMQUlNRVInKSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgeyB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkNBTkNFTCcpLCByb2xlOiAnY2FuY2VsJyB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ09ORklSTScpLCBoYW5kbGVyOiAoKTogdm9pZCA9PiB0aGlzLl9vZmZsaW5lLmZvcmNlRnVsbFN5bmMoKSB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgYWxlcnQucHJlc2VudCgpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcygpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlPlxuICAgICAge3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5PRkZMSU5FX01BTkFHRVInIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCInSURFQV9VTkNPTU1PTi5PRkZMSU5FLkFEVkFOQ0VEX0FDVElPTlMnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImFjdGlvbnMoKVwiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJlbGxpcHNpcy12ZXJ0aWNhbFwiIC8+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cbjxpb24tY29udGVudD5cbiAgPGlvbi1saXN0IGNsYXNzPVwiYUxpc3RcIj5cbiAgICBAaWYgKCFfb2ZmbGluZS5zeW5jaHJvbml6aW5nICYmIF9vZmZsaW5lLnJlcXVpcmVzTWFudWFsQ29uZmlybWF0aW9uKSB7XG4gICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIDxoMj57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkhVR0VfU1lOQ19ORUVEX01BTlVBTF9DT05GSVJNQVRJT04nIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1saXN0LWhlYWRlcj5cbiAgICB9XG4gICAgQGlmICghX29mZmxpbmUuc3luY2hyb25pemluZykge1xuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJsYXN0U3luY0F0XCI+XG4gICAgICAgICAgICB7eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkxBU1RfU1lOQycgfCB0cmFuc2xhdGUgfX06XG4gICAgICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgX29mZmxpbmUubGFzdFN5bmNBdFxuICAgICAgICAgICAgICAgICAgPyAoX29mZmxpbmUubGFzdFN5bmNBdCB8IGRhdGVMb2NhbGU6ICdtZWRpdW0nKVxuICAgICAgICAgICAgICAgICAgOiAoJ0lERUFfVU5DT01NT04uT0ZGTElORS5ORVZFUicgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgQGlmIChfb2ZmbGluZS5lcnJvckluTGFzdFN5bmMpIHtcbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICAgICAgICA8Yj57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkVSUk9SX0RVUklOR19MQVNUX1NZTkMnIHwgdHJhbnNsYXRlIH19PC9iPlxuICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBmaWxsPVwic29saWRcIlxuICAgICAgICAgIFtjb2xvcl09XCJfb2ZmbGluZS5lcnJvckluTGFzdFN5bmMgPyAnZGFuZ2VyJyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIl9vZmZsaW5lLmlzT2ZmbGluZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwic3luYygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwic3luY1wiIC8+IHt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuU1lOQ19OT1cnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgIH1cbiAgPC9pb24tbGlzdD5cbiAgQGlmIChfb2ZmbGluZS5zeW5jaHJvbml6aW5nKSB7XG4gICAgPGlvbi1saXN0IGNsYXNzPVwiYUxpc3RcIj5cbiAgICAgIDxpb24taXRlbT5cbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiBjb2xvcj1cInByaW1hcnlcIiAvPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9pb24tbGlzdD5cbiAgfVxuICBAaWYgKF9vZmZsaW5lLnVzZVF1ZXVlQVBJUmVxdWVzdHMpIHtcbiAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICA8aDI+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5VUExPQUQnIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgICA8cD57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlVQTE9BRF9RVUVVRV9SRVFVRVNUU19FWFBMQU5BVElPTicgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgICBAaWYgKCFfb2ZmbGluZS5xdWV1ZUFQSVJlcXVlc3RzLmxlbmd0aCkge1xuICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgPGk+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5OT19FTEVNRU5UU19UT19VUExPQUQnIHwgdHJhbnNsYXRlIH19PC9pPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgc2l6ZT1cInNtYWxsXCIgbmFtZT1cImNoZWNrbWFya1wiIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICB9XG4gICAgICBAZm9yIChyIG9mIF9vZmZsaW5lLnF1ZXVlQVBJUmVxdWVzdHM7IHRyYWNrIHI7IGxldCBvZGQgPSAkb2RkKSB7XG4gICAgICAgIDxpb24taXRlbSBbY2xhc3Mub2RkSXRlbV09XCJvZGRcIj5cbiAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgICAge3sgci5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgQGlmIChyLmVycm9yKSB7XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgICAgICAgPGI+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5FUlJPUl9DT0RFJyB8IHRyYW5zbGF0ZSB9fToge3sgci5lcnJvciB9fTwvYj5cbiAgICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgIHt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuUkVRVUVTVF9GQUlMRURfRVhQTEFOQVRJT05fSScgfCB0cmFuc2xhdGUgfX08YnIgLz5cbiAgICAgICAgICAgICAgICB7eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlJFUVVFU1RfRkFJTEVEX0VYUExBTkFUSU9OX0lJJyB8IHRyYW5zbGF0ZSB9fTxiciAvPlxuICAgICAgICAgICAgICAgIHt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuUkVRVUVTVF9GQUlMRURfRVhQTEFOQVRJT05fSUlJJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgQGlmIChyLmVycm9yKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uT0ZGTElORS5DQU5DRUxfUkVRVUVTVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUmVxdWVzdChyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCIgLz5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChyLmVycm9yKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uT0ZGTElORS5ET1dOTE9BRF9MT0cnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkUmVxdWVzdExvZyhyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImRvd25sb2FkXCIgLz5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChfb2ZmbGluZS5zeW5jaHJvbml6aW5nKSB7XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgc2xvdD1cImVuZFwiIG5hbWU9XCJkb3RzXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICB9XG4gICAgPC9pb24tbGlzdD5cbiAgfVxuICBAaWYgKF9vZmZsaW5lLmdldFJlc291cmNlcygpLmxlbmd0aCkge1xuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIDxoMj57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkRPV05MT0FEJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgICAgPHA+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5ET1dOTE9BRF9SRVNPVVJDRVNfRVhQTEFOQVRJT04nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgQGZvciAociBvZiBfb2ZmbGluZS5nZXRSZXNvdXJjZXMoKTsgdHJhY2sgcikge1xuICAgICAgICA8aWRlYS1jYWNoZWFibGUtcmVzb3VyY2UgW3Jlc291cmNlXT1cIl9vZmZsaW5lLmdldENhY2hlYWJsZVJlc291cmNlKHIpXCIgLz5cbiAgICAgIH1cbiAgICA8L2lvbi1saXN0PlxuICB9XG48L2lvbi1jb250ZW50PlxuIl19
@@ -1,57 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { Platform } from '@ionic/angular/standalone';
3
- import { PushNotifications } from '@capacitor/push-notifications';
4
- import { Observable } from 'rxjs';
5
- import { PushNotificationsDevice, PushNotificationsPlatforms } from 'idea-toolbox';
6
- import { IDEAErrorReportingService } from './errorReporting.service';
7
- import * as i0 from "@angular/core";
8
- /**
9
- * To subscribe push notifications events.
10
- */
11
- export class IDEAPushNotificationsService {
12
- constructor() {
13
- this._platform = inject(Platform);
14
- this._errorReporting = inject(IDEAErrorReportingService);
15
- if (!this.isAvailable())
16
- return;
17
- this.registrations = new Observable(observer => {
18
- PushNotifications.addListener('registration', token => observer.next(new PushNotificationsDevice({ token: token.value, platform: PushNotificationsPlatforms.FCM })));
19
- });
20
- this.errors = new Observable(observer => {
21
- // rif. https://forum.ionicframework.com/t/226376
22
- PushNotifications.addListener('registrationError', (err) => {
23
- this._errorReporting.sendReport(err);
24
- observer.next(err);
25
- });
26
- });
27
- this.notifications = new Observable(observer => {
28
- PushNotifications.addListener('pushNotificationReceived', n => observer.next(n));
29
- });
30
- }
31
- /**
32
- * Return true if the device is supported.
33
- */
34
- isAvailable() {
35
- return this._platform.is('capacitor') && !!PushNotifications;
36
- }
37
- /**
38
- * To fire the registration of a new device: it will rewquest the permission to use Push Notification.
39
- * On iOS will prompt the request, on Android it's automatic.
40
- */
41
- async registerDevice() {
42
- if (!this.isAvailable())
43
- return;
44
- let permStatus = await PushNotifications.checkPermissions();
45
- if (permStatus.receive === 'prompt')
46
- permStatus = await PushNotifications.requestPermissions();
47
- if (permStatus.receive === 'granted')
48
- PushNotifications.register();
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPushNotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPushNotificationsService, providedIn: 'root' }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPushNotificationsService, decorators: [{
54
- type: Injectable,
55
- args: [{ providedIn: 'root' }]
56
- }], ctorParameters: () => [] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaE5vdGlmaWNhdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3B1c2hOb3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFckU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTRCO0lBUXZDO1FBUFEsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBTzFELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTztRQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FDcEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDN0csQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0QyxpREFBaUQ7WUFDaEQsaUJBQXlCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUMsR0FBVSxFQUFRLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1FBRWhDLElBQUksVUFBVSxHQUFHLE1BQU0saUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU1RCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLFVBQVUsR0FBRyxNQUFNLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0YsSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLFNBQVM7WUFBRSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQS9DVSw0QkFBNEI7a0hBQTVCLDRCQUE0QixjQURmLE1BQU07OzJGQUNuQiw0QkFBNEI7a0JBRHhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgUHVzaE5vdGlmaWNhdGlvbnMsIFB1c2hOb3RpZmljYXRpb25TY2hlbWEgfSBmcm9tICdAY2FwYWNpdG9yL3B1c2gtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQdXNoTm90aWZpY2F0aW9uc0RldmljZSwgUHVzaE5vdGlmaWNhdGlvbnNQbGF0Zm9ybXMgfSBmcm9tICdpZGVhLXRvb2xib3gnO1xuXG5pbXBvcnQgeyBJREVBRXJyb3JSZXBvcnRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9lcnJvclJlcG9ydGluZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBUbyBzdWJzY3JpYmUgcHVzaCBub3RpZmljYXRpb25zIGV2ZW50cy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJREVBUHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm0pO1xuICBwcml2YXRlIF9lcnJvclJlcG9ydGluZyA9IGluamVjdChJREVBRXJyb3JSZXBvcnRpbmdTZXJ2aWNlKTtcblxuICByZWdpc3RyYXRpb25zOiBPYnNlcnZhYmxlPFB1c2hOb3RpZmljYXRpb25zRGV2aWNlPjtcbiAgbm90aWZpY2F0aW9uczogT2JzZXJ2YWJsZTxQdXNoTm90aWZpY2F0aW9uU2NoZW1hPjtcbiAgZXJyb3JzOiBPYnNlcnZhYmxlPEVycm9yPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNBdmFpbGFibGUoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yZWdpc3RyYXRpb25zID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgUHVzaE5vdGlmaWNhdGlvbnMuYWRkTGlzdGVuZXIoJ3JlZ2lzdHJhdGlvbicsIHRva2VuID0+XG4gICAgICAgIG9ic2VydmVyLm5leHQobmV3IFB1c2hOb3RpZmljYXRpb25zRGV2aWNlKHsgdG9rZW46IHRva2VuLnZhbHVlLCBwbGF0Zm9ybTogUHVzaE5vdGlmaWNhdGlvbnNQbGF0Zm9ybXMuRkNNIH0pKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLmVycm9ycyA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIC8vIHJpZi4gaHR0cHM6Ly9mb3J1bS5pb25pY2ZyYW1ld29yay5jb20vdC8yMjYzNzZcbiAgICAgIChQdXNoTm90aWZpY2F0aW9ucyBhcyBhbnkpLmFkZExpc3RlbmVyKCdyZWdpc3RyYXRpb25FcnJvcicsIChlcnI6IEVycm9yKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2Vycm9yUmVwb3J0aW5nLnNlbmRSZXBvcnQoZXJyKTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgUHVzaE5vdGlmaWNhdGlvbnMuYWRkTGlzdGVuZXIoJ3B1c2hOb3RpZmljYXRpb25SZWNlaXZlZCcsIG4gPT4gb2JzZXJ2ZXIubmV4dChuKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIGRldmljZSBpcyBzdXBwb3J0ZWQuXG4gICAqL1xuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXMoJ2NhcGFjaXRvcicpICYmICEhUHVzaE5vdGlmaWNhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVG8gZmlyZSB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgbmV3IGRldmljZTogaXQgd2lsbCByZXdxdWVzdCB0aGUgcGVybWlzc2lvbiB0byB1c2UgUHVzaCBOb3RpZmljYXRpb24uXG4gICAqIE9uIGlPUyB3aWxsIHByb21wdCB0aGUgcmVxdWVzdCwgb24gQW5kcm9pZCBpdCdzIGF1dG9tYXRpYy5cbiAgICovXG4gIGFzeW5jIHJlZ2lzdGVyRGV2aWNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5pc0F2YWlsYWJsZSgpKSByZXR1cm47XG5cbiAgICBsZXQgcGVybVN0YXR1cyA9IGF3YWl0IFB1c2hOb3RpZmljYXRpb25zLmNoZWNrUGVybWlzc2lvbnMoKTtcblxuICAgIGlmIChwZXJtU3RhdHVzLnJlY2VpdmUgPT09ICdwcm9tcHQnKSBwZXJtU3RhdHVzID0gYXdhaXQgUHVzaE5vdGlmaWNhdGlvbnMucmVxdWVzdFBlcm1pc3Npb25zKCk7XG5cbiAgICBpZiAocGVybVN0YXR1cy5yZWNlaXZlID09PSAnZ3JhbnRlZCcpIFB1c2hOb3RpZmljYXRpb25zLnJlZ2lzdGVyKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,112 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
3
- import { Sentiment } from 'idea-toolbox';
4
- import { IonItem, IonSpinner, IonBadge } from '@ionic/angular/standalone';
5
- import { IDEAEnvironment, IDEATranslatePipe, IDEATranslationsService } from '@idea-ionic/common';
6
- import { IDEAAWSAPIService } from '../AWSAPI.service';
7
- import { IDEAOfflineService } from '../offline/offline.service';
8
- import * as i0 from "@angular/core";
9
- export class IDEASentimentComponent {
10
- constructor() {
11
- this._env = inject(IDEAEnvironment);
12
- this._API = inject(IDEAAWSAPIService);
13
- this._translate = inject(IDEATranslationsService);
14
- this._offline = inject(IDEAOfflineService);
15
- /**
16
- * Triggers when the sentiment change.
17
- */
18
- this.change = new EventEmitter();
19
- }
20
- ngOnChanges(changes) {
21
- if (changes.text.previousValue !== changes.text.currentValue)
22
- this.detectSentiment(changes.text.currentValue);
23
- }
24
- async detectSentiment(text) {
25
- if (!text || this._offline.isOffline())
26
- this.sentiment = null;
27
- else {
28
- try {
29
- const { sentiment } = await this._API.postResource('sentiment', {
30
- idea: true,
31
- body: { project: this._env.idea.project, language: this._translate.getCurrentLang(), text: this.text }
32
- });
33
- this.sentiment = sentiment;
34
- this.change.emit(this.sentiment);
35
- }
36
- catch (error) {
37
- this.sentiment = null;
38
- }
39
- }
40
- }
41
- getColorBySentiment(sentiment) {
42
- sentiment = sentiment || this.sentiment;
43
- switch (sentiment) {
44
- case Sentiment.POSITIVE:
45
- return 'success';
46
- case Sentiment.NEGATIVE:
47
- return 'danger';
48
- case Sentiment.MIXED:
49
- return 'warning';
50
- case Sentiment.NEUTRAL:
51
- return 'medium';
52
- default:
53
- return 'light';
54
- }
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEASentimentComponent, isStandalone: true, selector: "idea-sentiment", inputs: { text: "text", lines: "lines", color: "color" }, outputs: { change: "change" }, usesOnChanges: true, ngImport: i0, template: `
58
- @if (text && _offline.isOnline()) {
59
- <ion-item [lines]="lines" [color]="color">
60
- @if (!sentiment) {
61
- <ion-spinner slot="end" size="small" />
62
- }
63
- @if (sentiment) {
64
- <ion-badge
65
- slot="end"
66
- size="small"
67
- [color]="getColorBySentiment()"
68
- [title]="'IDEA_UNCOMMON.SENTIMENT.RESULT_HINT' | translate: { sentiment: sentiment }"
69
- >
70
- {{ 'IDEA_UNCOMMON.SENTIMENT.RESULT.' + sentiment | translate }}
71
- </ion-badge>
72
- }
73
- </ion-item>
74
- }
75
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }] }); }
76
- }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentComponent, decorators: [{
78
- type: Component,
79
- args: [{
80
- selector: 'idea-sentiment',
81
- standalone: true,
82
- imports: [CommonModule, IDEATranslatePipe, IonBadge, IonSpinner, IonItem],
83
- template: `
84
- @if (text && _offline.isOnline()) {
85
- <ion-item [lines]="lines" [color]="color">
86
- @if (!sentiment) {
87
- <ion-spinner slot="end" size="small" />
88
- }
89
- @if (sentiment) {
90
- <ion-badge
91
- slot="end"
92
- size="small"
93
- [color]="getColorBySentiment()"
94
- [title]="'IDEA_UNCOMMON.SENTIMENT.RESULT_HINT' | translate: { sentiment: sentiment }"
95
- >
96
- {{ 'IDEA_UNCOMMON.SENTIMENT.RESULT.' + sentiment | translate }}
97
- </ion-badge>
98
- }
99
- </ion-item>
100
- }
101
- `
102
- }]
103
- }], propDecorators: { text: [{
104
- type: Input
105
- }], lines: [{
106
- type: Input
107
- }], color: [{
108
- type: Input
109
- }], change: [{
110
- type: Output
111
- }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudGltZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3NlbnRpbWVudC9zZW50aW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBMEJoRSxNQUFNLE9BQU8sc0JBQXNCO0lBeEJuQztRQXlCWSxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBa0J0Qzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0tBb0NsRDtJQWxDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUNPLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBWTtRQUN4QyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7YUFDekQsQ0FBQztZQUNKLElBQUksQ0FBQztnQkFDSCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7b0JBQzlELElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7aUJBQ3ZHLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFNBQThCO1FBQ2hELFNBQVMsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QyxRQUFRLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLEtBQUssU0FBUyxDQUFDLFFBQVE7Z0JBQ3JCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDLFFBQVE7Z0JBQ3JCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ2xCLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCO2dCQUNFLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDOzhHQTVEVSxzQkFBc0I7a0dBQXRCLHNCQUFzQix3TEFwQnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsMkRBbkJTLFlBQVksMEJBQUUsaUJBQWlCLGtEQUFFLFFBQVEsaUZBQUUsVUFBVSx5R0FBRSxPQUFPOzsyRkFxQjdELHNCQUFzQjtrQkF4QmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztvQkFDekUsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7aUJBQ0Y7OEJBY1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VudGltZW50IH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7IElvbkl0ZW0sIElvblNwaW5uZXIsIElvbkJhZGdlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJREVBRW52aXJvbm1lbnQsIElERUFUcmFuc2xhdGVQaXBlLCBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbmltcG9ydCB7IElERUFBV1NBUElTZXJ2aWNlIH0gZnJvbSAnLi4vQVdTQVBJLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURFQU9mZmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vb2ZmbGluZS9vZmZsaW5lLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXNlbnRpbWVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElERUFUcmFuc2xhdGVQaXBlLCBJb25CYWRnZSwgSW9uU3Bpbm5lciwgSW9uSXRlbV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmICh0ZXh0ICYmIF9vZmZsaW5lLmlzT25saW5lKCkpIHtcbiAgICAgIDxpb24taXRlbSBbbGluZXNdPVwibGluZXNcIiBbY29sb3JdPVwiY29sb3JcIj5cbiAgICAgICAgQGlmICghc2VudGltZW50KSB7XG4gICAgICAgICAgPGlvbi1zcGlubmVyIHNsb3Q9XCJlbmRcIiBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoc2VudGltZW50KSB7XG4gICAgICAgICAgPGlvbi1iYWRnZVxuICAgICAgICAgICAgc2xvdD1cImVuZFwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgW2NvbG9yXT1cImdldENvbG9yQnlTZW50aW1lbnQoKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uU0VOVElNRU5ULlJFU1VMVF9ISU5UJyB8IHRyYW5zbGF0ZTogeyBzZW50aW1lbnQ6IHNlbnRpbWVudCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnSURFQV9VTkNPTU1PTi5TRU5USU1FTlQuUkVTVUxULicgKyBzZW50aW1lbnQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2lvbi1iYWRnZT5cbiAgICAgICAgfVxuICAgICAgPC9pb24taXRlbT5cbiAgICB9XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgSURFQVNlbnRpbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHByb3RlY3RlZCBfZW52ID0gaW5qZWN0KElERUFFbnZpcm9ubWVudCk7XG4gIHByaXZhdGUgX0FQSSA9IGluamVjdChJREVBQVdTQVBJU2VydmljZSk7XG4gIHByaXZhdGUgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG4gIF9vZmZsaW5lID0gaW5qZWN0KElERUFPZmZsaW5lU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFRoZSBzZW50aW1lbnQgZGV0ZWN0ZWQgZnJvbSB0aGUgaW5wdXQgdGV4dC5cbiAgICovXG4gIHNlbnRpbWVudDogU2VudGltZW50O1xuICAvKipcbiAgICogVGhlIGlucHV0IHRleHQuXG4gICAqL1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaW5lcyBwcmVmZXJlbmNlcyBmb3IgdGhlIGl0ZW0uXG4gICAqL1xuICBASW5wdXQoKSBsaW5lczogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbG9yIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZztcbiAgLyoqXG4gICAqIFRyaWdnZXJzIHdoZW4gdGhlIHNlbnRpbWVudCBjaGFuZ2UuXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZW50aW1lbnQ+KCk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnRleHQucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlcy50ZXh0LmN1cnJlbnRWYWx1ZSkgdGhpcy5kZXRlY3RTZW50aW1lbnQoY2hhbmdlcy50ZXh0LmN1cnJlbnRWYWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBkZXRlY3RTZW50aW1lbnQodGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0ZXh0IHx8IHRoaXMuX29mZmxpbmUuaXNPZmZsaW5lKCkpIHRoaXMuc2VudGltZW50ID0gbnVsbDtcbiAgICBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgc2VudGltZW50IH0gPSBhd2FpdCB0aGlzLl9BUEkucG9zdFJlc291cmNlKCdzZW50aW1lbnQnLCB7XG4gICAgICAgICAgaWRlYTogdHJ1ZSxcbiAgICAgICAgICBib2R5OiB7IHByb2plY3Q6IHRoaXMuX2Vudi5pZGVhLnByb2plY3QsIGxhbmd1YWdlOiB0aGlzLl90cmFuc2xhdGUuZ2V0Q3VycmVudExhbmcoKSwgdGV4dDogdGhpcy50ZXh0IH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VudGltZW50ID0gc2VudGltZW50O1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuc2VudGltZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuc2VudGltZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRDb2xvckJ5U2VudGltZW50KHNlbnRpbWVudD86IFNlbnRpbWVudCB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc2VudGltZW50ID0gc2VudGltZW50IHx8IHRoaXMuc2VudGltZW50O1xuICAgIHN3aXRjaCAoc2VudGltZW50KSB7XG4gICAgICBjYXNlIFNlbnRpbWVudC5QT1NJVElWRTpcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgIGNhc2UgU2VudGltZW50Lk5FR0FUSVZFOlxuICAgICAgICByZXR1cm4gJ2Rhbmdlcic7XG4gICAgICBjYXNlIFNlbnRpbWVudC5NSVhFRDpcbiAgICAgICAgcmV0dXJuICd3YXJuaW5nJztcbiAgICAgIGNhc2UgU2VudGltZW50Lk5FVVRSQUw6XG4gICAgICAgIHJldHVybiAnbWVkaXVtJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnbGlnaHQnO1xuICAgIH1cbiAgfVxufVxuIl19