ionic-logging-viewer 12.0.0 → 15.0.0

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 (38) hide show
  1. package/README.md +5 -1
  2. package/esm2020/ionic-logging-viewer.mjs +5 -0
  3. package/esm2020/lib/logging-viewer/logging-viewer.component.mjs +119 -0
  4. package/esm2020/lib/logging-viewer-filter.service.mjs +64 -0
  5. package/esm2020/lib/logging-viewer-levels/logging-viewer-levels.component.mjs +71 -0
  6. package/{esm2015/lib/logging-viewer-modal/logging-viewer-modal-properties.model.js → esm2020/lib/logging-viewer-modal/logging-viewer-modal-properties.model.mjs} +0 -0
  7. package/esm2020/lib/logging-viewer-modal/logging-viewer-modal.component.mjs +141 -0
  8. package/esm2020/lib/logging-viewer-search/logging-viewer-search.component.mjs +73 -0
  9. package/{esm2015/lib/logging-viewer-translation.model.js → esm2020/lib/logging-viewer-translation.model.mjs} +0 -0
  10. package/esm2020/lib/logging-viewer.module.mjs +53 -0
  11. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  12. package/fesm2015/ionic-logging-viewer.mjs +498 -0
  13. package/fesm2015/ionic-logging-viewer.mjs.map +1 -0
  14. package/fesm2020/ionic-logging-viewer.mjs +493 -0
  15. package/fesm2020/ionic-logging-viewer.mjs.map +1 -0
  16. package/index.d.ts +5 -0
  17. package/lib/logging-viewer/logging-viewer.component.d.ts +3 -0
  18. package/lib/logging-viewer-filter.service.d.ts +3 -0
  19. package/lib/logging-viewer-levels/logging-viewer-levels.component.d.ts +3 -0
  20. package/lib/logging-viewer-modal/logging-viewer-modal.component.d.ts +3 -0
  21. package/lib/logging-viewer-search/logging-viewer-search.component.d.ts +3 -0
  22. package/lib/logging-viewer.module.d.ts +11 -0
  23. package/package.json +25 -13
  24. package/bundles/ionic-logging-viewer.umd.js +0 -883
  25. package/bundles/ionic-logging-viewer.umd.js.map +0 -1
  26. package/bundles/ionic-logging-viewer.umd.min.js +0 -16
  27. package/bundles/ionic-logging-viewer.umd.min.js.map +0 -1
  28. package/esm2015/ionic-logging-viewer.js +0 -6
  29. package/esm2015/lib/logging-viewer/logging-viewer.component.js +0 -121
  30. package/esm2015/lib/logging-viewer-filter.service.js +0 -62
  31. package/esm2015/lib/logging-viewer-levels/logging-viewer-levels.component.js +0 -70
  32. package/esm2015/lib/logging-viewer-modal/logging-viewer-modal.component.js +0 -144
  33. package/esm2015/lib/logging-viewer-search/logging-viewer-search.component.js +0 -74
  34. package/esm2015/lib/logging-viewer.module.js +0 -37
  35. package/fesm2015/ionic-logging-viewer.js +0 -500
  36. package/fesm2015/ionic-logging-viewer.js.map +0 -1
  37. package/ionic-logging-viewer.d.ts +0 -5
  38. package/ionic-logging-viewer.metadata.json +0 -1
package/README.md CHANGED
@@ -1,9 +1,13 @@
1
1
  # ionic-logging-viewer
2
2
 
