@trudb/tru-common-lib 0.1.310 → 0.1.311

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.
@@ -1,14 +1,19 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../../services/tru-data-context";
4
5
  import * as i2 from "../../services/tru-app-environment";
5
6
  import * as i3 from "../../services/tru-text-manager";
6
7
  import * as i4 from "../../components/desktop/services/tru-window-event-handler";
8
+ import * as i5 from "../../components/desktop/services/tru-desktop-view-event-notifier";
9
+ import * as i6 from "../../services/tru-util";
7
10
  export class TruDetailViewBase {
8
11
  dataContext;
9
12
  appEnvironment;
10
13
  textManager;
11
14
  windowEventHandler;
15
+ desktopViewEventNotifier;
16
+ util;
12
17
  view;
13
18
  tableName;
14
19
  entities = [];
@@ -20,11 +25,13 @@ export class TruDetailViewBase {
20
25
  navigationIndex = 0;
21
26
  recordsBeforeRevert = 0;
22
27
  subs = [];
23
- constructor(dataContext, appEnvironment, textManager, windowEventHandler) {
28
+ constructor(dataContext, appEnvironment, textManager, windowEventHandler, desktopViewEventNotifier, util) {
24
29
  this.dataContext = dataContext;
25
30
  this.appEnvironment = appEnvironment;
26
31
  this.textManager = textManager;
27
32
  this.windowEventHandler = windowEventHandler;
33
+ this.desktopViewEventNotifier = desktopViewEventNotifier;
34
+ this.util = util;
28
35
  }
29
36
  calculateNextIndex = () => {
30
37
  let nextIndex = 0;
@@ -79,6 +86,38 @@ export class TruDetailViewBase {
79
86
  if (active)
80
87
  this.setEntityDisplayValues(this.tableName);
81
88
  }));
89
+ this.subs.push(fromEvent(document, 'keydown').subscribe((event) => {
90
+ if (this.desktopViewEventNotifier.isActive) {
91
+ let keySequence = this.util.getKeySequence(event);
92
+ if (keySequence === 'ctrl+i' || keySequence === 'meta+i') {
93
+ //this.onAddEntity();
94
+ event.preventDefault();
95
+ }
96
+ if (keySequence === 'ctrl+d' || keySequence === 'meta+d') {
97
+ this.onDeleteEntity();
98
+ event.preventDefault();
99
+ }
100
+ if (keySequence === 'ctrl+up' || keySequence === 'meta+up') {
101
+ this.onFirstEntity();
102
+ event.preventDefault();
103
+ }
104
+ if (keySequence === 'ctrl+left' || keySequence === 'meta+left') {
105
+ this.onPreviousEntity();
106
+ event.preventDefault();
107
+ }
108
+ if (keySequence === 'ctrl+right' || keySequence === 'meta+right') {
109
+ this.onNextEntity();
110
+ event.preventDefault();
111
+ }
112
+ if (keySequence === 'ctrl+down' || keySequence === 'meta+down') {
113
+ this.onLastEntity();
114
+ event.preventDefault();
115
+ }
116
+ var targetIsControl = this.util.targetIsControl(event.target);
117
+ if (!targetIsControl && event.ctrlKey || event.altKey)
118
+ event.preventDefault();
119
+ }
120
+ }));
82
121
  }
83
122
  setNavigationIndex(index) {
84
123
  this.navigationIndex = index;
@@ -103,13 +142,13 @@ export class TruDetailViewBase {
103
142
  this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));
104
143
  this.recordLocation = recordIndex + ' of ' + this.entities.length;
105
144
  }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, deps: [{ token: i1.TruDataContext }, { token: i2.TruAppEnvironment }, { token: i3.TruTextManager }, { token: i4.TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, deps: [{ token: i1.TruDataContext }, { token: i2.TruAppEnvironment }, { token: i3.TruTextManager }, { token: i4.TruWindowEventHandler }, { token: i5.TruDesktopViewEventNotifier }, { token: i6.TruUtil }], target: i0.ɵɵFactoryTarget.Component });
107
146
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruDetailViewBase, selector: "tru-detail-view-base", inputs: { view: "view" }, ngImport: i0, template: "", styles: [""] });
108
147
  }
