@guiexpert/angular-table 0.0.1 → 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 (36) hide show
  1. package/.eslintrc.json +46 -0
  2. package/.idea/angular-table.iml +12 -0
  3. package/.idea/modules.xml +8 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/README.md +1 -1
  6. package/ng-package.json +7 -0
  7. package/package.json +7 -26
  8. package/project.json +37 -0
  9. package/src/lib/angular-table/component-renderer.if.ts +12 -0
  10. package/src/lib/angular-table/service/dom-service.ts +54 -0
  11. package/src/lib/angular-table/service/render-wrapper-factory.ts +24 -0
  12. package/src/lib/angular-table/service/renderer-wrapper.ts +86 -0
  13. package/src/lib/angular-table/table-color-classes.css +90 -0
  14. package/src/lib/angular-table/table-color-vars.css +141 -0
  15. package/src/lib/angular-table/table.component.css +88 -0
  16. package/src/lib/angular-table/table.component.ts +152 -0
  17. package/tsconfig.json +28 -0
  18. package/tsconfig.lib.json +18 -0
  19. package/tsconfig.lib.prod.json +9 -0
  20. package/esm2020/guiexpert-angular-table.mjs +0 -5
  21. package/esm2020/index.mjs +0 -6
  22. package/esm2020/lib/angular-table/component-renderer.if.mjs +0 -2
  23. package/esm2020/lib/angular-table/service/dom-service.mjs +0 -47
  24. package/esm2020/lib/angular-table/service/render-wrapper-factory.mjs +0 -22
  25. package/esm2020/lib/angular-table/service/renderer-wrapper.mjs +0 -44
  26. package/esm2020/lib/angular-table/table.component.mjs +0 -104
  27. package/fesm2015/guiexpert-angular-table.mjs +0 -215
  28. package/fesm2015/guiexpert-angular-table.mjs.map +0 -1
  29. package/fesm2020/guiexpert-angular-table.mjs +0 -215
  30. package/fesm2020/guiexpert-angular-table.mjs.map +0 -1
  31. package/lib/angular-table/component-renderer.if.d.ts +0 -4
  32. package/lib/angular-table/service/dom-service.d.ts +0 -16
  33. package/lib/angular-table/service/render-wrapper-factory.d.ts +0 -13
  34. package/lib/angular-table/service/renderer-wrapper.d.ts +0 -14
  35. package/lib/angular-table/table.component.d.ts +0 -41
  36. /package/{index.d.ts → src/index.ts} +0 -0
