@aquera/ngx-smart-table 0.0.17-alpha → 0.0.19-alpha
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.
- package/{fesm2020 → fesm2022}/aquera-ngx-smart-table.mjs +1579 -2101
- package/fesm2022/aquera-ngx-smart-table.mjs.map +1 -0
- package/package.json +8 -16
- package/types/aquera-ngx-smart-table.d.ts +5909 -0
- package/aquera-ngx-smart-table.d.ts +0 -5
- package/esm2020/aquera-ngx-smart-table.mjs +0 -5
- package/esm2020/lib/builder/components/builder-preview/builder-preview.component.mjs +0 -63
- package/esm2020/lib/builder/components/builder-toolbar/builder-toolbar.component.mjs +0 -115
- package/esm2020/lib/builder/components/column-editor/column-editor.component.mjs +0 -206
- package/esm2020/lib/builder/components/column-list/column-list.component.mjs +0 -125
- package/esm2020/lib/builder/components/definition-builder/definition-builder.component.mjs +0 -105
- package/esm2020/lib/builder/components/table-config-editor/table-config-editor.component.mjs +0 -132
- package/esm2020/lib/builder/definition-builder.module.mjs +0 -70
- package/esm2020/lib/builder/models/builder-state.interface.mjs +0 -5
- package/esm2020/lib/builder/services/definition-builder.service.mjs +0 -251
- package/esm2020/lib/builder/services/definition-export.service.mjs +0 -167
- package/esm2020/lib/builder/services/definition-import.service.mjs +0 -193
- package/esm2020/lib/builder/services/sample-data-generator.service.mjs +0 -126
- package/esm2020/lib/builder/utils/config-validator.util.mjs +0 -165
- package/esm2020/lib/builder/utils/typescript-generator.util.mjs +0 -206
- package/esm2020/lib/editors/index.mjs +0 -9
- package/esm2020/lib/editors/nile-autocomplete-editor.mjs +0 -228
- package/esm2020/lib/editors/nile-calendar-editor.mjs +0 -211
- package/esm2020/lib/editors/nile-date-picker-editor.mjs +0 -188
- package/esm2020/lib/editors/nile-input-editor.mjs +0 -235
- package/esm2020/lib/editors/nile-select-editor.mjs +0 -498
- package/esm2020/lib/factories/column-config.factory.mjs +0 -231
- package/esm2020/lib/models/autosave-config.interface.mjs +0 -8
- package/esm2020/lib/models/base-column-config.class.mjs +0 -253
- package/esm2020/lib/models/cell-strategies.interface.mjs +0 -6
- package/esm2020/lib/models/cell-types.mjs +0 -147
- package/esm2020/lib/models/column-action.interface.mjs +0 -6
- package/esm2020/lib/models/column-config.interface.mjs +0 -43
- package/esm2020/lib/models/column-config.utils.mjs +0 -101
- package/esm2020/lib/models/row-action.interface.mjs +0 -5
- package/esm2020/lib/models/row-validator.interface.mjs +0 -2
- package/esm2020/lib/models/schema-validation.interface.mjs +0 -2
- package/esm2020/lib/models/sheet-action.interface.mjs +0 -5
- package/esm2020/lib/models/sheet-config.interface.mjs +0 -5
- package/esm2020/lib/models/table-config.interface.mjs +0 -107
- package/esm2020/lib/models/table-validator.interface.mjs +0 -2
- package/esm2020/lib/models/workbook-action.interface.mjs +0 -5
- package/esm2020/lib/models/workbook-config.interface.mjs +0 -5
- package/esm2020/lib/renderer/components/st-add-column-button/st-add-column-button.component.mjs +0 -24
- package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +0 -397
- package/esm2020/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.mjs +0 -103
- package/esm2020/lib/renderer/components/st-column-filter/st-column-filter.component.mjs +0 -383
- package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +0 -232
- package/esm2020/lib/renderer/components/st-column-visibility/st-column-visibility.component.mjs +0 -97
- package/esm2020/lib/renderer/components/st-header/st-header.component.mjs +0 -157
- package/esm2020/lib/renderer/components/st-pagination/st-pagination.component.mjs +0 -87
- package/esm2020/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.mjs +0 -167
- package/esm2020/lib/renderer/components/st-sheet/st-sheet.component.mjs +0 -165
- package/esm2020/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.mjs +0 -112
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +0 -1453
- package/esm2020/lib/renderer/components/st-table-actions/st-table-actions.component.mjs +0 -169
- package/esm2020/lib/renderer/components/st-workbook/st-workbook.component.mjs +0 -581
- package/esm2020/lib/renderer/directives/click-outside.directive.mjs +0 -28
- package/esm2020/lib/renderer/directives/st-column-resize.directive.mjs +0 -108
- package/esm2020/lib/renderer/directives/st-keyboard-navigation.directive.mjs +0 -83
- package/esm2020/lib/renderer/models/cell-state.interface.mjs +0 -66
- package/esm2020/lib/renderer/models/cell.class.mjs +0 -389
- package/esm2020/lib/renderer/models/row-validation-state.interface.mjs +0 -7
- package/esm2020/lib/renderer/models/sheet-state.class.mjs +0 -90
- package/esm2020/lib/renderer/models/sheet-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/table-state.class.mjs +0 -871
- package/esm2020/lib/renderer/models/table-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/table-types.mjs +0 -29
- package/esm2020/lib/renderer/models/table-validation-state.interface.mjs +0 -7
- package/esm2020/lib/renderer/models/workbook-state.class.mjs +0 -174
- package/esm2020/lib/renderer/models/workbook-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/z-index.enum.mjs +0 -55
- package/esm2020/lib/schemas/table-config.schema.mjs +0 -472
- package/esm2020/lib/services/autosave.service.mjs +0 -92
- package/esm2020/lib/services/custom-validation-rules.util.mjs +0 -124
- package/esm2020/lib/services/json-schema-validator.service.mjs +0 -216
- package/esm2020/lib/services/row-validation.service.mjs +0 -42
- package/esm2020/lib/services/validation-logger.service.mjs +0 -177
- package/esm2020/lib/services/virtual-scroll.service.mjs +0 -52
- package/esm2020/lib/shared/shared-table-components.module.mjs +0 -35
- package/esm2020/lib/smart-table.module.mjs +0 -124
- package/esm2020/lib/strategies/default-editors.mjs +0 -433
- package/esm2020/lib/strategies/default-formatters.mjs +0 -238
- package/esm2020/lib/strategies/default-validators.mjs +0 -327
- package/esm2020/public-api.mjs +0 -146
- package/fesm2015/aquera-ngx-smart-table.mjs +0 -12347
- package/fesm2015/aquera-ngx-smart-table.mjs.map +0 -1
- package/fesm2020/aquera-ngx-smart-table.mjs.map +0 -1
- package/lib/builder/components/builder-preview/builder-preview.component.d.ts +0 -31
- package/lib/builder/components/builder-toolbar/builder-toolbar.component.d.ts +0 -53
- package/lib/builder/components/column-editor/column-editor.component.d.ts +0 -69
- package/lib/builder/components/column-list/column-list.component.d.ts +0 -65
- package/lib/builder/components/definition-builder/definition-builder.component.d.ts +0 -58
- package/lib/builder/components/table-config-editor/table-config-editor.component.d.ts +0 -32
- package/lib/builder/definition-builder.module.d.ts +0 -15
- package/lib/builder/models/builder-state.interface.d.ts +0 -93
- package/lib/builder/services/definition-builder.service.d.ts +0 -80
- package/lib/builder/services/definition-export.service.d.ts +0 -59
- package/lib/builder/services/definition-import.service.d.ts +0 -31
- package/lib/builder/services/sample-data-generator.service.d.ts +0 -41
- package/lib/builder/utils/config-validator.util.d.ts +0 -32
- package/lib/builder/utils/typescript-generator.util.d.ts +0 -29
- package/lib/editors/index.d.ts +0 -8
- package/lib/editors/nile-autocomplete-editor.d.ts +0 -102
- package/lib/editors/nile-calendar-editor.d.ts +0 -88
- package/lib/editors/nile-date-picker-editor.d.ts +0 -97
- package/lib/editors/nile-input-editor.d.ts +0 -67
- package/lib/editors/nile-select-editor.d.ts +0 -113
- package/lib/factories/column-config.factory.d.ts +0 -73
- package/lib/models/autosave-config.interface.d.ts +0 -23
- package/lib/models/base-column-config.class.d.ts +0 -115
- package/lib/models/cell-strategies.interface.d.ts +0 -188
- package/lib/models/cell-types.d.ts +0 -337
- package/lib/models/column-action.interface.d.ts +0 -86
- package/lib/models/column-config.interface.d.ts +0 -272
- package/lib/models/column-config.utils.d.ts +0 -37
- package/lib/models/row-action.interface.d.ts +0 -86
- package/lib/models/row-validator.interface.d.ts +0 -37
- package/lib/models/schema-validation.interface.d.ts +0 -42
- package/lib/models/sheet-action.interface.d.ts +0 -59
- package/lib/models/sheet-config.interface.d.ts +0 -41
- package/lib/models/table-config.interface.d.ts +0 -251
- package/lib/models/table-validator.interface.d.ts +0 -40
- package/lib/models/workbook-action.interface.d.ts +0 -95
- package/lib/models/workbook-config.interface.d.ts +0 -107
- package/lib/renderer/components/st-add-column-button/st-add-column-button.component.d.ts +0 -9
- package/lib/renderer/components/st-cell/st-cell.component.d.ts +0 -69
- package/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.d.ts +0 -39
- package/lib/renderer/components/st-column-filter/st-column-filter.component.d.ts +0 -139
- package/lib/renderer/components/st-column-menu/st-column-menu.component.d.ts +0 -81
- package/lib/renderer/components/st-column-visibility/st-column-visibility.component.d.ts +0 -44
- package/lib/renderer/components/st-header/st-header.component.d.ts +0 -93
- package/lib/renderer/components/st-pagination/st-pagination.component.d.ts +0 -42
- package/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.d.ts +0 -67
- package/lib/renderer/components/st-sheet/st-sheet.component.d.ts +0 -98
- package/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.d.ts +0 -58
- package/lib/renderer/components/st-table/st-table.component.d.ts +0 -380
- package/lib/renderer/components/st-table-actions/st-table-actions.component.d.ts +0 -77
- package/lib/renderer/components/st-workbook/st-workbook.component.d.ts +0 -275
- package/lib/renderer/directives/click-outside.directive.d.ts +0 -10
- package/lib/renderer/directives/st-column-resize.directive.d.ts +0 -44
- package/lib/renderer/directives/st-keyboard-navigation.directive.d.ts +0 -19
- package/lib/renderer/models/cell-state.interface.d.ts +0 -118
- package/lib/renderer/models/cell.class.d.ts +0 -174
- package/lib/renderer/models/row-validation-state.interface.d.ts +0 -27
- package/lib/renderer/models/sheet-state.class.d.ts +0 -67
- package/lib/renderer/models/sheet-state.interface.d.ts +0 -55
- package/lib/renderer/models/table-state.class.d.ts +0 -320
- package/lib/renderer/models/table-state.interface.d.ts +0 -18
- package/lib/renderer/models/table-types.d.ts +0 -228
- package/lib/renderer/models/table-validation-state.interface.d.ts +0 -34
- package/lib/renderer/models/workbook-state.class.d.ts +0 -117
- package/lib/renderer/models/workbook-state.interface.d.ts +0 -71
- package/lib/renderer/models/z-index.enum.d.ts +0 -44
- package/lib/schemas/table-config.schema.d.ts +0 -455
- package/lib/services/autosave.service.d.ts +0 -73
- package/lib/services/custom-validation-rules.util.d.ts +0 -12
- package/lib/services/json-schema-validator.service.d.ts +0 -49
- package/lib/services/row-validation.service.d.ts +0 -17
- package/lib/services/validation-logger.service.d.ts +0 -87
- package/lib/services/virtual-scroll.service.d.ts +0 -44
- package/lib/shared/shared-table-components.module.d.ts +0 -9
- package/lib/smart-table.module.d.ts +0 -26
- package/lib/strategies/default-editors.d.ts +0 -109
- package/lib/strategies/default-formatters.d.ts +0 -116
- package/lib/strategies/default-validators.d.ts +0 -113
- package/public-api.d.ts +0 -70
- package/src/lib/builder/README.md +0 -30
- package/src/lib/editors/README.md +0 -303
- package/src/lib/renderer/components/st-column-filter/README.md +0 -286
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ClickOutsideDirective {
|
|
4
|
-
constructor(el) {
|
|
5
|
-
this.el = el;
|
|
6
|
-
this.clickOutside = new EventEmitter();
|
|
7
|
-
}
|
|
8
|
-
onClick(target) {
|
|
9
|
-
const clickedInside = this.el.nativeElement.contains(target);
|
|
10
|
-
if (!clickedInside) {
|
|
11
|
-
this.clickOutside.emit();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
-
ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.0", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 });
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
18
|
-
type: Directive,
|
|
19
|
-
args: [{
|
|
20
|
-
selector: '[clickOutside]'
|
|
21
|
-
}]
|
|
22
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { clickOutside: [{
|
|
23
|
-
type: Output
|
|
24
|
-
}], onClick: [{
|
|
25
|
-
type: HostListener,
|
|
26
|
-
args: ['document:click', ['$event.target']]
|
|
27
|
-
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLMUYsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUZ4QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFYixDQUFDO0lBR3RDLE9BQU8sQ0FBQyxNQUFtQjtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7a0hBWFUscUJBQXFCO3NHQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjtpR0FFVyxZQUFZO3NCQUFyQixNQUFNO2dCQUtQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2xpY2tPdXRzaWRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIHtcbiAgQE91dHB1dCgpIGNsaWNrT3V0c2lkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG4gIFxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkNsaWNrKHRhcmdldDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICB0aGlzLmNsaWNrT3V0c2lkZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Column Resize Directive
|
|
3
|
-
* Handles column resizing when applied to th/td elements
|
|
4
|
-
*/
|
|
5
|
-
import { Directive, HostListener, Input, Output, EventEmitter } from '@angular/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class StColumnResizeDirective {
|
|
8
|
-
constructor(el) {
|
|
9
|
-
this.el = el;
|
|
10
|
-
/**
|
|
11
|
-
* Emits when column is resized
|
|
12
|
-
*/
|
|
13
|
-
this.columnResized = new EventEmitter();
|
|
14
|
-
/**
|
|
15
|
-
* Resize state
|
|
16
|
-
*/
|
|
17
|
-
this.isResizing = false;
|
|
18
|
-
this.startX = 0;
|
|
19
|
-
this.startWidth = 0;
|
|
20
|
-
/**
|
|
21
|
-
* Track mouse movement during resize
|
|
22
|
-
*/
|
|
23
|
-
this.onResizeMove = (event) => {
|
|
24
|
-
if (!this.isResizing) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
const deltaX = event.pageX - this.startX;
|
|
28
|
-
let newWidth = this.startWidth + deltaX;
|
|
29
|
-
// Apply constraints
|
|
30
|
-
const minWidth = this.column.minWidth ?? 50;
|
|
31
|
-
const maxWidth = this.column.maxWidth;
|
|
32
|
-
newWidth = Math.max(minWidth, newWidth);
|
|
33
|
-
if (maxWidth) {
|
|
34
|
-
newWidth = Math.min(maxWidth, newWidth);
|
|
35
|
-
}
|
|
36
|
-
// Update column width (mutate Flyweight config)
|
|
37
|
-
this.column.width = newWidth;
|
|
38
|
-
// Update element width immediately for visual feedback
|
|
39
|
-
// this.el.nativeElement.style.width = `${newWidth}px`;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* End resize on mouseup
|
|
43
|
-
*/
|
|
44
|
-
this.onResizeEnd = () => {
|
|
45
|
-
if (!this.isResizing) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
this.isResizing = false;
|
|
49
|
-
// Emit event with old and new width
|
|
50
|
-
const resizeEvent = {
|
|
51
|
-
columnKey: this.column.key,
|
|
52
|
-
oldWidth: this.startWidth,
|
|
53
|
-
newWidth: this.column.width,
|
|
54
|
-
column: this.column
|
|
55
|
-
};
|
|
56
|
-
this.columnResized.emit(resizeEvent);
|
|
57
|
-
// Remove global listeners
|
|
58
|
-
document.removeEventListener('mousemove', this.onResizeMove);
|
|
59
|
-
document.removeEventListener('mouseup', this.onResizeEnd);
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Start resize on mousedown
|
|
64
|
-
*/
|
|
65
|
-
onResizeStart(event) {
|
|
66
|
-
// Check if click is on the resize handle span element
|
|
67
|
-
const target = event.target;
|
|
68
|
-
const isResizeHandle = target.classList.contains('resize-handle') ||
|
|
69
|
-
target.closest('.resize-handle') !== null;
|
|
70
|
-
if (!isResizeHandle) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
if (this.column.resizable === false) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
event.preventDefault();
|
|
77
|
-
event.stopPropagation();
|
|
78
|
-
this.isResizing = true;
|
|
79
|
-
this.startX = event.pageX;
|
|
80
|
-
this.startWidth = this.column.width || 100;
|
|
81
|
-
// Attach global listeners
|
|
82
|
-
document.addEventListener('mousemove', this.onResizeMove);
|
|
83
|
-
document.addEventListener('mouseup', this.onResizeEnd);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Cleanup on destroy
|
|
87
|
-
*/
|
|
88
|
-
ngOnDestroy() {
|
|
89
|
-
document.removeEventListener('mousemove', this.onResizeMove);
|
|
90
|
-
document.removeEventListener('mouseup', this.onResizeEnd);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
StColumnResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnResizeDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
94
|
-
StColumnResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.0", type: StColumnResizeDirective, selector: "[stColumnResize]", inputs: { column: "column" }, outputs: { columnResized: "columnResized" }, host: { listeners: { "mousedown": "onResizeStart($event)" } }, ngImport: i0 });
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnResizeDirective, decorators: [{
|
|
96
|
-
type: Directive,
|
|
97
|
-
args: [{
|
|
98
|
-
selector: '[stColumnResize]'
|
|
99
|
-
}]
|
|
100
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { column: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], columnResized: [{
|
|
103
|
-
type: Output
|
|
104
|
-
}], onResizeStart: [{
|
|
105
|
-
type: HostListener,
|
|
106
|
-
args: ['mousedown', ['$event']]
|
|
107
|
-
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLXJlc2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2RpcmVjdGl2ZXMvc3QtY29sdW1uLXJlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBTzVHLE1BQU0sT0FBTyx1QkFBdUI7SUFrQmxDLFlBQW9CLEVBQTJCO1FBQTNCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBWi9DOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQUVoRTs7V0FFRztRQUNLLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFrQ3ZCOztXQUVHO1FBQ0ssaUJBQVksR0FBRyxDQUFDLEtBQWlCLEVBQVEsRUFBRTtZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTzthQUNSO1lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3pDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBRXhDLG9CQUFvQjtZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFFdEMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFD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YW5kbGVzIGNvbHVtbiByZXNpemluZyB3aGVuIGFwcGxpZWQgdG8gdGgvdGQgZWxlbWVudHNcbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2x1bW5SZXNpemVFdmVudCB9IGZyb20gJy4uL21vZGVscy90YWJsZS10eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tzdENvbHVtblJlc2l6ZV0nXG59KVxuZXhwb3J0IGNsYXNzIFN0Q29sdW1uUmVzaXplRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIENvbHVtbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW4hOiBDb2x1bW5Db25maWc8YW55PjtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBjb2x1bW4gaXMgcmVzaXplZFxuICAgKi9cbiAgQE91dHB1dCgpIGNvbHVtblJlc2l6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbHVtblJlc2l6ZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBSZXNpemUgc3RhdGVcbiAgICovXG4gIHByaXZhdGUgaXNSZXNpemluZyA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXJ0WCA9IDA7XG4gIHByaXZhdGUgc3RhcnRXaWR0aCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlc2l6ZSBvbiBtb3VzZWRvd25cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplU3RhcnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiBjbGljayBpcyBvbiB0aGUgcmVzaXplIGhhbmRsZSBzcGFuIGVsZW1lbnRcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgaXNSZXNpemVIYW5kbGUgPSB0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNpemUtaGFuZGxlJykgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuY2xvc2VzdCgnLnJlc2l6ZS1oYW5kbGUnKSAhPT0gbnVsbDtcblxuICAgIGlmICghaXNSZXNpemVIYW5kbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb2x1bW4ucmVzaXphYmxlID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmlzUmVzaXppbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQucGFnZVg7XG4gICAgdGhpcy5zdGFydFdpZHRoID0gKHRoaXMuY29sdW1uLndpZHRoIGFzIG51bWJlcikgfHwgMTAwO1xuXG4gICAgLy8gQXR0YWNoIGdsb2JhbCBsaXN0ZW5lcnNcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplTW92ZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIG1vdXNlIG1vdmVtZW50IGR1cmluZyByZXNpemVcbiAgICovXG4gIHByaXZhdGUgb25SZXNpemVNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgaWYgKCF0aGlzLmlzUmVzaXppbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWx0YVggPSBldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRYO1xuICAgIGxldCBuZXdXaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIGRlbHRhWDtcblxuICAgIC8vIEFwcGx5IGNvbnN0cmFpbnRzXG4gICAgY29uc3QgbWluV2lkdGggPSB0aGlzLmNvbHVtbi5taW5XaWR0aCA/PyA1MDtcbiAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuY29sdW1uLm1heFdpZHRoO1xuXG4gICAgbmV3V2lkdGggPSBNYXRoLm1heChtaW5XaWR0aCwgbmV3V2lkdGgpO1xuICAgIGlmIChtYXhXaWR0aCkge1xuICAgICAgbmV3V2lkdGggPSBNYXRoLm1pbihtYXhXaWR0aCwgbmV3V2lkdGgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjb2x1bW4gd2lkdGggKG11dGF0ZSBGbHl3ZWlnaHQgY29uZmlnKVxuICAgICh0aGlzLmNvbHVtbiBhcyBhbnkpLndpZHRoID0gbmV3V2lkdGg7XG4gICAgXG4gICAgLy8gVXBkYXRlIGVsZW1lbnQgd2lkdGggaW1tZWRpYXRlbHkgZm9yIHZpc3VhbCBmZWVkYmFja1xuICAgIC8vIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcbiAgfTtcblxuICAvKipcbiAgICogRW5kIHJlc2l6ZSBvbiBtb3VzZXVwXG4gICAqL1xuICBwcml2YXRlIG9uUmVzaXplRW5kID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XG5cbiAgICAvLyBFbWl0IGV2ZW50IHdpdGggb2xkIGFuZCBuZXcgd2lkdGhcbiAgICBjb25zdCByZXNpemVFdmVudDogQ29sdW1uUmVzaXplRXZlbnQgPSB7XG4gICAgICBjb2x1bW5LZXk6IHRoaXMuY29sdW1uLmtleSxcbiAgICAgIG9sZFdpZHRoOiB0aGlzLnN0YXJ0V2lkdGgsXG4gICAgICBuZXdXaWR0aDogKHRoaXMuY29sdW1uLndpZHRoIGFzIG51bWJlcikhLFxuICAgICAgY29sdW1uOiB0aGlzLmNvbHVtblxuICAgIH07XG4gICAgdGhpcy5jb2x1bW5SZXNpemVkLmVtaXQocmVzaXplRXZlbnQpO1xuXG4gICAgLy8gUmVtb3ZlIGdsb2JhbCBsaXN0ZW5lcnNcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uUmVzaXplTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMub25SZXNpemVFbmQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBDbGVhbnVwIG9uIGRlc3Ryb3lcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25SZXNpemVNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vblJlc2l6ZUVuZCk7XG4gIH1cbn1cblxuIl19
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
-
import { NavigationKey, NavigationDirection } from '../../models/cell-types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Directive to handle keyboard navigation in table cells
|
|
6
|
-
*/
|
|
7
|
-
export class StKeyboardNavigationDirective {
|
|
8
|
-
constructor() {
|
|
9
|
-
/**
|
|
10
|
-
* When enabled, pressing arrow down at the last row will emit requestAddRow event
|
|
11
|
-
*/
|
|
12
|
-
this.addRowOnNavigatePastEnd = false;
|
|
13
|
-
}
|
|
14
|
-
onKeyDown(event) {
|
|
15
|
-
if (!this.tableState.isNavigationActive()) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
const isEditing = this.tableState.isAnyCellEditing();
|
|
19
|
-
// Use NavigationKey enum for type-safe key checking
|
|
20
|
-
switch (event.key) {
|
|
21
|
-
case NavigationKey.ARROW_UP:
|
|
22
|
-
case NavigationKey.ARROW_DOWN:
|
|
23
|
-
case NavigationKey.ARROW_LEFT:
|
|
24
|
-
case NavigationKey.ARROW_RIGHT:
|
|
25
|
-
// Allow navigation when NOT editing
|
|
26
|
-
if (isEditing)
|
|
27
|
-
return;
|
|
28
|
-
event.preventDefault();
|
|
29
|
-
const direction = this.getDirection(event.key);
|
|
30
|
-
if (direction) {
|
|
31
|
-
// Pass addRowOnNavigatePastEnd only for DOWN direction
|
|
32
|
-
const addRowEnabled = direction === NavigationDirection.DOWN && this.addRowOnNavigatePastEnd;
|
|
33
|
-
this.tableState.moveFocus(direction, addRowEnabled);
|
|
34
|
-
}
|
|
35
|
-
break;
|
|
36
|
-
case NavigationKey.ENTER:
|
|
37
|
-
// Navigate down when NOT editing (Excel-like behavior)
|
|
38
|
-
if (isEditing)
|
|
39
|
-
return; // Let cell component handle save
|
|
40
|
-
event.preventDefault();
|
|
41
|
-
this.tableState.moveFocus(NavigationDirection.DOWN, this.addRowOnNavigatePastEnd);
|
|
42
|
-
break;
|
|
43
|
-
case NavigationKey.TAB:
|
|
44
|
-
// Navigate left/right when NOT editing (Excel-like behavior)
|
|
45
|
-
if (isEditing)
|
|
46
|
-
return; // Let cell component handle save
|
|
47
|
-
event.preventDefault();
|
|
48
|
-
this.tableState.moveFocus(event.shiftKey ? NavigationDirection.LEFT : NavigationDirection.RIGHT);
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Convert navigation key to direction using enums
|
|
54
|
-
*/
|
|
55
|
-
getDirection(key) {
|
|
56
|
-
const map = {
|
|
57
|
-
[NavigationKey.ARROW_UP]: NavigationDirection.UP,
|
|
58
|
-
[NavigationKey.ARROW_DOWN]: NavigationDirection.DOWN,
|
|
59
|
-
[NavigationKey.ARROW_LEFT]: NavigationDirection.LEFT,
|
|
60
|
-
[NavigationKey.ARROW_RIGHT]: NavigationDirection.RIGHT,
|
|
61
|
-
[NavigationKey.TAB]: null,
|
|
62
|
-
[NavigationKey.ENTER]: null,
|
|
63
|
-
[NavigationKey.ESCAPE]: null
|
|
64
|
-
};
|
|
65
|
-
return map[key];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
StKeyboardNavigationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StKeyboardNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
|
-
StKeyboardNavigationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.0", type: StKeyboardNavigationDirective, selector: "[stKeyboardNavigation]", inputs: { tableState: "tableState", addRowOnNavigatePastEnd: "addRowOnNavigatePastEnd" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0 });
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StKeyboardNavigationDirective, decorators: [{
|
|
71
|
-
type: Directive,
|
|
72
|
-
args: [{
|
|
73
|
-
selector: '[stKeyboardNavigation]'
|
|
74
|
-
}]
|
|
75
|
-
}], propDecorators: { tableState: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], addRowOnNavigatePastEnd: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], onKeyDown: [{
|
|
80
|
-
type: HostListener,
|
|
81
|
-
args: ['keydown', ['$event']]
|
|
82
|
-
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Qta2V5Ym9hcmQtbmF2aWdhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2RpcmVjdGl2ZXMvc3Qta2V5Ym9hcmQtbmF2aWdhdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFN0U7O0dBRUc7QUFJSCxNQUFNLE9BQU8sNkJBQTZCO0lBSDFDO1FBTUU7O1dBRUc7UUFDTSw0QkFBdUIsR0FBWSxLQUFLLENBQUM7S0ErRG5EO0lBNURDLFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQ3pDLE9BQU87U0FDUjtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUVyRCxvREFBb0Q7UUFDcEQsUUFBUSxLQUFLLENBQUMsR0FBb0IsRUFBRTtZQUNsQyxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDNUIsS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQzlCLEtBQUssYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUM5QixLQUFLLGFBQWEsQ0FBQyxXQUFXO2dCQUM1QixvQ0FBb0M7Z0JBQ3BDLElBQUksU0FBUztvQkFBRSxPQUFPO2dCQUV0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQW9CLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsdURBQXVEO29CQUN2RCxNQUFNLGFBQWEsR0FBRyxTQUFTLEtBQUssbUJBQW1CLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztvQkFDN0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2lCQUNyRDtnQkFDRCxNQUFNO1lBRVIsS0FBSyxhQUFhLENBQUMsS0FBSztnQkFDdEIsdURBQXVEO2dCQUN2RCxJQUFJLFNBQVM7b0JBQUUsT0FBTyxDQUFDLGlDQUFpQztnQkFFeEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQ2xGLE1BQU07WUFFUixLQUFLLGFBQWEsQ0FBQyxHQUFHO2dCQUNwQiw2REFBNkQ7Z0JBQzdELElBQUksU0FBUztvQkFBRSxPQUFPLENBQUMsaUNBQWlDO2dCQUV4RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUN2QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FDdEUsQ0FBQztnQkFDRixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsR0FBa0I7UUFDckMsTUFBTSxHQUFHLEdBQXNEO1lBQzdELENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLEVBQUU7WUFDaEQsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtZQUNwRCxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJO1lBQ3BELENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLEtBQUs7WUFDdEQsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSTtZQUN6QixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO1lBQzNCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUk7U0FDN0IsQ0FBQztRQUNGLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7OzBIQXBFVSw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DOzhCQUVVLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYmxlU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbktleSwgTmF2aWdhdGlvbkRpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jZWxsLXR5cGVzJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gaGFuZGxlIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGFibGUgY2VsbHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3N0S2V5Ym9hcmROYXZpZ2F0aW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgU3RLZXlib2FyZE5hdmlnYXRpb25EaXJlY3RpdmUge1xuICBASW5wdXQoKSB0YWJsZVN0YXRlITogVGFibGVTdGF0ZTtcbiAgXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHByZXNzaW5nIGFycm93IGRvd24gYXQgdGhlIGxhc3Qgcm93IHdpbGwgZW1pdCByZXF1ZXN0QWRkUm93IGV2ZW50XG4gICAqL1xuICBASW5wdXQoKSBhZGRSb3dPbk5hdmlnYXRlUGFzdEVuZDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZVN0YXRlLmlzTmF2aWdhdGlvbkFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGlzRWRpdGluZyA9IHRoaXMudGFibGVTdGF0ZS5pc0FueUNlbGxFZGl0aW5nKCk7XG4gICAgXG4gICAgLy8gVXNlIE5hdmlnYXRpb25LZXkgZW51bSBmb3IgdHlwZS1zYWZlIGtleSBjaGVja2luZ1xuICAgIHN3aXRjaCAoZXZlbnQua2V5IGFzIE5hdmlnYXRpb25LZXkpIHtcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5BUlJPV19VUDpcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5BUlJPV19ET1dOOlxuICAgICAgY2FzZSBOYXZpZ2F0aW9uS2V5LkFSUk9XX0xFRlQ6XG4gICAgICBjYXNlIE5hdmlnYXRpb25LZXkuQVJST1dfUklHSFQ6XG4gICAgICAgIC8vIEFsbG93IG5hdmlnYXRpb24gd2hlbiBOT1QgZWRpdGluZ1xuICAgICAgICBpZiAoaXNFZGl0aW5nKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLmdldERpcmVjdGlvbihldmVudC5rZXkgYXMgTmF2aWdhdGlvbktleSk7XG4gICAgICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgICAvLyBQYXNzIGFkZFJvd09uTmF2aWdhdGVQYXN0RW5kIG9ubHkgZm9yIERPV04gZGlyZWN0aW9uXG4gICAgICAgICAgY29uc3QgYWRkUm93RW5hYmxlZCA9IGRpcmVjdGlvbiA9PT0gTmF2aWdhdGlvbkRpcmVjdGlvbi5ET1dOICYmIHRoaXMuYWRkUm93T25OYXZpZ2F0ZVBhc3RFbmQ7XG4gICAgICAgICAgdGhpcy50YWJsZVN0YXRlLm1vdmVGb2N1cyhkaXJlY3Rpb24sIGFkZFJvd0VuYWJsZWQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5FTlRFUjpcbiAgICAgICAgLy8gTmF2aWdhdGUgZG93biB3aGVuIE5PVCBlZGl0aW5nIChFeGNlbC1saWtlIGJlaGF2aW9yKVxuICAgICAgICBpZiAoaXNFZGl0aW5nKSByZXR1cm47IC8vIExldCBjZWxsIGNvbXBvbmVudCBoYW5kbGUgc2F2ZVxuICAgICAgICBcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0YXRlLm1vdmVGb2N1cyhOYXZpZ2F0aW9uRGlyZWN0aW9uLkRPV04sIHRoaXMuYWRkUm93T25OYXZpZ2F0ZVBhc3RFbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBjYXNlIE5hdmlnYXRpb25LZXkuVEFCOlxuICAgICAgICAvLyBOYXZpZ2F0ZSBsZWZ0L3JpZ2h0IHdoZW4gTk9UIGVkaXRpbmcgKEV4Y2VsLWxpa2UgYmVoYXZpb3IpXG4gICAgICAgIGlmIChpc0VkaXRpbmcpIHJldHVybjsgLy8gTGV0IGNlbGwgY29tcG9uZW50IGhhbmRsZSBzYXZlXG4gICAgICAgIFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRhYmxlU3RhdGUubW92ZUZvY3VzKFxuICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID8gTmF2aWdhdGlvbkRpcmVjdGlvbi5MRUZUIDogTmF2aWdhdGlvbkRpcmVjdGlvbi5SSUdIVFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDb252ZXJ0IG5hdmlnYXRpb24ga2V5IHRvIGRpcmVjdGlvbiB1c2luZyBlbnVtc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXREaXJlY3Rpb24oa2V5OiBOYXZpZ2F0aW9uS2V5KTogTmF2aWdhdGlvbkRpcmVjdGlvbiB8IG51bGwge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPE5hdmlnYXRpb25LZXksIE5hdmlnYXRpb25EaXJlY3Rpb24gfCBudWxsPiA9IHtcbiAgICAgIFtOYXZpZ2F0aW9uS2V5LkFSUk9XX1VQXTogTmF2aWdhdGlvbkRpcmVjdGlvbi5VUCxcbiAgICAgIFtOYXZpZ2F0aW9uS2V5LkFSUk9XX0RPV05dOiBOYXZpZ2F0aW9uRGlyZWN0aW9uLkRPV04sXG4gICAgICBbTmF2aWdhdGlvbktleS5BUlJPV19MRUZUXTogTmF2aWdhdGlvbkRpcmVjdGlvbi5MRUZULFxuICAgICAgW05hdmlnYXRpb25LZXkuQVJST1dfUklHSFRdOiBOYXZpZ2F0aW9uRGlyZWN0aW9uLlJJR0hULFxuICAgICAgW05hdmlnYXRpb25LZXkuVEFCXTogbnVsbCxcbiAgICAgIFtOYXZpZ2F0aW9uS2V5LkVOVEVSXTogbnVsbCxcbiAgICAgIFtOYXZpZ2F0aW9uS2V5LkVTQ0FQRV06IG51bGxcbiAgICB9O1xuICAgIHJldHVybiBtYXBba2V5XTtcbiAgfVxufVxuIl19
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cell state interface - represents unique state per cell instance
|
|
3
|
-
* This is the "Context" in the Flyweight pattern
|
|
4
|
-
*/
|
|
5
|
-
import { CellLifecycleState } from '../../models/cell-types';
|
|
6
|
-
/**
|
|
7
|
-
* Factory function to create initial cell state with defaults
|
|
8
|
-
*/
|
|
9
|
-
export function createCellState(value, overrides) {
|
|
10
|
-
return {
|
|
11
|
-
value,
|
|
12
|
-
isEditing: false,
|
|
13
|
-
isDirty: false,
|
|
14
|
-
isFocused: false,
|
|
15
|
-
previousValue: value,
|
|
16
|
-
originalValue: value,
|
|
17
|
-
lifecycleState: CellLifecycleState.DISPLAY,
|
|
18
|
-
...overrides
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Create a memento snapshot of cell state
|
|
23
|
-
*/
|
|
24
|
-
export function createMemento(state) {
|
|
25
|
-
return {
|
|
26
|
-
value: state.value,
|
|
27
|
-
isDirty: state.isDirty,
|
|
28
|
-
error: state.error,
|
|
29
|
-
metadata: state.metadata ? { ...state.metadata } : undefined,
|
|
30
|
-
timestamp: new Date()
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Restore cell state from memento
|
|
35
|
-
*/
|
|
36
|
-
export function restoreFromMemento(currentState, memento) {
|
|
37
|
-
return {
|
|
38
|
-
...currentState,
|
|
39
|
-
value: memento.value,
|
|
40
|
-
isDirty: memento.isDirty,
|
|
41
|
-
error: memento.error,
|
|
42
|
-
metadata: memento.metadata ? { ...memento.metadata } : currentState.metadata
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Helper to check if cell is in valid state
|
|
47
|
-
*/
|
|
48
|
-
export function isCellValid(state) {
|
|
49
|
-
return !state.error && (!state.errors || Object.keys(state.errors).length === 0);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Helper to check if cell can be edited
|
|
53
|
-
*/
|
|
54
|
-
export function canEdit(state) {
|
|
55
|
-
return !state.isDisabled &&
|
|
56
|
-
!state.isReadonly &&
|
|
57
|
-
!state.isLoading &&
|
|
58
|
-
state.lifecycleState !== CellLifecycleState.SAVING;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Helper to check if cell is in display mode
|
|
62
|
-
*/
|
|
63
|
-
export function isDisplayMode(state) {
|
|
64
|
-
return state.lifecycleState === CellLifecycleState.DISPLAY && !state.isEditing;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdGF0ZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL21vZGVscy9jZWxsLXN0YXRlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWtHN0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFJLEtBQVEsRUFBRSxTQUFpQztJQUM1RSxPQUFPO1FBQ0wsS0FBSztRQUNMLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsU0FBUyxFQUFFLEtBQUs7UUFDaEIsYUFBYSxFQUFFLEtBQUs7UUFDcEIsYUFBYSxFQUFFLEtBQUs7UUFDcEIsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU87UUFDMUMsR0FBRyxTQUFTO0tBQ2IsQ0FBQztBQUNKLENBQUM7QUFjRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUksS0FBbUI7SUFDbEQsT0FBTztRQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztRQUNsQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzVELFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxZQUEwQixFQUMxQixPQUE0QjtJQUU1QixPQUFPO1FBQ0wsR0FBRyxZQUFZO1FBQ2YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRO0tBQzdFLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFJLEtBQW1CO0lBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFJLEtBQW1CO0lBQzVDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVTtRQUNqQixDQUFDLEtBQUssQ0FBQyxVQUFVO1FBQ2pCLENBQUMsS0FBSyxDQUFDLFNBQVM7UUFDaEIsS0FBSyxDQUFDLGNBQWMsS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7QUFDNUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxLQUFtQjtJQUNsRCxPQUFPLEtBQUssQ0FBQyxjQUFjLEtBQUssa0JBQWtCLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNqRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDZWxsIHN0YXRlIGludGVyZmFjZSAtIHJlcHJlc2VudHMgdW5pcXVlIHN0YXRlIHBlciBjZWxsIGluc3RhbmNlXG4gKiBUaGlzIGlzIHRoZSBcIkNvbnRleHRcIiBpbiB0aGUgRmx5d2VpZ2h0IHBhdHRlcm5cbiAqL1xuXG5pbXBvcnQgeyBDZWxsTGlmZWN5Y2xlU3RhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2VsbC10eXBlcyc7XG5cbi8qKlxuICogQ2VsbCBzdGF0ZSBjb250YWluaW5nIGFsbCB1bmlxdWUgc3RhdGUgcGVyIGNlbGwgaW5zdGFuY2VcbiAqIFRoaXMgaXMgc3RvcmVkIGluZGl2aWR1YWxseSBwZXIgY2VsbCwgd2hpbGUgQ29sdW1uQ29uZmlnIGlzIHNoYXJlZCAoRmx5d2VpZ2h0KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxTdGF0ZTxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBDdXJyZW50IGNlbGwgdmFsdWVcbiAgICovXG4gIHZhbHVlOiBUO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjZWxsIGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGVcbiAgICovXG4gIGlzRWRpdGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2VsbCB2YWx1ZSBoYXMgYmVlbiBtb2RpZmllZFxuICAgKi9cbiAgaXNEaXJ0eTogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJldmlvdXMgdmFsdWUgYmVmb3JlIGN1cnJlbnQgZWRpdCAoZm9yIHVuZG8vY2FuY2VsKVxuICAgKi9cbiAgcHJldmlvdXNWYWx1ZT86IFQ7XG5cbiAgLyoqXG4gICAqIE9yaWdpbmFsIHZhbHVlIHdoZW4gY2VsbCB3YXMgaW5pdGlhbGl6ZWQgKGZvciByZXNldClcbiAgICovXG4gIG9yaWdpbmFsVmFsdWU/OiBUO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0aW9uIGVycm9yIG1lc3NhZ2UgaWYgdmFsaWRhdGlvbiBmYWlsZWRcbiAgICovXG4gIGVycm9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNdWx0aXBsZSB2YWxpZGF0aW9uIGVycm9ycyAoZmllbGQtc3BlY2lmaWMpXG4gICAqL1xuICBlcnJvcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBXYXJuaW5nIG1lc3NhZ2VzIChub24tYmxvY2tpbmcpXG4gICAqL1xuICB3YXJuaW5ncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGxpZmVjeWNsZSBzdGF0ZSBvZiB0aGUgY2VsbFxuICAgKi9cbiAgbGlmZWN5Y2xlU3RhdGU6IENlbGxMaWZlY3ljbGVTdGF0ZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2VsbCBpcyBjdXJyZW50bHkgbG9hZGluZyAoYXN5bmMgb3BlcmF0aW9ucylcbiAgICovXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNlbGwgaXMgZGlzYWJsZWRcbiAgICovXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjZWxsIGlzIHJlYWRvbmx5XG4gICAqL1xuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2VsbCBpcyBzZWxlY3RlZFxuICAgKi9cbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNlbGwgaXMgZm9jdXNlZFxuICAgKi9cbiAgaXNGb2N1c2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2VsbCBpcyBob3ZlcmVkXG4gICAqL1xuICBpc0hvdmVyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gbWV0YWRhdGEgZm9yIGNlbGwtc3BlY2lmaWMgZGF0YVxuICAgKi9cbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgb2YgbGFzdCBtb2RpZmljYXRpb25cbiAgICovXG4gIGxhc3RNb2RpZmllZD86IERhdGU7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCBvZiBsYXN0IHZhbGlkYXRpb25cbiAgICovXG4gIGxhc3RWYWxpZGF0ZWQ/OiBEYXRlO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGluaXRpYWwgY2VsbCBzdGF0ZSB3aXRoIGRlZmF1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDZWxsU3RhdGU8VD4odmFsdWU6IFQsIG92ZXJyaWRlcz86IFBhcnRpYWw8Q2VsbFN0YXRlPFQ+Pik6IENlbGxTdGF0ZTxUPiB7XG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICBpc0RpcnR5OiBmYWxzZSxcbiAgICBpc0ZvY3VzZWQ6IGZhbHNlLFxuICAgIHByZXZpb3VzVmFsdWU6IHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWU6IHZhbHVlLFxuICAgIGxpZmVjeWNsZVN0YXRlOiBDZWxsTGlmZWN5Y2xlU3RhdGUuRElTUExBWSxcbiAgICAuLi5vdmVycmlkZXNcbiAgfTtcbn1cblxuLyoqXG4gKiBDZWxsIHN0YXRlIG1lbWVudG8gZm9yIHNhdmUvcmVzdG9yZSBvcGVyYXRpb25zIChNZW1lbnRvIHBhdHRlcm4pXG4gKiBDb250YWlucyBtaW5pbWFsIHN0YXRlIG5lZWRlZCBmb3IgdW5kby9yZWRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbFN0YXRlTWVtZW50bzxUID0gYW55PiB7XG4gIHZhbHVlOiBUO1xuICBpc0RpcnR5OiBib29sZWFuO1xuICBlcnJvcj86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB0aW1lc3RhbXA6IERhdGU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbWVtZW50byBzbmFwc2hvdCBvZiBjZWxsIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1lbnRvPFQ+KHN0YXRlOiBDZWxsU3RhdGU8VD4pOiBDZWxsU3RhdGVNZW1lbnRvPFQ+IHtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogc3RhdGUudmFsdWUsXG4gICAgaXNEaXJ0eTogc3RhdGUuaXNEaXJ0eSxcbiAgICBlcnJvcjogc3RhdGUuZXJyb3IsXG4gICAgbWV0YWRhdGE6IHN0YXRlLm1ldGFkYXRhID8geyAuLi5zdGF0ZS5tZXRhZGF0YSB9IDogdW5kZWZpbmVkLFxuICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxuICB9O1xufVxuXG4vKipcbiAqIFJlc3RvcmUgY2VsbCBzdGF0ZSBmcm9tIG1lbWVudG9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3RvcmVGcm9tTWVtZW50bzxUPihcbiAgY3VycmVudFN0YXRlOiBDZWxsU3RhdGU8VD4sXG4gIG1lbWVudG86IENlbGxTdGF0ZU1lbWVudG88VD5cbik6IENlbGxTdGF0ZTxUPiB7XG4gIHJldHVybiB7XG4gICAgLi4uY3VycmVudFN0YXRlLFxuICAgIHZhbHVlOiBtZW1lbnRvLnZhbHVlLFxuICAgIGlzRGlydHk6IG1lbWVudG8uaXNEaXJ0eSxcbiAgICBlcnJvcjogbWVtZW50by5lcnJvcixcbiAgICBtZXRhZGF0YTogbWVtZW50by5tZXRhZGF0YSA/IHsgLi4ubWVtZW50by5tZXRhZGF0YSB9IDogY3VycmVudFN0YXRlLm1ldGFkYXRhXG4gIH07XG59XG5cbi8qKlxuICogSGVscGVyIHRvIGNoZWNrIGlmIGNlbGwgaXMgaW4gdmFsaWQgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2VsbFZhbGlkPFQ+KHN0YXRlOiBDZWxsU3RhdGU8VD4pOiBib29sZWFuIHtcbiAgcmV0dXJuICFzdGF0ZS5lcnJvciAmJiAoIXN0YXRlLmVycm9ycyB8fCBPYmplY3Qua2V5cyhzdGF0ZS5lcnJvcnMpLmxlbmd0aCA9PT0gMCk7XG59XG5cbi8qKlxuICogSGVscGVyIHRvIGNoZWNrIGlmIGNlbGwgY2FuIGJlIGVkaXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuRWRpdDxUPihzdGF0ZTogQ2VsbFN0YXRlPFQ+KTogYm9vbGVhbiB7XG4gIHJldHVybiAhc3RhdGUuaXNEaXNhYmxlZCAmJiBcbiAgICAgICAgICFzdGF0ZS5pc1JlYWRvbmx5ICYmIFxuICAgICAgICAgIXN0YXRlLmlzTG9hZGluZyAmJlxuICAgICAgICAgc3RhdGUubGlmZWN5Y2xlU3RhdGUgIT09IENlbGxMaWZlY3ljbGVTdGF0ZS5TQVZJTkc7XG59XG5cbi8qKlxuICogSGVscGVyIHRvIGNoZWNrIGlmIGNlbGwgaXMgaW4gZGlzcGxheSBtb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Rpc3BsYXlNb2RlPFQ+KHN0YXRlOiBDZWxsU3RhdGU8VD4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXRlLmxpZmVjeWNsZVN0YXRlID09PSBDZWxsTGlmZWN5Y2xlU3RhdGUuRElTUExBWSAmJiAhc3RhdGUuaXNFZGl0aW5nO1xufVxuXG4iXX0=
|