109
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, decorators: [{
110
149
  type: Component,
111
150
  args: [{ selector: 'tru-detail-view-base', template: "" }]
112
- }], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruAppEnvironment }, { type: i3.TruTextManager }, { type: i4.TruWindowEventHandler }], propDecorators: { view: [{
151
+ }], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruAppEnvironment }, { type: i3.TruTextManager }, { type: i4.TruWindowEventHandler }, { type: i5.TruDesktopViewEventNotifier }, { type: i6.TruUtil }], propDecorators: { view: [{
113
152
  type: Input
114
153
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRldGFpbC12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2Jhc2Utdmlld3MvZGV0YWlsL3RydS1kZXRhaWwtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL2RldGFpbC90cnUtZGV0YWlsLXZpZXctYmFzZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFhakQsTUFBTSxPQUFPLGlCQUFpQjtJQWVoQjtJQUNBO0lBQ0E7SUFDQTtJQWpCSCxJQUFJLENBQXdCO0lBRXJDLFNBQVMsQ0FBTTtJQUNmLFFBQVEsR0FBZSxFQUFFLENBQUM7SUFDMUIsTUFBTSxDQUFNO0lBQ1osVUFBVSxDQUFNO0lBQ2hCLGNBQWMsR0FBa0IsSUFBSSxDQUFDO0lBQ3JDLGlDQUFpQyxHQUFZLEtBQUssQ0FBQztJQUNuRCw2QkFBNkIsR0FBWSxLQUFLLENBQUM7SUFDL0MsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUF3QixFQUFFLENBQUM7SUFFL0IsWUFDWSxXQUEyQixFQUMzQixjQUFpQyxFQUNqQyxXQUEyQixFQUMzQixrQkFBeUM7UUFIekMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF1QjtJQUNyRCxDQUFDO0lBRU8sa0JBQWtCLEdBQUcsR0FBVyxFQUFFO1FBQ3hDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLGNBQWMsR0FBRyxJ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LEtBQUssQ0FBQztZQUMxQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQzlDLEtBQUssSUFBSSxZQUFZLENBQUM7WUFDeEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUMzQixDQUFDO1lBQ0QsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3BFLENBQUM7dUdBOUdVLGlCQUFpQjsyRkFBakIsaUJBQWlCLHNGQ2I5QixFQUFBOzsyRkRhYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0Usc0JBQXNCO29MQUt2QixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEZXNrdG9wVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1kZXRhaWwtdmlldy1iYXNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRldGFpbC12aWV3LWJhc2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRldGFpbC12aWV3LWJhc2UuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydURldGFpbFZpZXdCYXNlIHtcclxuICBASW5wdXQoKSB2aWV3ITogVHJ1RGVza3RvcFZpZXdDb25maWc7XHJcblxyXG4gIHRhYmxlTmFtZTogYW55O1xyXG4gIGVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZW50aXR5OiBhbnk7XHJcbiAgZW50aXR5VHlwZTogYW55O1xyXG4gIHJlY29yZExvY2F0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBkaXNhYmxlTmF2aWdhdGlvblRvUHJldmlvdXNFbnRpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlTmF2aWdhdGlvblRvTmV4dEVudGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5hdmlnYXRpb25JbmRleDogbnVtYmVyID0gMDtcclxuICByZWNvcmRzQmVmb3JlUmV2ZXJ0OiBudW1iZXIgPSAwO1xyXG4gIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJvdGVjdGVkIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByb3RlY3RlZCB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcm90ZWN0ZWQgd2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlTmV4dEluZGV4ID0gKCk6IG51bWJlciA9PiB7XHJcbiAgICBsZXQgbmV4dEluZGV4ID0gMDtcclxuICAgIHZhciByZW1vdmVkUmVjb3JkcyA9IHRoaXMucmVjb3Jkc0JlZm9yZVJldmVydCAtIHRoaXMuZW50aXRpZXMubGVuZ3RoO1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkluZGV4ID4gdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxKVxyXG4gICAgICBuZXh0SW5kZXggPSB0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDE7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbmV4dEluZGV4ID0gKHRoaXMubmF2aWdhdGlvbkluZGV4IC0gcmVtb3ZlZFJlY29yZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXh0SW5kZXggPCAwKVxyXG4gICAgICBuZXh0SW5kZXggPSAwO1xyXG5cclxuICAgIHJldHVybiBuZXh0SW5kZXg7XHJcbiAgfVxyXG5cclxuICBvbkFkZEVudGl0eSA9IChuZXdFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgaWYgKCFuZXdFbnRpdHkpXHJcbiAgICAgIG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5VHlwZSk7XHJcbiAgICB0aGlzLmVudGl0aWVzLnNwbGljZSh0aGlzLm5hdmlnYXRpb25JbmRleCArIDEsIDAsIG5ld0VudGl0eSk7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvbmVFbnRpdHkgPSAoKSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25EZWxldGVFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICBsZXQgY29uZmlybU1zZyA9IHRoaXMudGV4dE1hbmFnZXIuZm10RGVsZXRlQ29uZmlybWF0aW9uKHRoaXMuZW50aXR5VHlwZS5uYW1lKTtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZGVsZXRlKFt0aGlzLmVudGl0eV0sIGNvbmZpcm1Nc2csICgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaXJzdEVudGl0eSA9ICgpID0+IHtcclxuICAgIHRoaXMubmF2aWdhdGVUbygwKTtcclxuICB9XHJcblxyXG4gIG9uUHJldmlvdXNFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5uYXZpZ2F0aW9uSW5kZXggLSAxKTtcclxuICB9XHJcblxyXG4gIG9uTmV4dEVudGl0eSA9ICgpID0+IHtcclxuICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLm5hdmlnYXRpb25JbmRleCArIDEpO1xyXG4gIH1cclxuXHJcbiAgb25MYXN0RW50aXR5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHRoaXMuZW50aXRpZXMubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvID0gKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgIHRoaXMuc2V0TmF2aWdhdGlvbkluZGV4KGluZGV4KTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgdGhpcy52aWV3LmVudGl0aWVzKSB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRzQmVmb3JlUmV2ZXJ0ID0gdGhpcy5lbnRpdGllcy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5lbnRpdGllcyA9IHRoaXMuZW50aXRpZXMuZmlsdGVyKChlOiBhbnkpID0+IHsgcmV0dXJuICFlLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZS5pc0RldGFjaGVkKCkgfSk7XHJcbiAgICAgICAgdGhpcy5zZXROYXZpZ2F0aW9uSW5kZXgodGhpcy5jYWxjdWxhdGVOZXh0SW5kZXgoKSk7XHJcbiAgICAgICAgdGhpcy5zZXRFbnRpdHlEaXNwbGF5VmFsdWVzKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy52aWV3Lm9uQWN0aXZlKCkuc3Vic2NyaWJlKChhY3RpdmU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGFjdGl2ZSlcclxuICAgICAgICB0aGlzLnNldEVudGl0eURpc3BsYXlWYWx1ZXModGhpcy50YWJsZU5hbWUpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgc2V0TmF2aWdhdGlvbkluZGV4KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMubmF2aWdhdGlvbkluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uVG9QcmV2aW91c0VudGl0eSA9IGluZGV4ID09PSAwO1xyXG4gICAgdGhpcy5kaXNhYmxlTmF2aWdhdGlvblRvTmV4dEVudGl0eSA9IGluZGV4ID09PSB0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDE7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy5uYXZpZ2F0aW9uSW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0YWJsZU5hbWU6IHN0cmluZykge1xyXG4gICAgbGV0IHRpdGxlID0gJyc7XHJcbiAgICBsZXQgcmVjb3JkSW5kZXggPSAnPyc7XHJcbiAgICBsZXQgZW50aXR5ID0gdGhpcy5lbnRpdGllc1t0aGlzLm5hdmlnYXRpb25JbmRleF07XHJcbiAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgIHRpdGxlID0gdGFibGVOYW1lICsgJyAtICc7XHJcbiAgICAgIGlmIChlbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzQWRkZWQoKSkge1xyXG4gICAgICAgIHRpdGxlICs9ICdOZXcgUmVjb3JkJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aXRsZSArPSB0aGlzLmVudGl0eS5ISUQ7XHJcbiAgICAgIH1cclxuICAgICAgcmVjb3JkSW5kZXggPSAodGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuc2V0V2luZG93VGl0bGUodGhpcy50ZXh0TWFuYWdlci5mb3JtYXRXaW5kb3dUaXRsZSh0aXRsZSkpO1xyXG4gICAgdGhpcy5yZWNvcmRMb2NhdGlvbiA9IHJlY29yZEluZGV4ICsgJyBvZiAnICsgdGhpcy5lbnRpdGllcy5sZW5ndGg7XHJcbiAgfVxyXG59XHJcbiIsIiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRldGFpbC12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2Jhc2Utdmlld3MvZGV0YWlsL3RydS1kZXRhaWwtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL2RldGFpbC90cnUtZGV0YWlsLXZpZXctYmFzZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQWMvQyxNQUFNLE9BQU8saUJBQWlCO0lBZWhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQW5CSCxJQUFJLENBQXdCO0lBRXJDLFNBQVMsQ0FBTTtJQUNmLFFBQVEsR0FBZSxFQUFFLENBQUM7SUFDMUIsTUFBTSxDQUFNO0lBQ1osVUFBVSxDQUFNO0lBQ2hCLGNBQWMsR0FBa0IsSUFBSSxDQUFDO0lBQ3JDLGlDQUFpQyxHQUFZLEtBQUssQ0FBQztJQUNuRCw2QkFBNkIsR0FBWSxLQUFLLENBQUM7SUFDL0MsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUF3QixFQUFFLENBQUM7SUFFL0IsWUFDWSxXQUEyQixFQUMzQixjQUFpQyxFQUNqQyxXQUEyQixFQUMzQixrQkFBeUMsRUFDekMsd0JBQXFELEVBQ3JELElBQWE7UUFMYixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVCO1FBQ3pDLDZCQUF3QixH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RkNmOUIsRUFBQTs7MkZEZWEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLHNCQUFzQjtvUEFLdkIsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEZXNrdG9wVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydURlc2t0b3BWaWV3RXZlbnROb3RpZmllciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtZGVza3RvcC12aWV3LWV2ZW50LW5vdGlmaWVyJztcclxuaW1wb3J0IHsgVHJ1VXRpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS11dGlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWRldGFpbC12aWV3LWJhc2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtZGV0YWlsLXZpZXctYmFzZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtZGV0YWlsLXZpZXctYmFzZS5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RGV0YWlsVmlld0Jhc2Uge1xyXG4gIEBJbnB1dCgpIHZpZXchOiBUcnVEZXNrdG9wVmlld0NvbmZpZztcclxuXHJcbiAgdGFibGVOYW1lOiBhbnk7XHJcbiAgZW50aXRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBlbnRpdHk6IGFueTtcclxuICBlbnRpdHlUeXBlOiBhbnk7XHJcbiAgcmVjb3JkTG9jYXRpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGRpc2FibGVOYXZpZ2F0aW9uVG9QcmV2aW91c0VudGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc2FibGVOYXZpZ2F0aW9uVG9OZXh0RW50aXR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbmF2aWdhdGlvbkluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHJlY29yZHNCZWZvcmVSZXZlcnQ6IG51bWJlciA9IDA7XHJcbiAgc3ViczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcm90ZWN0ZWQgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJvdGVjdGVkIHRleHRNYW5hZ2VyOiBUcnVUZXh0TWFuYWdlcixcclxuICAgIHByb3RlY3RlZCB3aW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcixcclxuICAgIHByb3RlY3RlZCBkZXNrdG9wVmlld0V2ZW50Tm90aWZpZXI6IFRydURlc2t0b3BWaWV3RXZlbnROb3RpZmllcixcclxuICAgIHByb3RlY3RlZCB1dGlsOiBUcnVVdGlsKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZU5leHRJbmRleCA9ICgpOiBudW1iZXIgPT4ge1xyXG4gICAgbGV0IG5leHRJbmRleCA9IDA7XHJcbiAgICB2YXIgcmVtb3ZlZFJlY29yZHMgPSB0aGlzLnJlY29yZHNCZWZvcmVSZXZlcnQgLSB0aGlzLmVudGl0aWVzLmxlbmd0aDtcclxuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JbmRleCA+IHRoaXMuZW50aXRpZXMubGVuZ3RoIC0gMSlcclxuICAgICAgbmV4dEluZGV4ID0gdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIG5leHRJbmRleCA9ICh0aGlzLm5hdmlnYXRpb25JbmRleCAtIHJlbW92ZWRSZWNvcmRzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobmV4dEluZGV4IDwgMClcclxuICAgICAgbmV4dEluZGV4ID0gMDtcclxuXHJcbiAgICByZXR1cm4gbmV4dEluZGV4O1xyXG4gIH1cclxuXHJcbiAgb25BZGRFbnRpdHkgPSAobmV3RW50aXR5OiBhbnkpID0+IHtcclxuICAgIGlmICghbmV3RW50aXR5KVxyXG4gICAgICBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmVudGl0eVR5cGUpO1xyXG4gICAgdGhpcy5lbnRpdGllcy5zcGxpY2UodGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxLCAwLCBuZXdFbnRpdHkpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHRoaXMubmF2aWdhdGlvbkluZGV4ICsgMSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb25lRW50aXR5ID0gKCkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlRW50aXR5ID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvbmZpcm1Nc2cgPSB0aGlzLnRleHRNYW5hZ2VyLmZtdERlbGV0ZUNvbmZpcm1hdGlvbih0aGlzLmVudGl0eVR5cGUubmFtZSk7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShbdGhpcy5lbnRpdHldLCBjb25maXJtTXNnLCAoKSA9PiB7IHJldHVybiB0cnVlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uRmlyc3RFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8oMCk7XHJcbiAgfVxyXG5cclxuICBvblByZXZpb3VzRW50aXR5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHRoaXMubmF2aWdhdGlvbkluZGV4IC0gMSk7XHJcbiAgfVxyXG5cclxuICBvbk5leHRFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxKTtcclxuICB9XHJcblxyXG4gIG9uTGFzdEVudGl0eSA9ICgpID0+IHtcclxuICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUbyA9IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICB0aGlzLnNldE5hdmlnYXRpb25JbmRleChpbmRleCk7XHJcbiAgICB0aGlzLnNldEVudGl0eURpc3BsYXlWYWx1ZXModGhpcy50YWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlKCkge1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5hcHBFbnZpcm9ubWVudC5vblJldmVydENvbXBsZXRlJC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGV2ZW50Py5zdWNjZXNzZnVsICYmIHRoaXMudmlldy5lbnRpdGllcykge1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc0JlZm9yZVJldmVydCA9IHRoaXMuZW50aXRpZXMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzLmZpbHRlcigoZTogYW55KSA9PiB7IHJldHVybiAhZS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNEZXRhY2hlZCgpIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0TmF2aWdhdGlvbkluZGV4KHRoaXMuY2FsY3VsYXRlTmV4dEluZGV4KCkpO1xyXG4gICAgICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMudmlldy5vbkFjdGl2ZSgpLnN1YnNjcmliZSgoYWN0aXZlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChhY3RpdmUpXHJcbiAgICAgICAgdGhpcy5zZXRFbnRpdHlEaXNwbGF5VmFsdWVzKHRoaXMudGFibGVOYW1lKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuc3Vicy5wdXNoKGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmRlc2t0b3BWaWV3RXZlbnROb3RpZmllci5pc0FjdGl2ZSkge1xyXG4gICAgICAgIGxldCBrZXlTZXF1ZW5jZSA9IHRoaXMudXRpbC5nZXRLZXlTZXF1ZW5jZShldmVudCk7XHJcbiAgICAgICAgaWYgKGtleVNlcXVlbmNlID09PSAnY3RybCtpJyB8fCBrZXlTZXF1ZW5jZSA9PT0gJ21ldGEraScpIHtcclxuICAgICAgICAgIC8vdGhpcy5vbkFkZEVudGl0eSgpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleVNlcXVlbmNlID09PSAnY3RybCtkJyB8fCBrZXlTZXF1ZW5jZSA9PT0gJ21ldGErZCcpIHtcclxuICAgICAgICAgIHRoaXMub25EZWxldGVFbnRpdHkoKTtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2N0cmwrdXAnIHx8IGtleVNlcXVlbmNlID09PSAnbWV0YSt1cCcpIHtcclxuICAgICAgICAgIHRoaXMub25GaXJzdEVudGl0eSgpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleVNlcXVlbmNlID09PSAnY3RybCtsZWZ0JyB8fCBrZXlTZXF1ZW5jZSA9PT0gJ21ldGErbGVmdCcpIHtcclxuICAgICAgICAgIHRoaXMub25QcmV2aW91c0VudGl0eSgpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGtleVNlcXVlbmNlID09PSAnY3RybCtyaWdodCcgfHwga2V5U2VxdWVuY2UgPT09ICdtZXRhK3JpZ2h0Jykge1xyXG4gICAgICAgICAgdGhpcy5vbk5leHRFbnRpdHkoKTtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2N0cmwrZG93bicgfHwga2V5U2VxdWVuY2UgPT09ICdtZXRhK2Rvd24nKSB7XHJcbiAgICAgICAgICB0aGlzLm9uTGFzdEVudGl0eSgpO1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhcmdldElzQ29udHJvbCA9IHRoaXMudXRpbC50YXJnZXRJc0NvbnRyb2woZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcclxuICAgICAgICBpZiAoIXRhcmdldElzQ29udHJvbCAmJiBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSlcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHNldE5hdmlnYXRpb25JbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25JbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5kaXNhYmxlTmF2aWdhdGlvblRvUHJldmlvdXNFbnRpdHkgPSBpbmRleCA9PT0gMDtcclxuICAgIHRoaXMuZGlzYWJsZU5hdmlnYXRpb25Ub05leHRFbnRpdHkgPSBpbmRleCA9PT0gdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxO1xyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLmVudGl0aWVzW3RoaXMubmF2aWdhdGlvbkluZGV4XTtcclxuICB9XHJcblxyXG4gIHNldEVudGl0eURpc3BsYXlWYWx1ZXModGFibGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCB0aXRsZSA9ICcnO1xyXG4gICAgbGV0IHJlY29yZEluZGV4ID0gJz8nO1xyXG4gICAgbGV0IGVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy5uYXZpZ2F0aW9uSW5kZXhdO1xyXG4gICAgaWYgKGVudGl0eSkge1xyXG4gICAgICB0aXRsZSA9IHRhYmxlTmFtZSArICcgLSAnO1xyXG4gICAgICBpZiAoZW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZS5pc0FkZGVkKCkpIHtcclxuICAgICAgICB0aXRsZSArPSAnTmV3IFJlY29yZCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGl0bGUgKz0gdGhpcy5lbnRpdHkuSElEO1xyXG4gICAgICB9XHJcbiAgICAgIHJlY29yZEluZGV4ID0gKHRoaXMubmF2aWdhdGlvbkluZGV4ICsgMSkudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHRoaXMud2luZG93RXZlbnRIYW5kbGVyLnNldFdpbmRvd1RpdGxlKHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0V2luZG93VGl0bGUodGl0bGUpKTtcclxuICAgIHRoaXMucmVjb3JkTG9jYXRpb24gPSByZWNvcmRJbmRleCArICcgb2YgJyArIHRoaXMuZW50aXRpZXMubGVuZ3RoO1xyXG4gIH1cclxufVxyXG4iLCIiXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Injectable, Component, Inject, HostListener, InjectionToken, NgModule, ViewEncapsulation, ViewChild, EventEmitter, Output, createComponent, Optional, APP_INITIALIZER, ViewChildren, QueryList, ContentChildren } from '@angular/core';
3
3
  import { EntityAspect, MetadataStore, DataService, EntityManager, EntityQuery, Predicate, FetchStrategy, breeze, EntityState, BinaryPredicate, AndOrPredicate } from 'breeze-client';
4
- import { BehaviorSubject, defer, from, of, Subject, Observable, skip, forkJoin, fromEvent, finalize, throwError } from 'rxjs';
4
+ import { BehaviorSubject, defer, from, of, Subject, Observable, fromEvent, skip, forkJoin, finalize, throwError } from 'rxjs';
5
5
  import * as _ from 'underscore';
6
6
  import ___default from 'underscore';
7
7
  import * as i2 from '@angular/common/http';
@@ -1730,11 +1730,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
1730
1730
  }]