@@ -0,0 +1,152 @@
1
+ import {
2
+ ChangeDetectionStrategy,
3
+ Component,
4
+ ElementRef,
5
+ Input,
6
+ NgZone,
7
+ OnDestroy,
8
+ OnInit,
9
+ Output,
10
+ Renderer2,
11
+ ViewEncapsulation
12
+ } from "@angular/core";
13
+ import { CommonModule } from "@angular/common";
14
+ import { debounceTime, Subject, takeWhile } from "rxjs";
15
+ import {
16
+ EventListenerIf,
17
+ GeModelChangeEvent,
18
+ GeMouseEvent,
19
+ TableApi,
20
+ TableModelIf,
21
+ TableOptions,
22
+ TableOptionsIf,
23
+ TableScope
24
+ } from "@guiexpert/table";
25
+ import { DomService } from "./service/dom-service";
26
+
27
+
28
+ @Component({
29
+ selector: "guiexpert-table",
30
+ standalone: true,
31
+ imports: [CommonModule],
32
+ providers: [DomService],
33
+ template: "",
34
+ styleUrls: [
35
+ "./table.component.css",
36
+ "./table-color-vars.css",
37
+ "./table-color-classes.css"
38
+ ],
39
+ encapsulation: ViewEncapsulation.None,
40
+ changeDetection: ChangeDetectionStrategy.OnPush
41
+ })
42
+ export class TableComponent implements OnInit, OnDestroy, EventListenerIf {
43
+
44
+ @Output()
45
+ tableReady = new Subject<TableApi>();
46
+
47
+ @Output()
48
+ mouseMoved: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();
49
+
50
+ @Output()
51
+ mouseDragging: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();
52
+
53
+ @Output()
54
+ mouseDraggingEnded: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();
55
+
56
+ @Output()
57
+ contextmenu: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();
58
+
59
+ @Output()
60
+ mouseClicked: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();
61
+
62
+ @Output()
63
+ modelChanged: Subject<GeModelChangeEvent> = new Subject<GeModelChangeEvent>();
64
+
65
+ @Output()
66
+ checkboxChanged: Subject<any[]> = new Subject<any[]>();
67
+
68
+ @Input()
69
+ tableModel?: TableModelIf;
70
+
71
+ @Input()
72
+ tableOptions: TableOptionsIf = new TableOptions();
73
+
74
+ @Input()
75
+ debounceMouseClickDelay: number = 150;
76
+
77
+ private debounceMouseClick: Subject<GeMouseEvent> = new Subject<GeMouseEvent>();
78
+
79
+ private tableScope?: TableScope;
80
+ private alive = true;
81
+
82
+
83
+ constructor(
84
+ private readonly renderer: Renderer2,
85
+ private readonly elementRef: ElementRef,
86
+ private readonly zone: NgZone,
87
+ private readonly domService: DomService
88
+ ) {
89
+ }
90
+
91
+
92
+ onContextmenu(evt: GeMouseEvent): void {
93
+ this.contextmenu.next(evt);
94
+ }
95
+
96
+ onMouseMoved(evt: GeMouseEvent): void {
97
+ this.mouseMoved.next(evt);
98
+ }
99
+
100
+ // will be called by table-scope:
101
+ onMouseClicked(evt: GeMouseEvent): void {
102
+ this.debounceMouseClick.next(evt);
103
+ }
104
+
105
+ onCheckboxChanged(arr: any[]): void {
106
+ this.checkboxChanged.next(arr);
107
+ }
108
+
109
+ onModelChanged(evt: GeModelChangeEvent): void {
110
+ this.modelChanged.next(evt);
111
+ }
112
+
113
+ ngOnInit(): void {
114
+ this.initModel();
115
+ this.debounceMouseClick
116
+ .pipe(
117
+ debounceTime(this.debounceMouseClickDelay),
118
+ takeWhile(() => this.alive)
119
+ )
120
+ .subscribe((value) => this.mouseClicked.next(value));
121
+ }
122
+
123
+ ngOnDestroy(): void {
124
+ this.alive = false;
125
+ }
126
+
127
+
128
+ onMouseDragging(evt: GeMouseEvent): void {
129
+ this.mouseDragging.next(evt);
130
+ }
131
+
132
+ onMouseDraggingEnd(evt: GeMouseEvent): void {
133
+ this.mouseDraggingEnded.next(evt);
134
+ }
135
+
136
+
137
+ private initModel() {
138
+ this.zone.runOutsideAngular(this.init.bind(this));
139
+ }
140
+
141
+ private init() {
142
+ if (this.tableModel) {
143
+ this.tableScope = new TableScope(
144
+ this.elementRef.nativeElement, this.tableModel, this.domService, this.tableOptions, this
145
+ );
146
+ this.tableScope.firstInit();
147
+ this.tableReady.next(this.tableScope.getApi());
148
+ }
149
+ }
150
+
151
+
152
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "files": [],
4
+ "include": [],
5
+ "references": [
6
+ {
7
+ "path": "./tsconfig.lib.json"
8
+ },
9
+ {
10
+ "path": "./tsconfig.lib.prod.json"
11
+ }
12
+ ],
13
+ "compilerOptions": {
14
+ "target": "es2020",
15
+ "forceConsistentCasingInFileNames": true,
16
+ "strict": true,
17
+ "noImplicitOverride": true,
18
+ "noPropertyAccessFromIndexSignature": true,
19
+ "noImplicitReturns": true,
20
+ "noFallthroughCasesInSwitch": true
21
+ },
22
+ "angularCompilerOptions": {
23
+ "enableI18nLegacyMessageIdFormat": false,
24
+ "strictInjectionParameters": true,
25
+ "strictInputAccessModifiers": true,
26
+ "strictTemplates": true
27
+ }
28
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/out-tsc",
5
+ "declaration": true,
6
+ "declarationMap": true,
7
+ "inlineSources": true,
8
+ "types": []
9
+ },
10
+ "exclude": [
11
+ "jest.config.ts",
12
+ "**/*.test.ts",
13
+ "**/*.spec.ts"
14
+ ],
15
+ "include": [
16
+ "**/*.ts"
17
+ ]
18
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.lib.json",
3
+ "compilerOptions": {
4
+ "declarationMap": false
5
+ },
6
+ "angularCompilerOptions": {
7
+ "compilationMode": "partial"
8
+ }
9
+ }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZXhwZXJ0LWFuZ3VsYXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGFibGUvc3JjL2d1aWV4cGVydC1hbmd1bGFyLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
package/esm2020/index.mjs DELETED
@@ -1,6 +0,0 @@
1
- export * from './lib/angular-table/table.component';
2
- export * from './lib/angular-table/component-renderer.if';
3
- export * from './lib/angular-table/service/dom-service';
4
- export * from './lib/angular-table/service/renderer-wrapper';
5
- export * from './lib/angular-table/service/render-wrapper-factory';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGFibGUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxvREFBb0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItdGFibGUvdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItdGFibGUvY29tcG9uZW50LXJlbmRlcmVyLmlmJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FuZ3VsYXItdGFibGUvc2VydmljZS9kb20tc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLXRhYmxlL3NlcnZpY2UvcmVuZGVyZXItd3JhcHBlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbmd1bGFyLXRhYmxlL3NlcnZpY2UvcmVuZGVyLXdyYXBwZXItZmFjdG9yeSc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlbmRlcmVyLmlmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRhYmxlL3NyYy9saWIvYW5ndWxhci10YWJsZS9jb21wb25lbnQtcmVuZGVyZXIuaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJlYUlkZW50LCBBcmVhTW9kZWxJZiwgUmVuZGVyZXJDbGVhbnVwRm5UeXBlfSBmcm9tIFwiQGd1aWV4cGVydC90YWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFJlbmRlcmVySWY8VD4ge1xuXG4gIHNldERhdGEoXG4gICAgcm93SW5kZXg6IG51bWJlcixcbiAgICBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgIGFyZWFJZGVudDogQXJlYUlkZW50LFxuICAgIGFyZWFNb2RlbDogQXJlYU1vZGVsSWYsXG4gICAgY2VsbFZhbHVlOiBhbnkpOiBSZW5kZXJlckNsZWFudXBGblR5cGUgfCB1bmRlZmluZWQ7XG5cbn1cbiJdfQ==
@@ -1,47 +0,0 @@
1
- import { Injectable, Renderer2 } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class DomService {
4
- constructor(renderer) {
5
- this.renderer = renderer;
6
- }
7
- setStyle(el, style, value) {
8
- this.renderer.setStyle(el, style, value);
9
- return el;
10
- }
11
- ;
12
- appendText(parent, text) {
13
- const div = this.renderer.createText(text);
14
- this.renderer.appendChild(parent, div);
15
- return div;
16
- }
17
- addClass(div, clazz) {
18
- if (clazz.includes(' ')) {
19
- clazz.split(' ').forEach(c => this.renderer.addClass(div, c));
20
- }
21
- else {
22
- this.renderer.addClass(div, clazz);
23
- }
24
- return div;
25
- }
26
- appendChild(parent, child) {
27
- this.renderer.appendChild(parent, child);
28
- }
29
- createElement(name) {
30
- return this.renderer.createElement(name);
31
- }
32
- createText(text) {
33
- return this.renderer.createText(text);
34
- }
35
- setAttribute(ele, key, value) {
36
- this.renderer.setAttribute(ele, key, value);
37
- }
38
- }
39
- DomService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DomService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
40
- DomService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DomService, providedIn: "root" });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DomService, decorators: [{
42
- type: Injectable,
43
- args: [{
44
- providedIn: "root"
45
- }]
46
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGFibGUvc3JjL2xpYi9hbmd1bGFyLXRhYmxlL3NlcnZpY2UvZG9tLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQ1csUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUU5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQU8sRUFBRSxLQUFhLEVBQUUsS0FBVTtRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUFBLENBQUM7SUFHRixVQUFVLENBQUMsTUFBc0IsRUFBRSxJQUFZO1FBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFHRCxRQUFRLENBQUMsR0FBbUIsRUFBRSxLQUFhO1FBQ3pDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN2QixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQzlEO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBbUIsRUFBRSxLQUFrQjtRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBSSxJQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFnQixFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7d0dBM0NVLFVBQVU7NEdBQVYsVUFBVSxjQUZULE1BQU07NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIFJlbmRlcmVyMn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7RG9tU2VydmljZUlmfSBmcm9tIFwiQGd1aWV4cGVydC90YWJsZVwiO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgRG9tU2VydmljZSBpbXBsZW1lbnRzIERvbVNlcnZpY2VJZiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7XG4gIH1cblxuICBzZXRTdHlsZShlbDogYW55LCBzdHlsZTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCBzdHlsZSwgdmFsdWUpO1xuICAgIHJldHVybiBlbDtcbiAgfTtcblxuXG4gIGFwcGVuZFRleHQocGFyZW50OiBIVE1MRGl2RWxlbWVudCwgdGV4dDogc3RyaW5nKTogSFRNTERpdkVsZW1lbnQge1xuICAgIGNvbnN0IGRpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0ZXh0KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgZGl2KTtcbiAgICByZXR1cm4gZGl2O1xuICB9XG5cblxuICBhZGRDbGFzcyhkaXY6IEhUTUxEaXZFbGVtZW50LCBjbGF6ejogc3RyaW5nKSB7XG4gICAgaWYgKGNsYXp6LmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIGNsYXp6LnNwbGl0KCcgJykuZm9yRWFjaChjID0+IHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZGl2LCBjKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkaXYsIGNsYXp6KTtcbiAgICB9XG4gICAgcmV0dXJuIGRpdjtcbiAgfVxuXG4gIGFwcGVuZENoaWxkKHBhcmVudDogSFRNTEVsZW1lbnQsIGNoaWxkOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBjaGlsZCk7XG4gIH1cblxuICBjcmVhdGVFbGVtZW50PFQ+KG5hbWU6IHN0cmluZyk6IFQge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQobmFtZSk7XG4gIH1cblxuICBjcmVhdGVUZXh0KHRleHQ6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRleHQpO1xuICB9XG5cbiAgc2V0QXR0cmlidXRlKGVsZTogSFRNTEVsZW1lbnQsIGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlLCBrZXksIHZhbHVlKTtcbiAgfVxuXG5cbn1cbiJdfQ==
@@ -1,22 +0,0 @@
1
- import { ApplicationRef, EnvironmentInjector, Injectable, NgZone } from "@angular/core";
2
- import { RendererWrapper } from "./renderer-wrapper";
3
- import * as i0 from "@angular/core";
4
- export class RenderWrapperFactory {
5
- constructor(appRef, injector, zone) {
6
- this.appRef = appRef;
7
- this.injector = injector;
8
- this.zone = zone;
9
- }
10
- create(componentType, cdr) {
11
- return new RendererWrapper(componentType, this.appRef, this.injector, cdr, this.zone);
12
- }
13
- }
14
- RenderWrapperFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RenderWrapperFactory, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
15
- RenderWrapperFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RenderWrapperFactory, providedIn: "root" });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RenderWrapperFactory, decorators: [{
17
- type: Injectable,
18
- args: [{
19
- providedIn: "root"
20
- }]
21
- }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i0.NgZone }]; } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXdyYXBwZXItZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10YWJsZS9zcmMvbGliL2FuZ3VsYXItdGFibGUvc2VydmljZS9yZW5kZXItd3JhcHBlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQXFCLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFFL0csT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDOztBQUtuRCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQ21CLE1BQXNCLEVBQ3RCLFFBQTZCLEVBQzdCLElBQVk7UUFGWixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixTQUFJLEdBQUosSUFBSSxDQUFRO0lBRS9CLENBQUM7SUFFRCxNQUFNLENBQ0osYUFBMkMsRUFDM0MsR0FBc0I7UUFFdEIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsQ0FBQzs7a0hBZFUsb0JBQW9CO3NIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGFibGUsIE5nWm9uZSwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Q29tcG9uZW50UmVuZGVyZXJJZn0gZnJvbSBcIi4uL2NvbXBvbmVudC1yZW5kZXJlci5pZlwiO1xuaW1wb3J0IHtSZW5kZXJlcldyYXBwZXJ9IGZyb20gXCIuL3JlbmRlcmVyLXdyYXBwZXJcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBSZW5kZXJXcmFwcGVyRmFjdG9yeSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gIH1cblxuICBjcmVhdGU8VD4oXG4gICAgY29tcG9uZW50VHlwZTogVHlwZTxDb21wb25lbnRSZW5kZXJlcklmPFQ+PixcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHJldHVybiBuZXcgUmVuZGVyZXJXcmFwcGVyKGNvbXBvbmVudFR5cGUsIHRoaXMuYXBwUmVmLCB0aGlzLmluamVjdG9yLCBjZHIsIHRoaXMuem9uZSk7XG4gIH1cblxufVxuIl19
@@ -1,44 +0,0 @@
1
- import { createComponent, EventEmitter } from "@angular/core";
2
- import { Subject, takeUntil } from "rxjs";
3
- export class RendererWrapper {
4
- constructor(componentType, appRef, injector, cdr, zone) {
5
- this.componentType = componentType;
6
- this.appRef = appRef;
7
- this.injector = injector;
8
- this.cdr = cdr;
9
- this.zone = zone;
10
- this.event$ = new EventEmitter();
11
- this.closed$ = new Subject();
12
- }
13
- render(cellDiv, rowIndex, columnIndex, areaIdent, areaModel, cellValue, domService) {
14
- const componentRef = createComponent(this.componentType, {
15
- environmentInjector: this.injector
16
- });
17
- componentRef.instance.setData(rowIndex, columnIndex, areaIdent, areaModel, cellValue);
18
- const emmiterNames = Object.keys(componentRef.instance)
19
- .filter(key => {
20
- // @ts-ignore
21
- const t = componentRef.instance[key];
22
- return t['subscribe'];
23
- });
24
- // @ts-ignore
25
- const observables = (emmiterNames.map(key => componentRef.instance[key]));
26
- observables.forEach(obs => obs
27
- .pipe(takeUntil(this.closed$))
28
- .subscribe((event) => {
29
- console.info('RendererWrapper event >', event); // TODO hmm?
30
- this.event$.next(event);
31
- }));
32
- cellDiv.appendChild(componentRef.location.nativeElement);
33
- this.appRef.attachView(componentRef.hostView);
34
- this.zone.run(() => {
35
- this.cdr.detectChanges();
36
- });
37
- return () => {
38
- // clean up:
39
- this.appRef.detachView(componentRef.hostView);
40
- this.closed$.next(Date.now());
41
- };
42
- }
43
- }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXItd3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10YWJsZS9zcmMvbGliL2FuZ3VsYXItdGFibGUvc2VydmljZS9yZW5kZXJlci13cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFHTCxlQUFlLEVBRWYsWUFBWSxFQUdiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSXhDLE1BQU0sT0FBTyxlQUFlO0lBTTFCLFlBQ1UsYUFBMkMsRUFDM0MsTUFBc0IsRUFDdEIsUUFBNkIsRUFDN0IsR0FBc0IsRUFDYixJQUFZO1FBSnJCLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQUM3QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNiLFNBQUksR0FBSixJQUFJLENBQVE7UUFSZixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNoQyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQVNqRCxDQUFDO0lBRUQsTUFBTSxDQUNKLE9BQXVCLEVBQ3ZCLFFBQWdCLEVBQ2hCLFdBQW1CLEVBQ25CLFNBQW9CLEVBQ3BCLFNBQXNCLEVBQ3RCLFNBQWMsRUFDZCxVQUF3QjtRQUV4QixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2RCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNuQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDM0IsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsQ0FBQyxDQUFDO1FBR2IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO2FBQ3BELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNaLGFBQWE7WUFDYixNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUwsYUFBYTtRQUNiLE1BQU0sV0FBVyxHQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDeEcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUc7YUFDM0IsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQ3hCO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVk7WUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsRUFBRTtZQUNWLFlBQVk7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcmVhSWRlbnQsIEFyZWFNb2RlbElmLCBDZWxsUmVuZGVyZXJJZiwgRG9tU2VydmljZUlmLCBSZW5kZXJlckNsZWFudXBGblR5cGV9IGZyb20gXCJAZ3VpZXhwZXJ0L3RhYmxlXCI7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIGNyZWF0ZUNvbXBvbmVudCxcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgRXZlbnRFbWl0dGVyLFxuICBOZ1pvbmUsXG4gIFR5cGVcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7Q29tcG9uZW50UmVuZGVyZXJJZn0gZnJvbSBcIi4uL2NvbXBvbmVudC1yZW5kZXJlci5pZlwiO1xuaW1wb3J0IHtTdWJqZWN0LCB0YWtlVW50aWx9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzL2ludGVybmFsL09ic2VydmFibGVcIjtcblxuXG5leHBvcnQgY2xhc3MgUmVuZGVyZXJXcmFwcGVyPFQgZXh0ZW5kcyBDb21wb25lbnRSZW5kZXJlcklmPFQ+PlxuICBpbXBsZW1lbnRzIENlbGxSZW5kZXJlcklmIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnQkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xvc2VkJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbXBvbmVudFR5cGU6IFR5cGU8Q29tcG9uZW50UmVuZGVyZXJJZjxUPj4sXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgcmVuZGVyKFxuICAgIGNlbGxEaXY6IEhUTUxEaXZFbGVtZW50LFxuICAgIHJvd0luZGV4OiBudW1iZXIsXG4gICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICBhcmVhSWRlbnQ6IEFyZWFJZGVudCxcbiAgICBhcmVhTW9kZWw6IEFyZWFNb2RlbElmLFxuICAgIGNlbGxWYWx1ZTogYW55LFxuICAgIGRvbVNlcnZpY2U6IERvbVNlcnZpY2VJZik6IFJlbmRlcmVyQ2xlYW51cEZuVHlwZSB8IHVuZGVmaW5lZCB7XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQodGhpcy5jb21wb25lbnRUeXBlLCB7XG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmluamVjdG9yXG4gICAgfSk7XG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNldERhdGEoXG4gICAgICByb3dJbmRleCxcbiAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgYXJlYUlkZW50LFxuICAgICAgYXJlYU1vZGVsLFxuICAgICAgY2VsbFZhbHVlKTtcblxuXG4gICAgY29uc3QgZW1taXRlck5hbWVzID0gT2JqZWN0LmtleXMoY29tcG9uZW50UmVmLmluc3RhbmNlKVxuICAgICAgLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHQgPSBjb21wb25lbnRSZWYuaW5zdGFuY2Vba2V5XTtcbiAgICAgICAgcmV0dXJuIHRbJ3N1YnNjcmliZSddXG4gICAgICB9KTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBvYnNlcnZhYmxlczogT2JzZXJ2YWJsZVtdID0gKGVtbWl0ZXJOYW1lcy5tYXAoa2V5ID0+IChjb21wb25lbnRSZWYuaW5zdGFuY2Vba2V5XSBhcyBPYnNlcnZhYmxlKSkpO1xuICAgIG9ic2VydmFibGVzLmZvckVhY2gob2JzID0+IG9ic1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmNsb3NlZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnUmVuZGVyZXJXcmFwcGVyIGV2ZW50ID4nLCBldmVudCk7IC8vIFRPRE8gaG1tP1xuICAgICAgICB0aGlzLmV2ZW50JC5uZXh0KGV2ZW50KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNlbGxEaXYuYXBwZW5kQ2hpbGQoY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gY2xlYW4gdXA6XG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICB0aGlzLmNsb3NlZCQubmV4dChEYXRlLm5vdygpKTtcbiAgICB9O1xuICB9XG5cblxufVxuIl19
@@ -1,104 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, Input, NgZone, Output, Renderer2 } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { debounceTime, Subject, takeWhile } from "rxjs";
4
- import { TableOptions, TableScope } from "@guiexpert/table";
5
- import { DomService } from "./service/dom-service";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./service/dom-service";
8
- export class TableComponent {
9
- constructor(renderer, elementRef, zone, domService) {
10
- this.renderer = renderer;
11
- this.elementRef = elementRef;
12
- this.zone = zone;
13
- this.domService = domService;
14
- this.tableReady = new Subject();
15
- this.mouseMoved = new Subject();
16
- this.mouseDragging = new Subject();
17
- this.mouseDraggingEnded = new Subject();
18
- this.contextmenu = new Subject();
19
- this.mouseClicked = new Subject();
20
- this.modelChanged = new Subject();
21
- this.checkboxChanged = new Subject();
22
- this.tableOptions = new TableOptions();
23
- this.debounceMouseClickDelay = 150;
24
- this.debounceMouseClick = new Subject();
25
- this.alive = true;
26
- this._if = true;
27
- }
28
- set tableIf(value) {
29
- this._if = value;
30
- Promise.resolve().then(this.initModel.bind(this));
31
- }
32
- onContextmenu(evt) {
33
- this.contextmenu.next(evt);
34
- }
35
- onMouseMoved(evt) {
36
- this.mouseMoved.next(evt);
37
- }
38
- // will be called by table-scope:
39
- onMouseClicked(evt) {
40
- this.debounceMouseClick.next(evt);
41
- }
42
- onCheckboxChanged(arr) {
43
- this.checkboxChanged.next(arr);
44
- }
45
- onModelChanged(evt) {
46
- this.modelChanged.next(evt);
47
- }
48
- ngOnInit() {
49
- this.initModel();
50
- this.debounceMouseClick
51
- .pipe(debounceTime(this.debounceMouseClickDelay), takeWhile(() => this.alive))
52
- .subscribe((value) => this.mouseClicked.next(value));
53
- }
54
- ngOnDestroy() {
55
- this.alive = false;
56
- }
57
- initModel() {
58
- this.zone.runOutsideAngular(this.init.bind(this));
59
- }
60
- init() {
61
- if (this.tableModel) {
62
- this.tableScope = new TableScope(this.elementRef.nativeElement, this.tableModel, this.domService, this.tableOptions, this);
63
- this.tableScope.firstInit();
64
- this.tableReady.next(this.tableScope.getApi());
65
- }
66
- }
67
- onMouseDragging(evt) {
68
- this.mouseDragging.next(evt);
69
- }
70
- onMouseDraggingEnd(evt) {
71
- this.mouseDraggingEnded.next(evt);
72
- }
73
- }
74
- TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DomService }], target: i0.ɵɵFactoryTarget.Component });
75
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TableComponent, isStandalone: true, selector: "guiexpert-table", inputs: { tableModel: "tableModel", tableOptions: "tableOptions", debounceMouseClickDelay: "debounceMouseClickDelay", tableIf: "tableIf" }, outputs: { tableReady: "tableReady", mouseMoved: "mouseMoved", mouseDragging: "mouseDragging", mouseDraggingEnded: "mouseDraggingEnded", contextmenu: "contextmenu", mouseClicked: "mouseClicked", modelChanged: "modelChanged", checkboxChanged: "checkboxChanged" }, providers: [DomService], ngImport: i0, template: '', isInline: true, styles: [".ge-table-col-div{text-align:center;line-height:2.5;-webkit-user-select:none;user-select:none}.ge-table-label-div{padding:0;display:block;text-overflow:ellipsis;overflow:hidden}.ge-cell-error{color:#e00034}.ge-table-selected-range{background-color:#0098db66}.ge-table-col-resize-handle:hover{background-color:#0ff}.ge-table-drop-zone{background-color:#f4fff299}.ge-table-dragged-col-div{background-color:#e0ffff}.ge-table-focus-border{background-color:#0ff}.ge-table-label-div .ge-table-label{padding-left:10px;padding-right:10px}.ge-table-text-align-left{text-align:left}.ge-table-text-align-right{text-align:right}.ge-table-text-align-center{text-align:center}.ge-table-row-checkbox-div{padding-left:14px}.ge-table-header,.ge-table-footer{background-color:#e9e9e980}.ge-table-body-west,.ge-table-body-east{background-color:#f4f4f480}.ge-table-hover-column,.ge-table-hover-row{background-color:#e0ffff80}.ge-table-west-fixed-column-border,.ge-table-east-fixed-column-border,.ge-table-footer-border,.ge-table-header-border{background-color:#bbb}.ge-table-row-border{background-color:#ddd}.ge-table-column-border{background-color:#dadada}.ge-table-col-div.ge-table-col-div-0.ge-table-tree-cell{text-align:left}.ge-table-tree-cell .ge-table-label-div{padding-left:0;padding-right:10px;display:inline}.gt-tree-arrow-collapsed{color:red}.ge-table-col-tree{text-align:left}.ge-table-col-tree.ge-table-tree-deep-0{padding-left:16px}.ge-table-col-tree.ge-table-tree-deep-1{padding-left:36px}.ge-table-col-tree.ge-table-tree-deep-2{padding-left:56px}.ge-table-col-tree.ge-table-tree-deep-3{padding-left:76px}.ge-table-col-tree.ge-table-tree-deep-4{padding-left:96px}.ge-table-col-tree.ge-table-tree-deep-5{padding-left:116px}.ge-table-col-tree.ge-table-tree-deep-5{padding-left:136px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TableComponent, decorators: [{
77
- type: Component,
78
- args: [{ selector: 'guiexpert-table', standalone: true, imports: [CommonModule], providers: [DomService], template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ge-table-col-div{text-align:center;line-height:2.5;-webkit-user-select:none;user-select:none}.ge-table-label-div{padding:0;display:block;text-overflow:ellipsis;overflow:hidden}.ge-cell-error{color:#e00034}.ge-table-selected-range{background-color:#0098db66}.ge-table-col-resize-handle:hover{background-color:#0ff}.ge-table-drop-zone{background-color:#f4fff299}.ge-table-dragged-col-div{background-color:#e0ffff}.ge-table-focus-border{background-color:#0ff}.ge-table-label-div .ge-table-label{padding-left:10px;padding-right:10px}.ge-table-text-align-left{text-align:left}.ge-table-text-align-right{text-align:right}.ge-table-text-align-center{text-align:center}.ge-table-row-checkbox-div{padding-left:14px}.ge-table-header,.ge-table-footer{background-color:#e9e9e980}.ge-table-body-west,.ge-table-body-east{background-color:#f4f4f480}.ge-table-hover-column,.ge-table-hover-row{background-color:#e0ffff80}.ge-table-west-fixed-column-border,.ge-table-east-fixed-column-border,.ge-table-footer-border,.ge-table-header-border{background-color:#bbb}.ge-table-row-border{background-color:#ddd}.ge-table-column-border{background-color:#dadada}.ge-table-col-div.ge-table-col-div-0.ge-table-tree-cell{text-align:left}.ge-table-tree-cell .ge-table-label-div{padding-left:0;padding-right:10px;display:inline}.gt-tree-arrow-collapsed{color:red}.ge-table-col-tree{text-align:left}.ge-table-col-tree.ge-table-tree-deep-0{padding-left:16px}.ge-table-col-tree.ge-table-tree-deep-1{padding-left:36px}.ge-table-col-tree.ge-table-tree-deep-2{padding-left:56px}.ge-table-col-tree.ge-table-tree-deep-3{padding-left:76px}.ge-table-col-tree.ge-table-tree-deep-4{padding-left:96px}.ge-table-col-tree.ge-table-tree-deep-5{padding-left:116px}.ge-table-col-tree.ge-table-tree-deep-5{padding-left:136px}\n"] }]
79
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DomService }]; }, propDecorators: { tableReady: [{
80
- type: Output
81
- }], mouseMoved: [{
82
- type: Output
83
- }], mouseDragging: [{
84
- type: Output
85
- }], mouseDraggingEnded: [{
86
- type: Output
87
- }], contextmenu: [{
88
- type: Output
89
- }], mouseClicked: [{
90
- type: Output
91
- }], modelChanged: [{
92
- type: Output
93
- }], checkboxChanged: [{
94
- type: Output
95
- }], tableModel: [{
96
- type: Input
97
- }], tableOptions: [{
98
- type: Input
99
- }], debounceMouseClickDelay: [{
100
- type: Input
101
- }], tableIf: [{
102
- type: Input
103
- }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRhYmxlL3NyYy9saWIvYW5ndWxhci10YWJsZS90YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFNTCxZQUFZLEVBRVosVUFBVSxFQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7QUFZakQsTUFBTSxPQUFPLGNBQWM7SUEwQ3pCLFlBQ21CLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLElBQVksRUFDWixVQUFzQjtRQUh0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQVk7UUEzQ3pDLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBR3JDLGVBQVUsR0FBMEIsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFHaEUsa0JBQWEsR0FBMEIsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFHbkUsdUJBQWtCLEdBQTBCLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR3hFLGdCQUFXLEdBQTBCLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR2pFLGlCQUFZLEdBQTBCLElBQUksT0FBTyxFQUFnQixDQUFDO1FBR2xFLGlCQUFZLEdB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QUFFLDJ6REFGRixZQUFZOzRGQU1YLGNBQWM7a0JBVDFCLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLGFBQ1osQ0FBQyxVQUFVLENBQUMsWUFDYixFQUFFLG1CQUVLLHVCQUF1QixDQUFDLE1BQU07dUtBSy9DLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQUlQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFlBQVk7c0JBRFgsTUFBTTtnQkFJUCxlQUFlO3NCQURkLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBb0JGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIFN1YmplY3QsIHRha2VXaGlsZX0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gIEV2ZW50TGlzdGVuZXJJZixcbiAgR2VNb2RlbENoYW5nZUV2ZW50LFxuICBHZU1vdXNlRXZlbnQsXG4gIFRhYmxlQXBpLFxuICBUYWJsZU1vZGVsSWYsXG4gIFRhYmxlT3B0aW9ucyxcbiAgVGFibGVPcHRpb25zSWYsXG4gIFRhYmxlU2NvcGVcbn0gZnJvbSBcIkBndWlleHBlcnQvdGFibGVcIjtcbmltcG9ydCB7RG9tU2VydmljZX0gZnJvbSBcIi4vc2VydmljZS9kb20tc2VydmljZVwiO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2d1aWV4cGVydC10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtEb21TZXJ2aWNlXSxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEV2ZW50TGlzdGVuZXJJZiB7XG5cbiAgQE91dHB1dCgpXG4gIHRhYmxlUmVhZHkgPSBuZXcgU3ViamVjdDxUYWJsZUFwaT4oKTtcblxuICBAT3V0cHV0KClcbiAgbW91c2VNb3ZlZDogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBtb3VzZURyYWdnaW5nOiBTdWJqZWN0PEdlTW91c2VFdmVudD4gPSBuZXcgU3ViamVjdDxHZU1vdXNlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG1vdXNlRHJhZ2dpbmdFbmRlZDogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjb250ZXh0bWVudTogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBtb3VzZUNsaWNrZWQ6IFN1YmplY3Q8R2VNb3VzZUV2ZW50PiA9IG5ldyBTdWJqZWN0PEdlTW91c2VFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgbW9kZWxDaGFuZ2VkOiBTdWJqZWN0PEdlTW9kZWxDaGFuZ2VFdmVudD4gPSBuZXcgU3ViamVjdDxHZU1vZGVsQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrYm94Q2hhbmdlZDogU3ViamVjdDxhbnlbXT4gPSBuZXcgU3ViamVjdDxhbnlbXT4oKTtcblxuICBASW5wdXQoKVxuICB0YWJsZU1vZGVsPzogVGFibGVNb2RlbElmO1xuXG4gIEBJbnB1dCgpXG4gIHRhYmxlT3B0aW9uczogVGFibGVPcHRpb25zSWYgPSBuZXcgVGFibGVPcHRpb25zKCk7XG5cbiAgQElucHV0KClcbiAgZGVib3VuY2VNb3VzZUNsaWNrRGVsYXk6IG51bWJlciA9IDE1MDtcblxuICBwcml2YXRlIGRlYm91bmNlTW91c2VDbGljazogU3ViamVjdDxHZU1vdXNlRXZlbnQ+ID0gbmV3IFN1YmplY3Q8R2VNb3VzZUV2ZW50PigpO1xuXG4gIHByaXZhdGUgdGFibGVTY29wZT86IFRhYmxlU2NvcGU7XG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuICBwcml2YXRlIF9pZjogYm9vbGVhbiA9IHRydWU7XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9tU2VydmljZTogRG9tU2VydmljZVxuICApIHtcblxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHRhYmxlSWYodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pZiA9IHZhbHVlO1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4odGhpcy5pbml0TW9kZWwuYmluZCh0aGlzKSk7XG4gIH1cblxuICBvbkNvbnRleHRtZW51KGV2dDogR2VNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0bWVudS5uZXh0KGV2dCk7XG4gIH1cblxuICBvbk1vdXNlTW92ZWQoZXZ0OiBHZU1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1vdXNlTW92ZWQubmV4dChldnQpO1xuICB9XG5cbiAgLy8gd2lsbCBiZSBjYWxsZWQgYnkgdGFibGUtc2NvcGU6XG4gIG9uTW91c2VDbGlja2VkKGV2dDogR2VNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kZWJvdW5jZU1vdXNlQ2xpY2submV4dChldnQpO1xuICB9XG5cbiAgb25DaGVja2JveENoYW5nZWQoYXJyOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tib3hDaGFuZ2VkLm5leHQoYXJyKTtcbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2VkKGV2dDogR2VNb2RlbENoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbENoYW5nZWQubmV4dChldnQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0TW9kZWwoKTtcbiAgICB0aGlzLmRlYm91bmNlTW91c2VDbGlja1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlTW91c2VDbGlja0RlbGF5KSxcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuYWxpdmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5tb3VzZUNsaWNrZWQubmV4dCh2YWx1ZSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cblxuICBwcml2YXRlIGluaXRNb2RlbCgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIodGhpcy5pbml0LmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGlmICh0aGlzLnRhYmxlTW9kZWwpIHtcbiAgICAgIHRoaXMudGFibGVTY29wZSA9IG5ldyBUYWJsZVNjb3BlKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy50YWJsZU1vZGVsLCB0aGlzLmRvbVNlcnZpY2UsIHRoaXMudGFibGVPcHRpb25zLCB0aGlzXG4gICAgICApO1xuICAgICAgdGhpcy50YWJsZVNjb3BlLmZpcnN0SW5pdCgpO1xuICAgICAgdGhpcy50YWJsZVJlYWR5Lm5leHQodGhpcy50YWJsZVNjb3BlLmdldEFwaSgpKTtcbiAgICB9XG4gIH1cblxuICBvbk1vdXNlRHJhZ2dpbmcoZXZ0OiBHZU1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1vdXNlRHJhZ2dpbmcubmV4dChldnQpO1xuICB9XG5cbiAgb25Nb3VzZURyYWdnaW5nRW5kKGV2dDogR2VNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZURyYWdnaW5nRW5kZWQubmV4dChldnQpO1xuICB9XG5cblxufVxuIl19