3
- **The dependencies used by the latest version are the same as needed for [Ionic 5.0.0](https://github.com/ionic-team/ionic/blob/master/CHANGELOG.md). For older versions use:**
3
+ **The dependencies used by the latest version are the same as needed for [Ionic 6.1.9](https://github.com/ionic-team/ionic/blob/master/CHANGELOG.md). For older versions use:**
4
4
 
5
5
  | ionic-logging-viewer | Ionic | Angular
6
6
  | ------ | -------- | ------
7
+ | 15.0.0 | >= 6.1.9 | ^14.0.0
8
+ | 14.0.0 | >= 6.0.0 | ^13.0.0
9
+ | 13.0.0 | >= 5.0.0 | ^12.0.0
10
+ | 12.0.0 | >= 5.0.0 | ^11.0.0
7
11
  | 11.0.0 | >= 5.0.0 | ^10.0.0
8
12
  | 9.0.0 | >= 5.0.0 | ^9.0.0
9
13
  | 8.0.0 | >= 4.7.0 | ^8.0.0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtbG9nZ2luZy12aWV3ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvaW9uaWMtbG9nZ2luZy12aWV3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,119 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { LoggingService, LogLevelConverter } from "ionic-logging-service";
3
+ import { LoggingViewerFilterService } from "../logging-viewer-filter.service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ionic-logging-service";
6
+ import * as i2 from "../logging-viewer-filter.service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@ionic/angular";
9
+ /**
10
+ * Component for displaying the current logs.
11
+ *
12
+ * The component can be embedded in any web page using:
13
+ *
14
+ * <ionic-logging-viewer></ionic-logging-viewer>
15
+ */
16
+ export class LoggingViewerComponent {
17
+ /**
18
+ * Creates a new instance of the component.
19
+ */
20
+ constructor(loggingService, loggingViewerFilterService) {
21
+ this.loggingService = loggingService;
22
+ this.loggingViewerFilterService = loggingViewerFilterService;
23
+ this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Component");
24
+ const methodName = "ctor";
25
+ this.logger.entry(methodName);
26
+ this.logger.exit(methodName);
27
+ }
28
+ /**
29
+ * Initialize the component.
30
+ *
31
+ * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html)
32
+ * and the log messages from [LoggingService](../../../ionic-logging-service/typedoc/index.html).
33
+ * If the localStorageKeys property is set, the messages are read from local storage.
34
+ */
35
+ ngOnInit() {
36
+ const methodName = "ngOnInit";
37
+ this.logger.entry(methodName);
38
+ this.loadLogMessages();
39
+ this.filterLogMessages();
40
+ // subscribe to loggingService.logMessagesChanged event, to refresh, when new message is logged
41
+ this.logMessagesChangedSubscription = this.loggingService.logMessagesChanged.subscribe(async () => {
42
+ this.loadLogMessages();
43
+ this.filterLogMessages();
44
+ });
45
+ // subscribe to loggingViewerFilterService.filterChanged event, to refresh, when filter is modified
46
+ this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
47
+ this.filterLogMessages();
48
+ });
49
+ this.logger.exit(methodName);
50
+ }
51
+ /**
52
+ * Clean up.
53
+ */
54
+ ngOnDestroy() {
55
+ const methodName = "ngOnDestroy";
56
+ this.logger.entry(methodName);
57
+ this.logMessagesChangedSubscription.unsubscribe();
58
+ this.filterChangedSubscription.unsubscribe();
59
+ this.logger.exit(methodName);
60
+ }
61
+ /**
62
+ * Filter the log messages.
63
+ */
64
+ filterLogMessages() {
65
+ this.logMessagesForDisplay = this.logMessages.filter((message) => this.filterLogMessagesByLevel(message) && this.filterLogMessagesBySearch(message));
66
+ }
67
+ /**
68
+ * Check if the log message's level fulfills the level condition.
69
+ *
70
+ * @param message the log message to check
71
+ * @returns true if check was successful
72
+ */
73
+ filterLogMessagesByLevel(message) {
74
+ const levelValue = this.loggingViewerFilterService.level;
75
+ return LogLevelConverter.levelFromString(message.level) >= LogLevelConverter.levelFromString(levelValue);
76
+ }
77
+ /**
78
+ * Check if the log message fulfills the search condition.
79
+ *
80
+ * The search value gets searched in:
81
+ * - logger name
82
+ * - method name
83
+ * - message
84
+ *
85
+ * @param message the log message to check
86
+ * @returns true if check was successful
87
+ */
88
+ filterLogMessagesBySearch(message) {
89
+ const searchValue = new RegExp(this.loggingViewerFilterService.search, "i");
90
+ return message.logger.search(searchValue) >= 0 ||
91
+ message.methodName.search(searchValue) >= 0 ||
92
+ message.message.join("|").search(searchValue) >= 0;
93
+ }
94
+ /**
95
+ * Load the current log messages.
96
+ * For unit test purposes mainly.
97
+ */
98
+ loadLogMessages() {
99
+ if (this.localStorageKeys) {
100
+ this.logMessages = [];
101
+ for (const localStorageKey of this.localStorageKeys.split(",")) {
102
+ this.logMessages = this.logMessages.concat(this.loggingService.getLogMessagesFromLocalStorage(localStorageKey));
103
+ }
104
+ this.logMessages = this.logMessages.sort((a, b) => a.timeStamp.getTime() - b.timeStamp.getTime());
105
+ }
106
+ else {
107
+ this.logMessages = this.loggingService.getLogMessages();
108
+ }
109
+ }
110
+ }
111
+ LoggingViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerComponent, deps: [{ token: i1.LoggingService }, { token: i2.LoggingViewerFilterService }], target: i0.ɵɵFactoryTarget.Component });
112
+ LoggingViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: LoggingViewerComponent, selector: "ionic-logging-viewer", inputs: { localStorageKeys: "localStorageKeys" }, ngImport: i0, template: "<ion-list>\n\t<ion-item *ngFor=\"let logMessage of logMessagesForDisplay\">\n\t\t<ion-label>\n\t\t\t<p>{{ logMessage.timeStamp | date:'dd.MM.yyyy HH:mm:ss' }} {{ logMessage.level }}</p>\n\t\t\t<p>{{ logMessage.logger }}</p>\n\t\t\t<p>\n\t\t\t\t{{ logMessage.methodName }}\n\t\t\t\t<span *ngFor=\"let messagePart of logMessage.message\"> {{ messagePart }} </span>\n\t\t\t</p>\n\t\t</ion-label>\n\t</ion-item>\n</ion-list>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerComponent, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: "ionic-logging-viewer", template: "<ion-list>\n\t<ion-item *ngFor=\"let logMessage of logMessagesForDisplay\">\n\t\t<ion-label>\n\t\t\t<p>{{ logMessage.timeStamp | date:'dd.MM.yyyy HH:mm:ss' }} {{ logMessage.level }}</p>\n\t\t\t<p>{{ logMessage.logger }}</p>\n\t\t\t<p>\n\t\t\t\t{{ logMessage.methodName }}\n\t\t\t\t<span *ngFor=\"let messagePart of logMessage.message\"> {{ messagePart }} </span>\n\t\t\t</p>\n\t\t</ion-label>\n\t</ion-item>\n</ion-list>" }]
116
+ }], ctorParameters: function () { return [{ type: i1.LoggingService }, { type: i2.LoggingViewerFilterService }]; }, propDecorators: { localStorageKeys: [{
117
+ type: Input
118
+ }] } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy12aWV3ZXIvc3JjL2xpYi9sb2dnaW5nLXZpZXdlci9sb2dnaW5nLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvbGliL2xvZ2dpbmctdmlld2VyL2xvZ2dpbmctdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRSxPQUFPLEVBQVUsY0FBYyxFQUFFLGlCQUFpQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFFOUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUU5RTs7Ozs7O0dBTUc7QUFNSCxNQUFNLE9BQU8sc0JBQXNCO0lBa0JsQzs7T0FFRztJQUNILFlBQ1MsY0FBOEIsRUFDOUIsMEJBQXNEO1FBRHRELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRTlELElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUTtRQUNkLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFekIsK0ZBQStGO1FBQy9GLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxtR0FBbUc7UUFDbkcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDakIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDbkQsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxPQUFtQjtRQUNsRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO1FBQ3pELE9BQU8saUJBQWlCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSx5QkFBeUIsQ0FBQyxPQUFtQjtRQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUM3QyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsS0FBSyxNQUFNLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsOEJBQThCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQzthQUNoSDtZQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNsRzthQUFNO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hEO0lBQ0YsQ0FBQzs7bUhBNUhXLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDhHQ25CbkMsc2FBV1c7MkZEUUUsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNDLHNCQUFzQjs4SUFVekIsZ0JBQWdCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnaW5nU2VydmljZSwgTG9nTGV2ZWxDb252ZXJ0ZXIsIExvZ01lc3NhZ2UgfSBmcm9tIFwiaW9uaWMtbG9nZ2luZy1zZXJ2aWNlXCI7XG5cbmltcG9ydCB7IExvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2xvZ2dpbmctdmlld2VyLWZpbHRlci5zZXJ2aWNlXCI7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHRoZSBjdXJyZW50IGxvZ3MuXG4gKlxuICogVGhlIGNvbXBvbmVudCBjYW4gYmUgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIHVzaW5nOlxuICpcbiAqICZsdDtpb25pYy1sb2dnaW5nLXZpZXdlcj4mbHQ7L2lvbmljLWxvZ2dpbmctdmlld2VyPlxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiaW9uaWMtbG9nZ2luZy12aWV3ZXJcIixcblx0dGVtcGxhdGVVcmw6IFwiLi9sb2dnaW5nLXZpZXdlci5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcIi4vbG9nZ2luZy12aWV3ZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ1ZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuXHQvKipcblx0ICogQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbG9jYWxTdG9yYWdlS2V5cy4gSWYgc2V0LCB0aGUgbG9ncyBnZXQgbG9hZGVkIGZyb20gbG9jYWxTdG9yYWdlIGluc3RlYWQgb2YgbWVtb3J5LlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIGxvY2FsU3RvcmFnZUtleXM6IHN0cmluZztcblxuXHQvKipcblx0ICogTG9nIG1lc3NhZ2VzIHdoaWNoIGZ1bGZpbGwgdGhlIGZpbHRlciBjb25kaXRpb24uXG5cdCAqL1xuXHRwdWJsaWMgbG9nTWVzc2FnZXNGb3JEaXNwbGF5OiBMb2dNZXNzYWdlW107XG5cblx0cHJpdmF0ZSBsb2dnZXI6IExvZ2dlcjtcblx0cHJpdmF0ZSBsb2dNZXNzYWdlczogTG9nTWVzc2FnZVtdO1xuXHRwcml2YXRlIGxvZ01lc3NhZ2VzQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXHRwcml2YXRlIGZpbHRlckNoYW5nZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50LlxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UsXG5cdFx0cHJpdmF0ZSBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZTogTG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UpIHtcblxuXHRcdHRoaXMubG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2UuZ2V0TG9nZ2VyKFwiSW9uaWMuTG9nZ2luZy5WaWV3ZXIuQ29tcG9uZW50XCIpO1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcImN0b3JcIjtcblx0XHR0aGlzLmxvZ2dlci5lbnRyeShtZXRob2ROYW1lKTtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50LlxuXHQgKlxuXHQgKiBUaGlzIGlzIGRvbmUgYnkgcmVhZGluZyB0aGUgZmlsdGVyIGRhdGEgZnJvbSBbTG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2VdKExvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlLmh0bWwpXG5cdCAqIGFuZCB0aGUgbG9nIG1lc3NhZ2VzIGZyb20gW0xvZ2dpbmdTZXJ2aWNlXSguLi8uLi8uLi9pb25pYy1sb2dnaW5nLXNlcnZpY2UvdHlwZWRvYy9pbmRleC5odG1sKS5cblx0ICogSWYgdGhlIGxvY2FsU3RvcmFnZUtleXMgcHJvcGVydHkgaXMgc2V0LCB0aGUgbWVzc2FnZXMgYXJlIHJlYWQgZnJvbSBsb2NhbCBzdG9yYWdlLlxuXHQgKi9cblx0cHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcIm5nT25Jbml0XCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxvYWRMb2dNZXNzYWdlcygpO1xuXHRcdHRoaXMuZmlsdGVyTG9nTWVzc2FnZXMoKTtcblxuXHRcdC8vIHN1YnNjcmliZSB0byBsb2dnaW5nU2VydmljZS5sb2dNZXNzYWdlc0NoYW5nZWQgZXZlbnQsIHRvIHJlZnJlc2gsIHdoZW4gbmV3IG1lc3NhZ2UgaXMgbG9nZ2VkXG5cdFx0dGhpcy5sb2dNZXNzYWdlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvZ2dpbmdTZXJ2aWNlLmxvZ01lc3NhZ2VzQ2hhbmdlZC5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuXHRcdFx0dGhpcy5sb2FkTG9nTWVzc2FnZXMoKTtcblx0XHRcdHRoaXMuZmlsdGVyTG9nTWVzc2FnZXMoKTtcblx0XHR9KTtcblxuXHRcdC8vIHN1YnNjcmliZSB0byBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5maWx0ZXJDaGFuZ2VkIGV2ZW50LCB0byByZWZyZXNoLCB3aGVuIGZpbHRlciBpcyBtb2RpZmllZFxuXHRcdHRoaXMuZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMubG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UuZmlsdGVyQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5maWx0ZXJMb2dNZXNzYWdlcygpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbiB1cC5cblx0ICovXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJuZ09uRGVzdHJveVwiO1xuXHRcdHRoaXMubG9nZ2VyLmVudHJ5KG1ldGhvZE5hbWUpO1xuXG5cdFx0dGhpcy5sb2dNZXNzYWdlc0NoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLmZpbHRlckNoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogRmlsdGVyIHRoZSBsb2cgbWVzc2FnZXMuXG5cdCAqL1xuXHRwdWJsaWMgZmlsdGVyTG9nTWVzc2FnZXMoKTogdm9pZCB7XG5cdFx0dGhpcy5sb2dNZXNzYWdlc0ZvckRpc3BsYXkgPSB0aGlzLmxvZ01lc3NhZ2VzLmZpbHRlcihcblx0XHRcdChtZXNzYWdlKSA9PiB0aGlzLmZpbHRlckxvZ01lc3NhZ2VzQnlMZXZlbChtZXNzYWdlKSAmJiB0aGlzLmZpbHRlckxvZ01lc3NhZ2VzQnlTZWFyY2gobWVzc2FnZSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHRoZSBsb2cgbWVzc2FnZSdzIGxldmVsIGZ1bGZpbGxzIHRoZSBsZXZlbCBjb25kaXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlIHRoZSBsb2cgbWVzc2FnZSB0byBjaGVja1xuXHQgKiBAcmV0dXJucyB0cnVlIGlmIGNoZWNrIHdhcyBzdWNjZXNzZnVsXG5cdCAqL1xuXHRwdWJsaWMgZmlsdGVyTG9nTWVzc2FnZXNCeUxldmVsKG1lc3NhZ2U6IExvZ01lc3NhZ2UpOiBib29sZWFuIHtcblx0XHRjb25zdCBsZXZlbFZhbHVlID0gdGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5sZXZlbDtcblx0XHRyZXR1cm4gTG9nTGV2ZWxDb252ZXJ0ZXIubGV2ZWxGcm9tU3RyaW5nKG1lc3NhZ2UubGV2ZWwpID49IExvZ0xldmVsQ29udmVydGVyLmxldmVsRnJvbVN0cmluZyhsZXZlbFZhbHVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgbG9nIG1lc3NhZ2UgZnVsZmlsbHMgdGhlIHNlYXJjaCBjb25kaXRpb24uXG5cdCAqXG5cdCAqIFRoZSBzZWFyY2ggdmFsdWUgZ2V0cyBzZWFyY2hlZCBpbjpcblx0ICogLSBsb2dnZXIgbmFtZVxuXHQgKiAtIG1ldGhvZCBuYW1lXG5cdCAqIC0gbWVzc2FnZVxuXHQgKlxuXHQgKiBAcGFyYW0gbWVzc2FnZSB0aGUgbG9nIG1lc3NhZ2UgdG8gY2hlY2tcblx0ICogQHJldHVybnMgdHJ1ZSBpZiBjaGVjayB3YXMgc3VjY2Vzc2Z1bFxuXHQgKi9cblx0cHVibGljIGZpbHRlckxvZ01lc3NhZ2VzQnlTZWFyY2gobWVzc2FnZTogTG9nTWVzc2FnZSk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cCh0aGlzLmxvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlLnNlYXJjaCwgXCJpXCIpO1xuXHRcdHJldHVybiBtZXNzYWdlLmxvZ2dlci5zZWFyY2goc2VhcmNoVmFsdWUpID49IDAgfHxcblx0XHRcdG1lc3NhZ2UubWV0aG9kTmFtZS5zZWFyY2goc2VhcmNoVmFsdWUpID49IDAgfHxcblx0XHRcdG1lc3NhZ2UubWVzc2FnZS5qb2luKFwifFwiKS5zZWFyY2goc2VhcmNoVmFsdWUpID49IDA7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZCB0aGUgY3VycmVudCBsb2cgbWVzc2FnZXMuXG5cdCAqIEZvciB1bml0IHRlc3QgcHVycG9zZXMgbWFpbmx5LlxuXHQgKi9cblx0cHVibGljIGxvYWRMb2dNZXNzYWdlcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2NhbFN0b3JhZ2VLZXlzKSB7XG5cdFx0XHR0aGlzLmxvZ01lc3NhZ2VzID0gW107XG5cdFx0XHRmb3IgKGNvbnN0IGxvY2FsU3RvcmFnZUtleSBvZiB0aGlzLmxvY2FsU3RvcmFnZUtleXMuc3BsaXQoXCIsXCIpKSB7XG5cdFx0XHRcdHRoaXMubG9nTWVzc2FnZXMgPSB0aGlzLmxvZ01lc3NhZ2VzLmNvbmNhdCh0aGlzLmxvZ2dpbmdTZXJ2aWNlLmdldExvZ01lc3NhZ2VzRnJvbUxvY2FsU3RvcmFnZShsb2NhbFN0b3JhZ2VLZXkpKTtcblx0XHRcdH1cblx0XHRcdHRoaXMubG9nTWVzc2FnZXMgPSB0aGlzLmxvZ01lc3NhZ2VzLnNvcnQoKGEsIGIpID0+IGEudGltZVN0YW1wLmdldFRpbWUoKSAtIGIudGltZVN0YW1wLmdldFRpbWUoKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubG9nTWVzc2FnZXMgPSB0aGlzLmxvZ2dpbmdTZXJ2aWNlLmdldExvZ01lc3NhZ2VzKCk7XG5cdFx0fVxuXHR9XG59XG4iLCI8aW9uLWxpc3Q+XG5cdDxpb24taXRlbSAqbmdGb3I9XCJsZXQgbG9nTWVzc2FnZSBvZiBsb2dNZXNzYWdlc0ZvckRpc3BsYXlcIj5cblx0XHQ8aW9uLWxhYmVsPlxuXHRcdFx0PHA+e3sgbG9nTWVzc2FnZS50aW1lU3RhbXAgfCBkYXRlOidkZC5NTS55eXl5IEhIOm1tOnNzJyB9fSB7eyBsb2dNZXNzYWdlLmxldmVsIH19PC9wPlxuXHRcdFx0PHA+e3sgbG9nTWVzc2FnZS5sb2dnZXIgfX08L3A+XG5cdFx0XHQ8cD5cblx0XHRcdFx0e3sgbG9nTWVzc2FnZS5tZXRob2ROYW1lIH19XG5cdFx0XHRcdDxzcGFuICpuZ0Zvcj1cImxldCBtZXNzYWdlUGFydCBvZiBsb2dNZXNzYWdlLm1lc3NhZ2VcIj4ge3sgbWVzc2FnZVBhcnQgfX0gPC9zcGFuPlxuXHRcdFx0PC9wPlxuXHRcdDwvaW9uLWxhYmVsPlxuXHQ8L2lvbi1pdGVtPlxuPC9pb24tbGlzdD4iXX0=
@@ -0,0 +1,64 @@
1
+ import { EventEmitter, Injectable } from "@angular/core";
2
+ import { LoggingService } from "ionic-logging-service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "ionic-logging-service";
5
+ /**
6
+ * Service for storing filter settings for logging viewer.
7
+ */
8
+ export class LoggingViewerFilterService {
9
+ /**
10
+ * Creates a new instance of the service.
11
+ *
12
+ * @param loggingService needed for internal logging.
13
+ */
14
+ constructor(loggingService) {
15
+ this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Filter.Service");
16
+ const methodName = "ctor";
17
+ this.logger.entry(methodName);
18
+ this.levelValue = "DEBUG";
19
+ this.searchValue = "";
20
+ this.filterChanged = new EventEmitter();
21
+ this.logger.exit(methodName);
22
+ }
23
+ /**
24
+ * Gets the current log level.
25
+ *
26
+ * @return log level
27
+ */
28
+ get level() {
29
+ return this.levelValue;
30
+ }
31
+ /**
32
+ * Sets the new log level and emits a filterChanged event.
33
+ *
34
+ * @param value new slog level
35
+ */
36
+ set level(value) {
37
+ this.levelValue = value;
38
+ this.filterChanged.emit();
39
+ }
40
+ /**
41
+ * Gets the current search value.
42
+ *
43
+ * @return search value
44
+ */
45
+ // eslint-disable-next-line @typescript-eslint/member-ordering
46
+ get search() {
47
+ return this.searchValue;
48
+ }
49
+ /**
50
+ * Sets the new search value and emits a filterChanged event.
51
+ *
52
+ * @param value new search value
53
+ */
54
+ set search(value) {
55
+ this.searchValue = value;
56
+ this.filterChanged.emit();
57
+ }
58
+ }
59
+ LoggingViewerFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerFilterService, deps: [{ token: i1.LoggingService }], target: i0.ɵɵFactoryTarget.Injectable });
60
+ LoggingViewerFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerFilterService });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerFilterService, decorators: [{
62
+ type: Injectable
63
+ }], ctorParameters: function () { return [{ type: i1.LoggingService }]; } });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXItZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvbGliL2xvZ2dpbmctdmlld2VyLWZpbHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRS9EOztHQUVHO0FBRUgsTUFBTSxPQUFPLDBCQUEwQjtJQVd0Qzs7OztPQUlHO0lBQ0gsWUFDQyxjQUE4QjtRQUU5QixJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxLQUFLO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxLQUFLLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsOERBQThEO0lBQzlELElBQVcsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLE1BQU0sQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7dUhBbkVXLDBCQUEwQjsySEFBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmdTZXJ2aWNlIH0gZnJvbSBcImlvbmljLWxvZ2dpbmctc2VydmljZVwiO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHN0b3JpbmcgZmlsdGVyIHNldHRpbmdzIGZvciBsb2dnaW5nIHZpZXdlci5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlIHtcblxuXHQvKipcblx0ICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIGZpbHRlciB3YXMgY2hhbmdlZC5cblx0ICovXG5cdHB1YmxpYyBmaWx0ZXJDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cblx0cHJpdmF0ZSBsb2dnZXI6IExvZ2dlcjtcblx0cHJpdmF0ZSBsZXZlbFZhbHVlOiBzdHJpbmc7XG5cdHByaXZhdGUgc2VhcmNoVmFsdWU6IHN0cmluZztcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgc2VydmljZS5cblx0ICpcblx0ICogQHBhcmFtIGxvZ2dpbmdTZXJ2aWNlIG5lZWRlZCBmb3IgaW50ZXJuYWwgbG9nZ2luZy5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGxvZ2dpbmdTZXJ2aWNlOiBMb2dnaW5nU2VydmljZSkge1xuXG5cdFx0dGhpcy5sb2dnZXIgPSBsb2dnaW5nU2VydmljZS5nZXRMb2dnZXIoXCJJb25pYy5Mb2dnaW5nLlZpZXdlci5GaWx0ZXIuU2VydmljZVwiKTtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJjdG9yXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxldmVsVmFsdWUgPSBcIkRFQlVHXCI7XG5cdFx0dGhpcy5zZWFyY2hWYWx1ZSA9IFwiXCI7XG5cdFx0dGhpcy5maWx0ZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjdXJyZW50IGxvZyBsZXZlbC5cblx0ICpcblx0ICogQHJldHVybiBsb2cgbGV2ZWxcblx0ICovXG5cdHB1YmxpYyBnZXQgbGV2ZWwoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sZXZlbFZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIG5ldyBsb2cgbGV2ZWwgYW5kIGVtaXRzIGEgZmlsdGVyQ2hhbmdlZCBldmVudC5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIG5ldyBzbG9nIGxldmVsXG5cdCAqL1xuXHRwdWJsaWMgc2V0IGxldmVsKHZhbHVlOiBzdHJpbmcpIHtcblx0XHR0aGlzLmxldmVsVmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLmZpbHRlckNoYW5nZWQuZW1pdCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGN1cnJlbnQgc2VhcmNoIHZhbHVlLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHNlYXJjaCB2YWx1ZVxuXHQgKi9cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcblx0cHVibGljIGdldCBzZWFyY2goKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zZWFyY2hWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBuZXcgc2VhcmNoIHZhbHVlIGFuZCBlbWl0cyBhIGZpbHRlckNoYW5nZWQgZXZlbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB2YWx1ZSBuZXcgc2VhcmNoIHZhbHVlXG5cdCAqL1xuXHRwdWJsaWMgc2V0IHNlYXJjaCh2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZWFyY2hWYWx1ZSA9IHZhbHVlO1xuXHRcdHRoaXMuZmlsdGVyQ2hhbmdlZC5lbWl0KCk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { Component } from "@angular/core";
2
+ import { LoggingService } from "ionic-logging-service";
3
+ import { LoggingViewerFilterService } from "../logging-viewer-filter.service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ionic-logging-service";
6
+ import * as i2 from "../logging-viewer-filter.service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "@ionic/angular";
10
+ /**
11
+ * Component for displaying the log levels for filtering the current logs.
12
+ *
13
+ * The component can be embedded in any web page using:
14
+ *
15
+ * &lt;ionic-logging-viewer-levels>&lt;/ionic-logging-viewer-levels>
16
+ */
17
+ export class LoggingViewerLevelsComponent {
18
+ /**
19
+ * Creates a new instance of the component.
20
+ */
21
+ constructor(loggingService, loggingViewerFilterService) {
22
+ this.loggingViewerFilterService = loggingViewerFilterService;
23
+ this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Levels.Component");
24
+ const methodName = "ctor";
25
+ this.logger.entry(methodName);
26
+ this.logLevels = [];
27
+ this.logLevels.push("DEBUG", "INFO", "WARN", "ERROR");
28
+ this.logger.exit(methodName);
29
+ }
30
+ /**
31
+ * Initialize the component.
32
+ *
33
+ * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html).
34
+ */
35
+ ngOnInit() {
36
+ const methodName = "ngOnInit";
37
+ this.logger.entry(methodName);
38
+ this.selectedLevel = this.loggingViewerFilterService.level;
39
+ // subscribe to loggingViewerFilterService.filterChanged event, to refresh,
40
+ // when someone else modifies the level
41
+ this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
42
+ this.selectedLevel = this.loggingViewerFilterService.level;
43
+ });
44
+ this.logger.exit(methodName);
45
+ }
46
+ /**
47
+ * Clean up.
48
+ */
49
+ ngOnDestroy() {
50
+ const methodName = "ngOnDestroy";
51
+ this.logger.entry(methodName);
52
+ this.filterChangedSubscription.unsubscribe();
53
+ this.logger.exit(methodName);
54
+ }
55
+ /**
56
+ * Callback when the level was changed in the UI.
57
+ */
58
+ onLevelChanged() {
59
+ const methodName = "onLevelChanged";
60
+ this.logger.entry(methodName, this.selectedLevel);
61
+ this.loggingViewerFilterService.level = this.selectedLevel;
62
+ this.logger.exit(methodName);
63
+ }
64
+ }
65
+ LoggingViewerLevelsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerLevelsComponent, deps: [{ token: i1.LoggingService }, { token: i2.LoggingViewerFilterService }], target: i0.ɵɵFactoryTarget.Component });
66
+ LoggingViewerLevelsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: LoggingViewerLevelsComponent, selector: "ionic-logging-viewer-levels", ngImport: i0, template: "<ion-segment [(ngModel)]=\"selectedLevel\" (ionChange)=\"onLevelChanged()\">\n\t<ion-segment-button *ngFor=\"let logLevel of logLevels\" [value]=\"logLevel\">\n\t\t<ion-label>{{ logLevel }}</ion-label>\n\t</ion-segment-button>\n</ion-segment>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i5.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: i5.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "directive", type: i5.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }] });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerLevelsComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: "ionic-logging-viewer-levels", template: "<ion-segment [(ngModel)]=\"selectedLevel\" (ionChange)=\"onLevelChanged()\">\n\t<ion-segment-button *ngFor=\"let logLevel of logLevels\" [value]=\"logLevel\">\n\t\t<ion-label>{{ logLevel }}</ion-label>\n\t</ion-segment-button>\n</ion-segment>" }]
70
+ }], ctorParameters: function () { return [{ type: i1.LoggingService }, { type: i2.LoggingViewerFilterService }]; } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXItbGV2ZWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvbmljLWxvZ2dpbmctdmlld2VyL3NyYy9saWIvbG9nZ2luZy12aWV3ZXItbGV2ZWxzL2xvZ2dpbmctdmlld2VyLWxldmVscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvbGliL2xvZ2dpbmctdmlld2VyLWxldmVscy9sb2dnaW5nLXZpZXdlci1sZXZlbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFVLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBRTlFOzs7Ozs7R0FNRztBQU1ILE1BQU0sT0FBTyw0QkFBNEI7SUFleEM7O09BRUc7SUFDSCxZQUNDLGNBQThCLEVBQ3RCLDBCQUFzRDtRQUF0RCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRTlELElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDbEIsT0FBTyxFQUNQLE1BQU0sRUFDTixNQUFNLEVBQ04sT0FBTyxDQUNQLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVE7UUFDZCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO1FBRTNELDJFQUEyRTtRQUMzRSx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNwQixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUUzRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDOzt5SEEvRVcsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsbUVDbkJ6QyxvUEFJYzsyRkRlRCw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0MsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmdTZXJ2aWNlIH0gZnJvbSBcImlvbmljLWxvZ2dpbmctc2VydmljZVwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9sb2dnaW5nLXZpZXdlci1maWx0ZXIuc2VydmljZVwiO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyB0aGUgbG9nIGxldmVscyBmb3IgZmlsdGVyaW5nIHRoZSBjdXJyZW50IGxvZ3MuXG4gKlxuICogVGhlIGNvbXBvbmVudCBjYW4gYmUgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIHVzaW5nOlxuICpcbiAqICZsdDtpb25pYy1sb2dnaW5nLXZpZXdlci1sZXZlbHM+Jmx0Oy9pb25pYy1sb2dnaW5nLXZpZXdlci1sZXZlbHM+XG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJpb25pYy1sb2dnaW5nLXZpZXdlci1sZXZlbHNcIixcblx0dGVtcGxhdGVVcmw6IFwiLi9sb2dnaW5nLXZpZXdlci1sZXZlbHMuY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXCIuL2xvZ2dpbmctdmlld2VyLWxldmVscy5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBMb2dnaW5nVmlld2VyTGV2ZWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG5cdC8qKlxuXHQgKiBMb2cgbGV2ZWxzIHVzZWQgZm9yIGZpbHRlcmluZzogREVCVUcsIElORk8sIFdBUk4sIEVSUk9SXG5cdCAqL1xuXHRwdWJsaWMgbG9nTGV2ZWxzOiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogU2VsZWN0ZWQgbGV2ZWwuXG5cdCAqL1xuXHRwdWJsaWMgc2VsZWN0ZWRMZXZlbDogc3RyaW5nO1xuXG5cdHByaXZhdGUgbG9nZ2VyOiBMb2dnZXI7XG5cdHByaXZhdGUgZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UsXG5cdFx0cHJpdmF0ZSBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZTogTG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UpIHtcblxuXHRcdHRoaXMubG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2UuZ2V0TG9nZ2VyKFwiSW9uaWMuTG9nZ2luZy5WaWV3ZXIuTGV2ZWxzLkNvbXBvbmVudFwiKTtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJjdG9yXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxvZ0xldmVscyA9IFtdO1xuXHRcdHRoaXMubG9nTGV2ZWxzLnB1c2goXG5cdFx0XHRcIkRFQlVHXCIsXG5cdFx0XHRcIklORk9cIixcblx0XHRcdFwiV0FSTlwiLFxuXHRcdFx0XCJFUlJPUlwiLFxuXHRcdCk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhpcyBpcyBkb25lIGJ5IHJlYWRpbmcgdGhlIGZpbHRlciBkYXRhIGZyb20gW0xvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlXShMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5odG1sKS5cblx0ICovXG5cdHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJuZ09uSW5pdFwiO1xuXHRcdHRoaXMubG9nZ2VyLmVudHJ5KG1ldGhvZE5hbWUpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZExldmVsID0gdGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5sZXZlbDtcblxuXHRcdC8vIHN1YnNjcmliZSB0byBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5maWx0ZXJDaGFuZ2VkIGV2ZW50LCB0byByZWZyZXNoLFxuXHRcdC8vIHdoZW4gc29tZW9uZSBlbHNlIG1vZGlmaWVzIHRoZSBsZXZlbFxuXHRcdHRoaXMuZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMubG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UuZmlsdGVyQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5zZWxlY3RlZExldmVsID0gdGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5sZXZlbDtcblx0XHR9KTtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYW4gdXAuXG5cdCAqL1xuXHRwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwibmdPbkRlc3Ryb3lcIjtcblx0XHR0aGlzLmxvZ2dlci5lbnRyeShtZXRob2ROYW1lKTtcblxuXHRcdHRoaXMuZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayB3aGVuIHRoZSBsZXZlbCB3YXMgY2hhbmdlZCBpbiB0aGUgVUkuXG5cdCAqL1xuXHRwdWJsaWMgb25MZXZlbENoYW5nZWQoKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwib25MZXZlbENoYW5nZWRcIjtcblx0XHR0aGlzLmxvZ2dlci5lbnRyeShtZXRob2ROYW1lLCB0aGlzLnNlbGVjdGVkTGV2ZWwpO1xuXG5cdFx0dGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5sZXZlbCA9IHRoaXMuc2VsZWN0ZWRMZXZlbDtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cbn1cbiIsIjxpb24tc2VnbWVudCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTGV2ZWxcIiAoaW9uQ2hhbmdlKT1cIm9uTGV2ZWxDaGFuZ2VkKClcIj5cblx0PGlvbi1zZWdtZW50LWJ1dHRvbiAqbmdGb3I9XCJsZXQgbG9nTGV2ZWwgb2YgbG9nTGV2ZWxzXCIgW3ZhbHVlXT1cImxvZ0xldmVsXCI+XG5cdFx0PGlvbi1sYWJlbD57eyBsb2dMZXZlbCB9fTwvaW9uLWxhYmVsPlxuXHQ8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbjwvaW9uLXNlZ21lbnQ+Il19
@@ -0,0 +1,141 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { ModalController, Platform, AlertController } from "@ionic/angular";
3
+ import { LoggingService } from "ionic-logging-service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ionic/angular";
6
+ import * as i2 from "ionic-logging-service";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "../logging-viewer/logging-viewer.component";
9
+ import * as i5 from "../logging-viewer-search/logging-viewer-search.component";
10
+ import * as i6 from "../logging-viewer-levels/logging-viewer-levels.component";
11
+ /**
12
+ * Ionic modal containing [LoggingViewerComponent](LoggingViewerComponent.html),
13
+ * [LoggingViewerLevelsComponent](LoggingViewerLevelsComponent.html) and
14
+ * [LoggingViewerSearchComponent](LoggingViewerSearchComponent.html).
15
+ */
16
+ export class LoggingViewerModalComponent {
17
+ /**
18
+ * Creates a new instance of the component.
19
+ */
20
+ constructor(platform, alertController, modalController, loggingService) {
21
+ this.alertController = alertController;
22
+ this.modalController = modalController;
23
+ this.loggingService = loggingService;
24
+ this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Modal.Component");
25
+ const methodName = "ctor";
26
+ this.logger.entry(methodName);
27
+ this.isAndroid = platform.is("android");
28
+ this.logger.exit(methodName);
29
+ }
30
+ /**
31
+ * Initializes the LoggingViewerModalComponent.
32
+ * It configures the supported translations.
33
+ */
34
+ ngOnInit() {
35
+ // prepare translations
36
+ this.translations = {};
37
+ this.translations[LoggingViewerModalComponent.languageEn] = {
38
+ cancel: "Cancel",
39
+ confirmDelete: "Delete all log messages?",
40
+ ok: "Ok",
41
+ searchPlaceholder: "Search",
42
+ title: "Logging",
43
+ };
44
+ this.translations[LoggingViewerModalComponent.languageDe] = {
45
+ cancel: "Abbrechen",
46
+ confirmDelete: "Alle Logs löschen?",
47
+ ok: "Ok",
48
+ searchPlaceholder: "Suchen",
49
+ title: "Logging",
50
+ };
51
+ }
52
+ /**
53
+ * Eventhandler called by Ionic when the modal is opened.
54
+ */
55
+ ionViewDidEnter() {
56
+ const methodName = "ionViewDidEnter";
57
+ this.logger.entry(methodName);
58
+ this.logger.exit(methodName);
59
+ }
60
+ /**
61
+ * Eventhandler called when the cancel button is clicked.
62
+ */
63
+ async onClose() {
64
+ const methodName = "onClose";
65
+ this.logger.entry(methodName);
66
+ await this.modalController.dismiss();
67
+ this.logger.exit(methodName);
68
+ }
69
+ /**
70
+ * Eventhandler called when the clear button is clicked.
71
+ */
72
+ async onClearLogs() {
73
+ const methodName = "onClearLogs";
74
+ this.logger.entry(methodName);
75
+ const alert = await this.alertController.create({
76
+ header: this.getTranslation().confirmDelete,
77
+ buttons: [
78
+ {
79
+ text: this.getTranslation().cancel,
80
+ role: "cancel",
81
+ cssClass: "secondary"
82
+ },
83
+ {
84
+ text: this.getTranslation().ok,
85
+ handler: () => {
86
+ this.clearLogs();
87
+ }
88
+ },
89
+ ]
90
+ });
91
+ await alert.present();
92
+ this.logger.exit(methodName);
93
+ }
94
+ /**
95
+ * Clear logs.
96
+ */
97
+ clearLogs() {
98
+ if (this.localStorageKeys) {
99
+ for (const localStorageKey of this.localStorageKeys.split(",")) {
100
+ this.loggingService.removeLogMessagesFromLocalStorage(localStorageKey);
101
+ }
102
+ }
103
+ else {
104
+ this.loggingService.removeLogMessages();
105
+ }
106
+ }
107
+ /**
108
+ * Helper method returning the current translation:
109
+ * - the property translation if defined
110
+ * - the translation according property language if valid
111
+ * - English translation, otherwise
112
+ */
113
+ getTranslation() {
114
+ if (typeof this.translation !== "undefined") {
115
+ return this.translation;
116
+ }
117
+ else if (typeof this.language !== "undefined" && typeof this.translations[this.language] === "object") {
118
+ return this.translations[this.language];
119
+ }
120
+ else {
121
+ return this.translations[LoggingViewerModalComponent.languageEn];
122
+ }
123
+ }
124
+ }
125
+ LoggingViewerModalComponent.languageEn = "en";
126
+ LoggingViewerModalComponent.languageDe = "de";
127
+ LoggingViewerModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerModalComponent, deps: [{ token: i1.Platform }, { token: i1.AlertController }, { token: i1.ModalController }, { token: i2.LoggingService }], target: i0.ɵɵFactoryTarget.Component });
128
+ LoggingViewerModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: LoggingViewerModalComponent, selector: "ionic-logging-viewer-modal", inputs: { language: "language", translation: "translation", localStorageKeys: "localStorageKeys", allowClearLogs: "allowClearLogs" }, ngImport: i0, template: "<ion-header>\n\t<ion-toolbar color=primary>\n\t\t<ion-title>{{ getTranslation().title }}</ion-title>\n\t\t<ion-buttons slot=\"start\">\n\t\t\t<ion-button *ngIf=\"!isAndroid\" (click)=\"onClose()\">\n\t\t\t\t{{ getTranslation().cancel }}\n\t\t\t</ion-button>\n\t\t\t<ion-button *ngIf=\"isAndroid\" icon-only (click)=\"onClose()\">\n\t\t\t\t<ion-icon name=\"md-close\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-search [placeholder]=\"getTranslation().searchPlaceholder\"></ionic-logging-viewer-search>\n\t\t<ion-buttons slot=\"end\" *ngIf=\"allowClearLogs !== false\" class=\"clearLogs\">\n\t\t\t<ion-button (click)=\"onClearLogs()\">\n\t\t\t\t<ion-icon name=\"trash-outline\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-levels></ionic-logging-viewer-levels>\n\t</ion-toolbar>\n</ion-header>\n<ion-content>\n\t<ionic-logging-viewer [localStorageKeys]=\"localStorageKeys\"></ionic-logging-viewer>\n</ion-content>", styles: ["ionic-logging-viewer-levels{width:100%;padding-left:12px;padding-right:12px}.clearLogs{padding-top:3px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.LoggingViewerComponent, selector: "ionic-logging-viewer", inputs: ["localStorageKeys"] }, { kind: "component", type: i5.LoggingViewerSearchComponent, selector: "ionic-logging-viewer-search", inputs: ["placeholder"] }, { kind: "component", type: i6.LoggingViewerLevelsComponent, selector: "ionic-logging-viewer-levels" }] });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerModalComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ selector: "ionic-logging-viewer-modal", template: "<ion-header>\n\t<ion-toolbar color=primary>\n\t\t<ion-title>{{ getTranslation().title }}</ion-title>\n\t\t<ion-buttons slot=\"start\">\n\t\t\t<ion-button *ngIf=\"!isAndroid\" (click)=\"onClose()\">\n\t\t\t\t{{ getTranslation().cancel }}\n\t\t\t</ion-button>\n\t\t\t<ion-button *ngIf=\"isAndroid\" icon-only (click)=\"onClose()\">\n\t\t\t\t<ion-icon name=\"md-close\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-search [placeholder]=\"getTranslation().searchPlaceholder\"></ionic-logging-viewer-search>\n\t\t<ion-buttons slot=\"end\" *ngIf=\"allowClearLogs !== false\" class=\"clearLogs\">\n\t\t\t<ion-button (click)=\"onClearLogs()\">\n\t\t\t\t<ion-icon name=\"trash-outline\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-levels></ionic-logging-viewer-levels>\n\t</ion-toolbar>\n</ion-header>\n<ion-content>\n\t<ionic-logging-viewer [localStorageKeys]=\"localStorageKeys\"></ionic-logging-viewer>\n</ion-content>", styles: ["ionic-logging-viewer-levels{width:100%;padding-left:12px;padding-right:12px}.clearLogs{padding-top:3px}\n"] }]
132
+ }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i1.AlertController }, { type: i1.ModalController }, { type: i2.LoggingService }]; }, propDecorators: { language: [{
133
+ type: Input
134
+ }], translation: [{
135
+ type: Input
136
+ }], localStorageKeys: [{
137
+ type: Input
138
+ }], allowClearLogs: [{
139
+ type: Input
140
+ }] } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy12aWV3ZXIvc3JjL2xpYi9sb2dnaW5nLXZpZXdlci1tb2RhbC9sb2dnaW5nLXZpZXdlci1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvbGliL2xvZ2dpbmctdmlld2VyLW1vZGFsL2xvZ2dpbmctdmlld2VyLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVFLE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFJL0Q7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTywyQkFBMkI7SUF3Q3ZDOztPQUVHO0lBQ0gsWUFDQyxRQUFrQixFQUNWLGVBQWdDLEVBQ2hDLGVBQWdDLEVBQ2hDLGNBQThCO1FBRjlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLE1B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QUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLElBQUksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDeEcsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0YsQ0FBQzs7QUE1SmMsc0NBQVUsR0FBRyxJQUFLLENBQUE7QUFDbEIsc0NBQVUsR0FBRyxJQUFLLENBQUE7d0hBSHJCLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHdNQ2xCeEMsK2hDQTBCYzsyRkRSRCwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0MsNEJBQTRCO3dMQWMvQixRQUFRO3NCQURkLEtBQUs7Z0JBUUMsV0FBVztzQkFEakIsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUGxhdGZvcm0sIEFsZXJ0Q29udHJvbGxlciB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xuXG5pbXBvcnQgeyBMb2dnZXIsIExvZ2dpbmdTZXJ2aWNlIH0gZnJvbSBcImlvbmljLWxvZ2dpbmctc2VydmljZVwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nVmlld2VyVHJhbnNsYXRpb24gfSBmcm9tIFwiLi4vbG9nZ2luZy12aWV3ZXItdHJhbnNsYXRpb24ubW9kZWxcIjtcblxuLyoqXG4gKiBJb25pYyBtb2RhbCBjb250YWluaW5nIFtMb2dnaW5nVmlld2VyQ29tcG9uZW50XShMb2dnaW5nVmlld2VyQ29tcG9uZW50Lmh0bWwpLFxuICogW0xvZ2dpbmdWaWV3ZXJMZXZlbHNDb21wb25lbnRdKExvZ2dpbmdWaWV3ZXJMZXZlbHNDb21wb25lbnQuaHRtbCkgYW5kXG4gKiBbTG9nZ2luZ1ZpZXdlclNlYXJjaENvbXBvbmVudF0oTG9nZ2luZ1ZpZXdlclNlYXJjaENvbXBvbmVudC5odG1sKS5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImlvbmljLWxvZ2dpbmctdmlld2VyLW1vZGFsXCIsXG5cdHRlbXBsYXRlVXJsOiBcIi4vbG9nZ2luZy12aWV3ZXItbW9kYWwuY29tcG9uZW50Lmh0bWxcIixcblx0c3R5bGVVcmxzOiBbXCIuL2xvZ2dpbmctdmlld2VyLW1vZGFsLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdWaWV3ZXJNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cblx0cHJpdmF0ZSBzdGF0aWMgbGFuZ3VhZ2VFbiA9IFwiZW5cIjtcblx0cHJpdmF0ZSBzdGF0aWMgbGFuZ3VhZ2VEZSA9IFwiZGVcIjtcblxuXHQvKipcblx0ICogTGFuZ3VhZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIG1vZGFsLlxuXHQgKiBDdXJyZW50bHkgc3VwcG9ydGVkOiBlbiwgZGVcblx0ICovXG5cdEBJbnB1dCgpXG5cdHB1YmxpYyBsYW5ndWFnZTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUcmFuc2xhdGlvbiB0byBiZSB1c2VkIGZvciB0aGUgbW9kYWwuXG5cdCAqIElmIHNwZWNpZmllZCwgdGhlIGxhbmd1YWdlIGlzIGlnbm9yZWQuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRwdWJsaWMgdHJhbnNsYXRpb246IExvZ2dpbmdWaWV3ZXJUcmFuc2xhdGlvbjtcblxuXHQvKipcblx0ICogQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbG9jYWxTdG9yYWdlS2V5cy4gSWYgc2V0LCB0aGUgbG9ncyBnZXQgbG9hZGVkIGZyb20gbG9jYWxTdG9yYWdlIGluc3RlYWQgb2YgbWVtb3J5LlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIGxvY2FsU3RvcmFnZUtleXM6IHN0cmluZztcblxuXHQvKipcblx0ICogRmxhZyBzaG93aW5nIGEgZGVsZXRlIGJ1dHRvbiwgd2hpY2ggcmVtb3ZlcyBhbGwgZXhpc3RpbmcgbG9nIG1lc3NhZ2VzLlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIGFsbG93Q2xlYXJMb2dzOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBGbGFnIGNvbnRyb2xsaW5nIHdoaWNoIGNsb3NlIGJ1dHRvbiB3aWxsIGJlIHNob3duLlxuXHQgKi9cblx0cHVibGljIGlzQW5kcm9pZDogYm9vbGVhbjtcblxuXHRwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xuXG5cdHByaXZhdGUgdHJhbnNsYXRpb25zOiB7IFtsYW5ndWFnZTogc3RyaW5nXTogTG9nZ2luZ1ZpZXdlclRyYW5zbGF0aW9uIH07XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudC5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHBsYXRmb3JtOiBQbGF0Zm9ybSxcblx0XHRwcml2YXRlIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuXHRcdHByaXZhdGUgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXIsXG5cdFx0cHJpdmF0ZSBsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UpIHtcblxuXHRcdHRoaXMubG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2UuZ2V0TG9nZ2VyKFwiSW9uaWMuTG9nZ2luZy5WaWV3ZXIuTW9kYWwuQ29tcG9uZW50XCIpO1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcImN0b3JcIjtcblx0XHR0aGlzLmxvZ2dlci5lbnRyeShtZXRob2ROYW1lKTtcblxuXHRcdHRoaXMuaXNBbmRyb2lkID0gcGxhdGZvcm0uaXMoXCJhbmRyb2lkXCIpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgTG9nZ2luZ1ZpZXdlck1vZGFsQ29tcG9uZW50LlxuXHQgKiBJdCBjb25maWd1cmVzIHRoZSBzdXBwb3J0ZWQgdHJhbnNsYXRpb25zLlxuXHQgKi9cblx0cHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHByZXBhcmUgdHJhbnNsYXRpb25zXG5cdFx0dGhpcy50cmFuc2xhdGlvbnMgPSB7fTtcblx0XHR0aGlzLnRyYW5zbGF0aW9uc1tMb2dnaW5nVmlld2VyTW9kYWxDb21wb25lbnQubGFuZ3VhZ2VFbl0gPSB7XG5cdFx0XHRjYW5jZWw6IFwiQ2FuY2VsXCIsXG5cdFx0XHRjb25maXJtRGVsZXRlOiBcIkRlbGV0ZSBhbGwgbG9nIG1lc3NhZ2VzP1wiLFxuXHRcdFx0b2s6IFwiT2tcIixcblx0XHRcdHNlYXJjaFBsYWNlaG9sZGVyOiBcIlNlYXJjaFwiLFxuXHRcdFx0dGl0bGU6IFwiTG9nZ2luZ1wiLFxuXHRcdH07XG5cdFx0dGhpcy50cmFuc2xhdGlvbnNbTG9nZ2luZ1ZpZXdlck1vZGFsQ29tcG9uZW50Lmxhbmd1YWdlRGVdID0ge1xuXHRcdFx0Y2FuY2VsOiBcIkFiYnJlY2hlblwiLFxuXHRcdFx0Y29uZmlybURlbGV0ZTogXCJBbGxlIExvZ3MgbMO2c2NoZW4/XCIsXG5cdFx0XHRvazogXCJPa1wiLFxuXHRcdFx0c2VhcmNoUGxhY2Vob2xkZXI6IFwiU3VjaGVuXCIsXG5cdFx0XHR0aXRsZTogXCJMb2dnaW5nXCIsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudGhhbmRsZXIgY2FsbGVkIGJ5IElvbmljIHdoZW4gdGhlIG1vZGFsIGlzIG9wZW5lZC5cblx0ICovXG5cdHB1YmxpYyBpb25WaWV3RGlkRW50ZXIoKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwiaW9uVmlld0RpZEVudGVyXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50aGFuZGxlciBjYWxsZWQgd2hlbiB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIG9uQ2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwib25DbG9zZVwiO1xuXHRcdHRoaXMubG9nZ2VyLmVudHJ5KG1ldGhvZE5hbWUpO1xuXG5cdFx0YXdhaXQgdGhpcy5tb2RhbENvbnRyb2xsZXIuZGlzbWlzcygpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIGNsZWFyIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIG9uQ2xlYXJMb2dzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcIm9uQ2xlYXJMb2dzXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHRjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDb250cm9sbGVyLmNyZWF0ZSh7XG5cdFx0XHRoZWFkZXI6IHRoaXMuZ2V0VHJhbnNsYXRpb24oKS5jb25maXJtRGVsZXRlLFxuXHRcdFx0YnV0dG9uczogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dGV4dDogdGhpcy5nZXRUcmFuc2xhdGlvbigpLmNhbmNlbCxcblx0XHRcdFx0XHRyb2xlOiBcImNhbmNlbFwiLFxuXHRcdFx0XHRcdGNzc0NsYXNzOiBcInNlY29uZGFyeVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0ZXh0OiB0aGlzLmdldFRyYW5zbGF0aW9uKCkub2ssXG5cdFx0XHRcdFx0aGFuZGxlcjogKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5jbGVhckxvZ3MoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRdXG5cdFx0fSk7XG5cdFx0YXdhaXQgYWxlcnQucHJlc2VudCgpO1xuXG5cdFx0dGhpcy5sb2dnZXIuZXhpdChtZXRob2ROYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhciBsb2dzLlxuXHQgKi9cblx0cHVibGljIGNsZWFyTG9ncygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5sb2NhbFN0b3JhZ2VLZXlzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGxvY2FsU3RvcmFnZUtleSBvZiB0aGlzLmxvY2FsU3RvcmFnZUtleXMuc3BsaXQoXCIsXCIpKSB7XG5cdFx0XHRcdHRoaXMubG9nZ2luZ1NlcnZpY2UucmVtb3ZlTG9nTWVzc2FnZXNGcm9tTG9jYWxTdG9yYWdlKGxvY2FsU3RvcmFnZUtleSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubG9nZ2luZ1NlcnZpY2UucmVtb3ZlTG9nTWVzc2FnZXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGVscGVyIG1ldGhvZCByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdHJhbnNsYXRpb246XG5cdCAqIC0gdGhlIHByb3BlcnR5IHRyYW5zbGF0aW9uIGlmIGRlZmluZWRcblx0ICogLSB0aGUgdHJhbnNsYXRpb24gYWNjb3JkaW5nIHByb3BlcnR5IGxhbmd1YWdlIGlmIHZhbGlkXG5cdCAqIC0gRW5nbGlzaCB0cmFuc2xhdGlvbiwgb3RoZXJ3aXNlXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VHJhbnNsYXRpb24oKTogTG9nZ2luZ1ZpZXdlclRyYW5zbGF0aW9uIHtcblx0XHRpZiAodHlwZW9mIHRoaXMudHJhbnNsYXRpb24gIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9uO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubGFuZ3VhZ2UgIT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIHRoaXMudHJhbnNsYXRpb25zW3RoaXMubGFuZ3VhZ2VdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5sYW5ndWFnZV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLnRyYW5zbGF0aW9uc1tMb2dnaW5nVmlld2VyTW9kYWxDb21wb25lbnQubGFuZ3VhZ2VFbl07XG5cdFx0fVxuXHR9XG59XG4iLCI8aW9uLWhlYWRlcj5cblx0PGlvbi10b29sYmFyIGNvbG9yPXByaW1hcnk+XG5cdFx0PGlvbi10aXRsZT57eyBnZXRUcmFuc2xhdGlvbigpLnRpdGxlIH19PC9pb24tdGl0bGU+XG5cdFx0PGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuXHRcdFx0PGlvbi1idXR0b24gKm5nSWY9XCIhaXNBbmRyb2lkXCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuXHRcdFx0XHR7eyBnZXRUcmFuc2xhdGlvbigpLmNhbmNlbCB9fVxuXHRcdFx0PC9pb24tYnV0dG9uPlxuXHRcdFx0PGlvbi1idXR0b24gKm5nSWY9XCJpc0FuZHJvaWRcIiBpY29uLW9ubHkgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuXHRcdFx0XHQ8aW9uLWljb24gbmFtZT1cIm1kLWNsb3NlXCI+PC9pb24taWNvbj5cblx0XHRcdDwvaW9uLWJ1dHRvbj5cblx0XHQ8L2lvbi1idXR0b25zPlxuXHQ8L2lvbi10b29sYmFyPlxuXHQ8aW9uLXRvb2xiYXI+XG5cdFx0PGlvbmljLWxvZ2dpbmctdmlld2VyLXNlYXJjaCBbcGxhY2Vob2xkZXJdPVwiZ2V0VHJhbnNsYXRpb24oKS5zZWFyY2hQbGFjZWhvbGRlclwiPjwvaW9uaWMtbG9nZ2luZy12aWV3ZXItc2VhcmNoPlxuXHRcdDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCIgKm5nSWY9XCJhbGxvd0NsZWFyTG9ncyAhPT0gZmFsc2VcIiBjbGFzcz1cImNsZWFyTG9nc1wiPlxuXHRcdFx0PGlvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xlYXJMb2dzKClcIj5cblx0XHRcdFx0PGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cblx0XHRcdDwvaW9uLWJ1dHRvbj5cblx0XHQ8L2lvbi1idXR0b25zPlxuXHQ8L2lvbi10b29sYmFyPlxuXHQ8aW9uLXRvb2xiYXI+XG5cdFx0PGlvbmljLWxvZ2dpbmctdmlld2VyLWxldmVscz48L2lvbmljLWxvZ2dpbmctdmlld2VyLWxldmVscz5cblx0PC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cbjxpb24tY29udGVudD5cblx0PGlvbmljLWxvZ2dpbmctdmlld2VyIFtsb2NhbFN0b3JhZ2VLZXlzXT1cImxvY2FsU3RvcmFnZUtleXNcIj48L2lvbmljLWxvZ2dpbmctdmlld2VyPlxuPC9pb24tY29udGVudD4iXX0=
@@ -0,0 +1,73 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { LoggingService } from "ionic-logging-service";
3
+ import { LoggingViewerFilterService } from "../logging-viewer-filter.service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ionic-logging-service";
6
+ import * as i2 from "../logging-viewer-filter.service";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@ionic/angular";
9
+ /**
10
+ * Component for displaying the search bar for filtering the current logs.
11
+ *
12
+ * The component can be embedded in any web page using:
13
+ *
14
+ * &lt;ionic-logging-viewer-search placeholder="Search">&lt;/ionic-logging-viewer-search>
15
+ */
16
+ export class LoggingViewerSearchComponent {
17
+ /**
18
+ * Creates a new instance of the component.
19
+ */
20
+ constructor(loggingService, loggingViewerFilterService) {
21
+ this.loggingViewerFilterService = loggingViewerFilterService;
22
+ this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Search.Component");
23
+ const methodName = "ctor";
24
+ this.logger.entry(methodName);
25
+ this.logger.exit(methodName);
26
+ }
27
+ /**
28
+ * Initialize the component.
29
+ *
30
+ * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html).
31
+ */
32
+ ngOnInit() {
33
+ const methodName = "ngOnInit";
34
+ this.logger.entry(methodName);
35
+ if (!this.placeholder) {
36
+ this.placeholder = "Search";
37
+ }
38
+ this.search = this.loggingViewerFilterService.search;
39
+ // subscribe to loggingViewerFilterService.filterChanged event, to refresh,
40
+ // when someone else modifies the search value
41
+ this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
42
+ this.search = this.loggingViewerFilterService.search;
43
+ });
44
+ this.logger.exit(methodName);
45
+ }
46
+ /**
47
+ * Clean up.
48
+ */
49
+ ngOnDestroy() {
50
+ const methodName = "ngOnDestroy";
51
+ this.logger.entry(methodName);
52
+ this.filterChangedSubscription.unsubscribe();
53
+ this.logger.exit(methodName);
54
+ }
55
+ /**
56
+ * Callback when the search value was changed in the UI.
57
+ */
58
+ onSearchChanged() {
59
+ const methodName = "onSearchChanged";
60
+ this.logger.entry(methodName, this.search);
61
+ this.loggingViewerFilterService.search = this.search;
62
+ this.logger.exit(methodName);
63
+ }
64
+ }
65
+ LoggingViewerSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerSearchComponent, deps: [{ token: i1.LoggingService }, { token: i2.LoggingViewerFilterService }], target: i0.ɵɵFactoryTarget.Component });
66
+ LoggingViewerSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: LoggingViewerSearchComponent, selector: "ionic-logging-viewer-search", inputs: { placeholder: "placeholder" }, ngImport: i0, template: "<ion-searchbar placeholder=\"{{placeholder}}\" [(ngModel)]=\"search\" (ionChange)=\"onSearchChanged()\"></ion-searchbar>", styles: ["ion-searchbar{padding-top:3px;padding-bottom:0}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "directive", type: i4.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }] });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: LoggingViewerSearchComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: "ionic-logging-viewer-search", template: "<ion-searchbar placeholder=\"{{placeholder}}\" [(ngModel)]=\"search\" (ionChange)=\"onSearchChanged()\"></ion-searchbar>", styles: ["ion-searchbar{padding-top:3px;padding-bottom:0}\n"] }]
70
+ }], ctorParameters: function () { return [{ type: i1.LoggingService }, { type: i2.LoggingViewerFilterService }]; }, propDecorators: { placeholder: [{
71
+ type: Input
72
+ }] } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXItc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvbmljLWxvZ2dpbmctdmlld2VyL3NyYy9saWIvbG9nZ2luZy12aWV3ZXItc2VhcmNoL2xvZ2dpbmctdmlld2VyLXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb25pYy1sb2dnaW5nLXZpZXdlci9zcmMvbGliL2xvZ2dpbmctdmlld2VyLXNlYXJjaC9sb2dnaW5nLXZpZXdlci1zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBFLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7O0FBRTlFOzs7Ozs7R0FNRztBQU1ILE1BQU0sT0FBTyw0QkFBNEI7SUFnQnhDOztPQUVHO0lBQ0gsWUFDQyxjQUE4QixFQUN0QiwwQkFBc0Q7UUFBdEQsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUU5RCxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNoRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRO1FBQ2QsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDO1FBRXJELDJFQUEyRTtRQUMzRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNyQixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUVyRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QixDQUFDOzt5SEEzRVcsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsMkdDcEJ6QywwSEFBa0g7MkZEb0JyRyw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0MsNkJBQTZCOzhJQVVoQyxXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSwgTG9nZ2VyIH0gZnJvbSBcImlvbmljLWxvZ2dpbmctc2VydmljZVwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9sb2dnaW5nLXZpZXdlci1maWx0ZXIuc2VydmljZVwiO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyB0aGUgc2VhcmNoIGJhciBmb3IgZmlsdGVyaW5nIHRoZSBjdXJyZW50IGxvZ3MuXG4gKlxuICogVGhlIGNvbXBvbmVudCBjYW4gYmUgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIHVzaW5nOlxuICpcbiAqICZsdDtpb25pYy1sb2dnaW5nLXZpZXdlci1zZWFyY2ggcGxhY2Vob2xkZXI9XCJTZWFyY2hcIj4mbHQ7L2lvbmljLWxvZ2dpbmctdmlld2VyLXNlYXJjaD5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImlvbmljLWxvZ2dpbmctdmlld2VyLXNlYXJjaFwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL2xvZ2dpbmctdmlld2VyLXNlYXJjaC5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcIi4vbG9nZ2luZy12aWV3ZXItc2VhcmNoLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdWaWV3ZXJTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0LyoqXG5cdCAqIFBsYWNlaG9sZGVyIHRvIGJlIHNob3duIGluIHRoZSBlbXB0eSBzZWFyY2ggYmFyLlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEN1cnJlbnQgc2VhcmNoIHZhbHVlLlxuXHQgKi9cblx0cHVibGljIHNlYXJjaDogc3RyaW5nO1xuXG5cdHByaXZhdGUgbG9nZ2VyOiBMb2dnZXI7XG5cdHByaXZhdGUgZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UsXG5cdFx0cHJpdmF0ZSBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZTogTG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UpIHtcblxuXHRcdHRoaXMubG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2UuZ2V0TG9nZ2VyKFwiSW9uaWMuTG9nZ2luZy5WaWV3ZXIuU2VhcmNoLkNvbXBvbmVudFwiKTtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJjdG9yXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhpcyBpcyBkb25lIGJ5IHJlYWRpbmcgdGhlIGZpbHRlciBkYXRhIGZyb20gW0xvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlXShMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5odG1sKS5cblx0ICovXG5cdHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJuZ09uSW5pdFwiO1xuXHRcdHRoaXMubG9nZ2VyLmVudHJ5KG1ldGhvZE5hbWUpO1xuXG5cdFx0aWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHR0aGlzLnBsYWNlaG9sZGVyID0gXCJTZWFyY2hcIjtcblx0XHR9XG5cdFx0dGhpcy5zZWFyY2ggPSB0aGlzLmxvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlLnNlYXJjaDtcblxuXHRcdC8vIHN1YnNjcmliZSB0byBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5maWx0ZXJDaGFuZ2VkIGV2ZW50LCB0byByZWZyZXNoLFxuXHRcdC8vIHdoZW4gc29tZW9uZSBlbHNlIG1vZGlmaWVzIHRoZSBzZWFyY2ggdmFsdWVcblx0XHR0aGlzLmZpbHRlckNoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlLmZpbHRlckNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuc2VhcmNoID0gdGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5zZWFyY2g7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFuIHVwLlxuXHQgKi9cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcIm5nT25EZXN0cm95XCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmZpbHRlckNoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgc2VhcmNoIHZhbHVlIHdhcyBjaGFuZ2VkIGluIHRoZSBVSS5cblx0ICovXG5cdHB1YmxpYyBvblNlYXJjaENoYW5nZWQoKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwib25TZWFyY2hDaGFuZ2VkXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSwgdGhpcy5zZWFyY2gpO1xuXG5cdFx0dGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5zZWFyY2ggPSB0aGlzLnNlYXJjaDtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cbn1cbiIsIjxpb24tc2VhcmNoYmFyIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hcIiAoaW9uQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlZCgpXCI+PC9pb24tc2VhcmNoYmFyPiJdfQ==