1731
1731
  }] });
1732
1732
 
1733
+ class TruDesktopViewEventNotifier {
1734
+ active$ = new BehaviorSubject(false);
1735
+ onActiveStateChanged = () => {
1736
+ return this.active$;
1737
+ };
1738
+ get isActive() {
1739
+ return this.active$.getValue();
1740
+ }
1741
+ set isActive(value) {
1742
+ this.active$.next(value);
1743
+ }
1744
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1745
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier });
1746
+ }
1747
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, decorators: [{
1748
+ type: Injectable
1749
+ }] });
1750
+
1751
+ class TruUtil {
1752
+ keyboardMap = ["", "", "", "CANCEL", "", "", "HELP", "", "BACK_SPACE", "TAB", "", "", "CLEAR", "ENTER", "RETURN", "", "SHIFT", "CONTROL", "ALT", "PAUSE", "CAPS_LOCK", "KANA", "EISU", "JUNJA", "FINAL", "HANJA", "", "ESCAPE", "CONVERT", "NONCONVERT", "ACCEPT", "MODECHANGE", "SPACE", "PAGE_UP", "PAGE_DOWN", "END", "HOME", "LEFT", "UP", "RIGHT", "DOWN", "SELECT", "PRINT", "EXECUTE", "PRINTSCREEN", "INSERT", "DELETE", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "COLON", "SEMICOLON", "LESS_THAN", "EQUALS", "GREATER_THAN", "QUESTION_MARK", "AT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "WIN", "", "CONTEXT_MENU", "", "SLEEP", "NUMPAD0", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD4", "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "MULTIPLY", "ADD", "SEPARATOR", "SUBTRACT", "DECIMAL", "DIVIDE", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", "", "", "", "", "", "", "NUM_LOCK", "SCROLL_LOCK", "WIN_OEM_FJ_JISHO", "WIN_OEM_FJ_MASSHOU", "WIN_OEM_FJ_TOUROKU", "WIN_OEM_FJ_LOYA", "WIN_OEM_FJ_ROYA", "", "", "", "", "", "", "", "", "", "CIRCUMFLEX", "EXCLAMATION", "DOUBLE_QUOTE", "HASH", "DOLLAR", "PERCENT", "AMPERSAND", "UNDERSCORE", "OPEN_PAREN", "CLOSE_PAREN", "ASTERISK", "PLUS", "PIPE", "HYPHEN_MINUS", "OPEN_CURLY_BRACKET", "CLOSE_CURLY_BRACKET", "TILDE", "", "", "", "", "VOLUME_MUTE", "VOLUME_DOWN", "VOLUME_UP", "", "", "", "", "COMMA", "", "PERIOD", "SLASH", "BACK_QUOTE", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "OPEN_BRACKET", "BACK_SLASH", "CLOSE_BRACKET", "QUOTE", "", "META", "ALTGR", "", "WIN_ICO_HELP", "WIN_ICO_00", "", "WIN_ICO_CLEAR", "", "", "WIN_OEM_RESET", "WIN_OEM_JUMP", "WIN_OEM_PA1", "WIN_OEM_PA2", "WIN_OEM_PA3", "WIN_OEM_WSCTRL", "WIN_OEM_CUSEL", "WIN_OEM_ATTN", "WIN_OEM_FINISH", "WIN_OEM_COPY", "WIN_OEM_AUTO", "WIN_OEM_ENLW", "WIN_OEM_BACKTAB", "ATTN", "CRSEL", "EXSEL", "EREOF", "PLAY", "ZOOM", "", "PA1", "WIN_OEM_CLEAR", ""];
1753
+ constructor() { }
1754
+ numberToString = (value) => {
1755
+ return value === undefined ? '' : (value).toString();
1756
+ };
1757
+ nullableNumberToString = (value) => {
1758
+ return value === null || value === undefined ? '' : (value).toString();
1759
+ };
1760
+ tryParseInt = (str, defaultValue) => {
1761
+ var retValue = defaultValue;
1762
+ if (str !== null) {
1763
+ if (str.length > 0) {
1764
+ if (!isNaN(str)) {
1765
+ retValue = parseInt(str);
1766
+ }
1767
+ }
1768
+ }
1769
+ return retValue;
1770
+ };
1771
+ tryParseBool(value, defaultValue) {
1772
+ return (value == 'true' || value == 'false' || value === true || value === false) && JSON.parse(value) || defaultValue;
1773
+ }
1774
+ findClosestAncestorByClass = (element, cssSelector) => {
1775
+ let firstChar = cssSelector.charAt(0);
1776
+ for (; element; element = element.parentNode) {
1777
+ if (firstChar === '.') {
1778
+ if (element.classList && element.classList.contains(cssSelector.substr(1))) {
1779
+ return element;
1780
+ }
1781
+ }
1782
+ }
1783
+ return null;
1784
+ };
1785
+ isNumeric = (n) => {
1786
+ return !isNaN(parseFloat(n)) && isFinite(n);
1787
+ };
1788
+ removeNonNumericCharactersFromStr = (value) => {
1789
+ return value.replace(/[^0-9]/g, '');
1790
+ };
1791
+ isDate = (date) => {
1792
+ if (Object.prototype.toString.call(date) === '[object Date]') {
1793
+ if (isNaN(date.getTime())) {
1794
+ return false;
1795
+ }
1796
+ else {
1797
+ return true;
1798
+ }
1799
+ }
1800
+ else {
1801
+ return false;
1802
+ }
1803
+ };
1804
+ isValidDate = (value) => {
1805
+ return !isNaN(Date.parse(value));
1806
+ };
1807
+ rulesEval = (styles) => {
1808
+ let defaultStyles = {
1809
+ 'backgroundColor': '#ffffff',
1810
+ 'color': '#000000',
1811
+ 'font-style': 'normal',
1812
+ 'text-decoration': 'unset'
1813
+ };
1814
+ if (styles === null)
1815
+ return defaultStyles;
1816
+ if (Object.entries(styles).length !== 0) {
1817
+ Object.assign(defaultStyles, styles);
1818
+ return defaultStyles;
1819
+ }
1820
+ return defaultStyles;
1821
+ };
1822
+ /**
1823
+ * Serializes an object as URL parameters. The object should be a base type or have
1824
+ * properties that are each base types. Does not support a property with structure.
1825
+ * @param {Object} data
1826
+ * @returns {String}
1827
+ */
1828
+ formatAsUrlParameters = (data) => {
1829
+ if (typeof data !== 'object' || data === null)
1830
+ return (data == null ? '' : data.toString());
1831
+ let buffer = [];
1832
+ for (let name in data) {
1833
+ if (!data.hasOwnProperty(name)) {
1834
+ continue;
1835
+ }
1836
+ let value = data[name];
1837
+ buffer.push(encodeURIComponent(name) +
1838
+ '=' + encodeURIComponent(value == null ? '' : value));
1839
+ }
1840
+ let source = buffer.join('&')
1841
+ .replace(/%20/g, '+');
1842
+ return (source);
1843
+ };
1844
+ showEntityStatus = (entity, entityType, formatedRecordId) => {
1845
+ let title = '';
1846
+ if (entity) {
1847
+ if (entityType)
1848
+ title = entityType + ' - ';
1849
+ if (entity.entityAspect.entityState.isAdded()) {
1850
+ title += 'New Record';
1851
+ }
1852
+ else {
1853
+ title += formatedRecordId;
1854
+ }
1855
+ }
1856
+ return title;
1857
+ };
1858
+ getKeySequence = (event) => {
1859
+ var keys = [];
1860
+ if (event.ctrlKey)
1861
+ keys.push('ctrl');
1862
+ if (event.metaKey)
1863
+ keys.push('meta');
1864
+ if (event.shiftKey)
1865
+ keys.push('shift');
1866
+ if (event.altKey)
1867
+ keys.push('alt');
1868
+ var keyCode = (event.keyCode !== 'control' && event.which !== 'control') ? event.keyCode || event.which : null;
1869
+ if (keyCode)
1870
+ keys.push(this.keyboardMap[keyCode].toLowerCase());
1871
+ keys = [...new Set(keys)];
1872
+ return keys.join('+');
1873
+ };
1874
+ targetIsControl = (target) => {
1875
+ if (target === null)
1876
+ return false;
1877
+ var nodeName = target.nodeName.toLowerCase();
1878
+ return nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' || nodeName === '#text';
1879
+ };
1880
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1881
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, providedIn: 'root' });
1882
+ }
1883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, decorators: [{
1884
+ type: Injectable,
1885
+ args: [{
1886
+ providedIn: 'root',
1887
+ }]
1888
+ }], ctorParameters: () => [] });
1889
+
1733
1890
  class TruDetailViewBase {
1734
1891
  dataContext;
1735
1892
  appEnvironment;
1736
1893
  textManager;
1737
1894
  windowEventHandler;
1895
+ desktopViewEventNotifier;
1896
+ util;
1738
1897
  view;
1739
1898
  tableName;
1740
1899
  entities = [];
@@ -1746,11 +1905,13 @@ class TruDetailViewBase {
1746
1905
  navigationIndex = 0;
1747
1906
  recordsBeforeRevert = 0;
1748
1907
  subs = [];
1749
- constructor(dataContext, appEnvironment, textManager, windowEventHandler) {
1908
+ constructor(dataContext, appEnvironment, textManager, windowEventHandler, desktopViewEventNotifier, util) {
1750
1909
  this.dataContext = dataContext;
1751
1910
  this.appEnvironment = appEnvironment;
1752
1911
  this.textManager = textManager;
1753
1912
  this.windowEventHandler = windowEventHandler;
1913
+ this.desktopViewEventNotifier = desktopViewEventNotifier;
1914
+ this.util = util;
1754
1915
  }
1755
1916
  calculateNextIndex = () => {
1756
1917
  let nextIndex = 0;
@@ -1805,6 +1966,38 @@ class TruDetailViewBase {
1805
1966
  if (active)
1806
1967
  this.setEntityDisplayValues(this.tableName);
1807
1968
  }));
1969
+ this.subs.push(fromEvent(document, 'keydown').subscribe((event) => {
1970
+ if (this.desktopViewEventNotifier.isActive) {
1971
+ let keySequence = this.util.getKeySequence(event);
1972
+ if (keySequence === 'ctrl+i' || keySequence === 'meta+i') {
1973
+ //this.onAddEntity();
1974
+ event.preventDefault();
1975
+ }
1976
+ if (keySequence === 'ctrl+d' || keySequence === 'meta+d') {
1977
+ this.onDeleteEntity();
1978
+ event.preventDefault();
1979
+ }
1980
+ if (keySequence === 'ctrl+up' || keySequence === 'meta+up') {
1981
+ this.onFirstEntity();
1982
+ event.preventDefault();
1983
+ }
1984
+ if (keySequence === 'ctrl+left' || keySequence === 'meta+left') {
1985
+ this.onPreviousEntity();
1986
+ event.preventDefault();
1987
+ }
1988
+ if (keySequence === 'ctrl+right' || keySequence === 'meta+right') {
1989
+ this.onNextEntity();
1990
+ event.preventDefault();
1991
+ }
1992
+ if (keySequence === 'ctrl+down' || keySequence === 'meta+down') {
1993
+ this.onLastEntity();
1994
+ event.preventDefault();
1995
+ }
1996
+ var targetIsControl = this.util.targetIsControl(event.target);
1997
+ if (!targetIsControl && event.ctrlKey || event.altKey)
1998
+ event.preventDefault();
1999
+ }
2000
+ }));
1808
2001
  }
1809
2002
  setNavigationIndex(index) {
1810
2003
  this.navigationIndex = index;
@@ -1829,13 +2022,13 @@ class TruDetailViewBase {
1829
2022
  this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));
1830
2023
  this.recordLocation = recordIndex + ' of ' + this.entities.length;
1831
2024
  }
1832
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, deps: [{ token: TruDataContext }, { token: TruAppEnvironment }, { token: TruTextManager }, { token: TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
2025
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, deps: [{ token: TruDataContext }, { token: TruAppEnvironment }, { token: TruTextManager }, { token: TruWindowEventHandler }, { token: TruDesktopViewEventNotifier }, { token: TruUtil }], target: i0.ɵɵFactoryTarget.Component });
1833
2026
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruDetailViewBase, selector: "tru-detail-view-base", inputs: { view: "view" }, ngImport: i0, template: "", styles: [""] });
1834
2027
  }
1835
2028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, decorators: [{
1836
2029
  type: Component,
1837
2030
  args: [{ selector: 'tru-detail-view-base', template: "" }]
1838
- }], ctorParameters: () => [{ type: TruDataContext }, { type: TruAppEnvironment }, { type: TruTextManager }, { type: TruWindowEventHandler }], propDecorators: { view: [{
2031
+ }], ctorParameters: () => [{ type: TruDataContext }, { type: TruAppEnvironment }, { type: TruTextManager }, { type: TruWindowEventHandler }, { type: TruDesktopViewEventNotifier }, { type: TruUtil }], propDecorators: { view: [{
1839
2032
  type: Input
1840
2033
  }] } });
1841
2034
 
@@ -3741,145 +3934,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
3741
3934
  }]
3742
3935
  }] });
3743
3936
 
3744
- class TruUtil {
3745
- keyboardMap = ["", "", "", "CANCEL", "", "", "HELP", "", "BACK_SPACE", "TAB", "", "", "CLEAR", "ENTER", "RETURN", "", "SHIFT", "CONTROL", "ALT", "PAUSE", "CAPS_LOCK", "KANA", "EISU", "JUNJA", "FINAL", "HANJA", "", "ESCAPE", "CONVERT", "NONCONVERT", "ACCEPT", "MODECHANGE", "SPACE", "PAGE_UP", "PAGE_DOWN", "END", "HOME", "LEFT", "UP", "RIGHT", "DOWN", "SELECT", "PRINT", "EXECUTE", "PRINTSCREEN", "INSERT", "DELETE", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "COLON", "SEMICOLON", "LESS_THAN", "EQUALS", "GREATER_THAN", "QUESTION_MARK", "AT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "WIN", "", "CONTEXT_MENU", "", "SLEEP", "NUMPAD0", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD4", "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "MULTIPLY", "ADD", "SEPARATOR", "SUBTRACT", "DECIMAL", "DIVIDE", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", "", "", "", "", "", "", "NUM_LOCK", "SCROLL_LOCK", "WIN_OEM_FJ_JISHO", "WIN_OEM_FJ_MASSHOU", "WIN_OEM_FJ_TOUROKU", "WIN_OEM_FJ_LOYA", "WIN_OEM_FJ_ROYA", "", "", "", "", "", "", "", "", "", "CIRCUMFLEX", "EXCLAMATION", "DOUBLE_QUOTE", "HASH", "DOLLAR", "PERCENT", "AMPERSAND", "UNDERSCORE", "OPEN_PAREN", "CLOSE_PAREN", "ASTERISK", "PLUS", "PIPE", "HYPHEN_MINUS", "OPEN_CURLY_BRACKET", "CLOSE_CURLY_BRACKET", "TILDE", "", "", "", "", "VOLUME_MUTE", "VOLUME_DOWN", "VOLUME_UP", "", "", "", "", "COMMA", "", "PERIOD", "SLASH", "BACK_QUOTE", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "OPEN_BRACKET", "BACK_SLASH", "CLOSE_BRACKET", "QUOTE", "", "META", "ALTGR", "", "WIN_ICO_HELP", "WIN_ICO_00", "", "WIN_ICO_CLEAR", "", "", "WIN_OEM_RESET", "WIN_OEM_JUMP", "WIN_OEM_PA1", "WIN_OEM_PA2", "WIN_OEM_PA3", "WIN_OEM_WSCTRL", "WIN_OEM_CUSEL", "WIN_OEM_ATTN", "WIN_OEM_FINISH", "WIN_OEM_COPY", "WIN_OEM_AUTO", "WIN_OEM_ENLW", "WIN_OEM_BACKTAB", "ATTN", "CRSEL", "EXSEL", "EREOF", "PLAY", "ZOOM", "", "PA1", "WIN_OEM_CLEAR", ""];
3746
- constructor() { }
3747
- numberToString = (value) => {
3748
- return value === undefined ? '' : (value).toString();
3749
- };
3750
- nullableNumberToString = (value) => {
3751
- return value === null || value === undefined ? '' : (value).toString();
3752
- };
3753
- tryParseInt = (str, defaultValue) => {
3754
- var retValue = defaultValue;
3755
- if (str !== null) {
3756
- if (str.length > 0) {
3757
- if (!isNaN(str)) {
3758
- retValue = parseInt(str);
3759
- }
3760
- }
3761
- }
3762
- return retValue;
3763
- };
3764
- tryParseBool(value, defaultValue) {
3765
- return (value == 'true' || value == 'false' || value === true || value === false) && JSON.parse(value) || defaultValue;
3766
- }
3767
- findClosestAncestorByClass = (element, cssSelector) => {
3768
- let firstChar = cssSelector.charAt(0);
3769
- for (; element; element = element.parentNode) {
3770
- if (firstChar === '.') {
3771
- if (element.classList && element.classList.contains(cssSelector.substr(1))) {
3772
- return element;
3773
- }
3774
- }
3775
- }
3776
- return null;
3777
- };
3778
- isNumeric = (n) => {
3779
- return !isNaN(parseFloat(n)) && isFinite(n);
3780
- };
3781
- removeNonNumericCharactersFromStr = (value) => {
3782
- return value.replace(/[^0-9]/g, '');
3783
- };
3784
- isDate = (date) => {
3785
- if (Object.prototype.toString.call(date) === '[object Date]') {
3786
- if (isNaN(date.getTime())) {
3787
- return false;
3788
- }
3789
- else {
3790
- return true;
3791
- }
3792
- }
3793
- else {
3794
- return false;
3795
- }
3796
- };
3797
- isValidDate = (value) => {
3798
- return !isNaN(Date.parse(value));
3799
- };
3800
- rulesEval = (styles) => {
3801
- let defaultStyles = {
3802
- 'backgroundColor': '#ffffff',
3803
- 'color': '#000000',
3804
- 'font-style': 'normal',
3805
- 'text-decoration': 'unset'
3806
- };
3807
- if (styles === null)
3808
- return defaultStyles;
3809
- if (Object.entries(styles).length !== 0) {
3810
- Object.assign(defaultStyles, styles);
3811
- return defaultStyles;
3812
- }
3813
- return defaultStyles;
3814
- };
3815
- /**
3816
- * Serializes an object as URL parameters. The object should be a base type or have
3817
- * properties that are each base types. Does not support a property with structure.
3818
- * @param {Object} data
3819
- * @returns {String}
3820
- */
3821
- formatAsUrlParameters = (data) => {
3822
- if (typeof data !== 'object' || data === null)
3823
- return (data == null ? '' : data.toString());
3824
- let buffer = [];
3825
- for (let name in data) {
3826
- if (!data.hasOwnProperty(name)) {
3827
- continue;
3828
- }
3829
- let value = data[name];
3830
- buffer.push(encodeURIComponent(name) +
3831
- '=' + encodeURIComponent(value == null ? '' : value));
3832
- }
3833
- let source = buffer.join('&')
3834
- .replace(/%20/g, '+');
3835
- return (source);
3836
- };
3837
- showEntityStatus = (entity, entityType, formatedRecordId) => {
3838
- let title = '';
3839
- if (entity) {
3840
- if (entityType)
3841
- title = entityType + ' - ';
3842
- if (entity.entityAspect.entityState.isAdded()) {
3843
- title += 'New Record';
3844
- }
3845
- else {
3846
- title += formatedRecordId;
3847
- }
3848
- }
3849
- return title;
3850
- };
3851
- getKeySequence = (event) => {
3852
- var keys = [];
3853
- if (event.ctrlKey)
3854
- keys.push('ctrl');
3855
- if (event.metaKey)
3856
- keys.push('meta');
3857
- if (event.shiftKey)
3858
- keys.push('shift');
3859
- if (event.altKey)
3860
- keys.push('alt');
3861
- var keyCode = (event.keyCode !== 'control' && event.which !== 'control') ? event.keyCode || event.which : null;
3862
- if (keyCode)
3863
- keys.push(this.keyboardMap[keyCode].toLowerCase());
3864
- keys = [...new Set(keys)];
3865
- return keys.join('+');
3866
- };
3867
- targetIsControl = (target) => {
3868
- if (target === null)
3869
- return false;
3870
- var nodeName = target.nodeName.toLowerCase();
3871
- return nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' || nodeName === '#text';
3872
- };
3873
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3874
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, providedIn: 'root' });
3875
- }
3876
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, decorators: [{
3877
- type: Injectable,
3878
- args: [{
3879
- providedIn: 'root',
3880
- }]
3881
- }], ctorParameters: () => [] });
3882
-
3883
3937
  class TruMatSelectPanel {
3884
3938
  renderer;
3885
3939
  select;
@@ -5057,24 +5111,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
5057
5111
  type: Output
5058
5112
  }] } });
5059
5113
 
5060
- class TruDesktopViewEventNotifier {
5061
- active$ = new BehaviorSubject(false);
5062
- onActiveStateChanged = () => {
5063
- return this.active$;
5064
- };
5065
- get isActive() {
5066
- return this.active$.getValue();
5067
- }
5068
- set isActive(value) {
5069
- this.active$.next(value);
5070
- }
5071
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5072
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier });
5073
- }
5074
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, decorators: [{
5075
- type: Injectable
5076
- }] });
5077
-
5078
5114
  class TruMergeData {
5079
5115
  _value;
5080
5116
  _modifiedBy;