@tanstack/angular-table 8.17.3 → 9.0.0-alpha.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.
- package/dist/esm2022/flex-render.mjs +127 -0
- package/dist/esm2022/index.mjs +48 -0
- package/dist/esm2022/lazy-signal-initializer.mjs +43 -0
- package/dist/esm2022/proxy.mjs +82 -0
- package/dist/esm2022/tanstack-angular-table.mjs +5 -0
- package/{build/lib → dist}/fesm2022/tanstack-angular-table.mjs +3 -3
- package/dist/fesm2022/tanstack-angular-table.mjs.map +1 -0
- package/package.json +10 -15
- package/build/lib/.npmignore +0 -2
- package/build/lib/esm2022/flex-render.mjs +0 -127
- package/build/lib/esm2022/index.mjs +0 -48
- package/build/lib/esm2022/lazy-signal-initializer.mjs +0 -43
- package/build/lib/esm2022/proxy.mjs +0 -82
- package/build/lib/esm2022/tanstack-angular-table.mjs +0 -5
- package/build/lib/fesm2022/tanstack-angular-table.mjs.map +0 -1
- /package/{build/lib → dist}/flex-render.d.ts +0 -0
- /package/{build/lib → dist}/index.d.ts +0 -0
- /package/{build/lib → dist}/lazy-signal-initializer.d.ts +0 -0
- /package/{build/lib → dist}/proxy.d.ts +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { ChangeDetectorRef, ComponentRef, Directive, EmbeddedViewRef, inject, InjectionToken, Injector, Input, TemplateRef, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FlexRenderDirective {
|
|
4
|
+
viewContainerRef;
|
|
5
|
+
templateRef;
|
|
6
|
+
content = undefined;
|
|
7
|
+
props = {};
|
|
8
|
+
injector = inject(Injector);
|
|
9
|
+
constructor(viewContainerRef, templateRef) {
|
|
10
|
+
this.viewContainerRef = viewContainerRef;
|
|
11
|
+
this.templateRef = templateRef;
|
|
12
|
+
}
|
|
13
|
+
ref = null;
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
this.ref = this.render();
|
|
16
|
+
}
|
|
17
|
+
ngDoCheck() {
|
|
18
|
+
if (this.ref instanceof ComponentRef) {
|
|
19
|
+
this.ref.injector.get(ChangeDetectorRef).markForCheck();
|
|
20
|
+
}
|
|
21
|
+
else if (this.ref instanceof EmbeddedViewRef) {
|
|
22
|
+
this.ref.markForCheck();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
render() {
|
|
26
|
+
this.viewContainerRef.clear();
|
|
27
|
+
const { content, props } = this;
|
|
28
|
+
if (!this.content) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (typeof content === 'string' || typeof content === 'number') {
|
|
32
|
+
return this.renderStringContent();
|
|
33
|
+
}
|
|
34
|
+
if (typeof content === 'function') {
|
|
35
|
+
return this.renderContent(content(props));
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
renderContent(content) {
|
|
40
|
+
if (typeof content === 'string' || typeof content === 'number') {
|
|
41
|
+
return this.renderStringContent();
|
|
42
|
+
}
|
|
43
|
+
if (content instanceof TemplateRef) {
|
|
44
|
+
return this.viewContainerRef.createEmbeddedView(content, this.getTemplateRefContext());
|
|
45
|
+
}
|
|
46
|
+
else if (content instanceof FlexRenderComponent) {
|
|
47
|
+
return this.renderComponent(content);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
renderStringContent() {
|
|
54
|
+
const context = () => {
|
|
55
|
+
return typeof this.content === 'string' ||
|
|
56
|
+
typeof this.content === 'number'
|
|
57
|
+
? this.content
|
|
58
|
+
: this.content?.(this.props);
|
|
59
|
+
};
|
|
60
|
+
return this.viewContainerRef.createEmbeddedView(this.templateRef, {
|
|
61
|
+
get $implicit() {
|
|
62
|
+
return context();
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
renderComponent(flexRenderComponent) {
|
|
67
|
+
const { component, inputs, injector } = flexRenderComponent;
|
|
68
|
+
const getContext = () => this.props;
|
|
69
|
+
const proxy = new Proxy(this.props, {
|
|
70
|
+
get: (_, key) => getContext()?.[key],
|
|
71
|
+
});
|
|
72
|
+
const componentInjector = Injector.create({
|
|
73
|
+
parent: injector ?? this.injector,
|
|
74
|
+
providers: [{ provide: FlexRenderComponentProps, useValue: proxy }],
|
|
75
|
+
});
|
|
76
|
+
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
77
|
+
injector: componentInjector,
|
|
78
|
+
});
|
|
79
|
+
for (const prop in inputs) {
|
|
80
|
+
if (componentRef.instance?.hasOwnProperty(prop)) {
|
|
81
|
+
componentRef.setInput(prop, inputs[prop]);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return componentRef;
|
|
85
|
+
}
|
|
86
|
+
getTemplateRefContext() {
|
|
87
|
+
const getContext = () => this.props;
|
|
88
|
+
return {
|
|
89
|
+
get $implicit() {
|
|
90
|
+
return getContext();
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FlexRenderDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
95
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.8", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, ngImport: i0 });
|
|
96
|
+
}
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
98
|
+
type: Directive,
|
|
99
|
+
args: [{
|
|
100
|
+
selector: '[flexRender]',
|
|
101
|
+
standalone: true,
|
|
102
|
+
}]
|
|
103
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }], propDecorators: { content: [{
|
|
104
|
+
type: Input,
|
|
105
|
+
args: [{ required: true, alias: 'flexRender' }]
|
|
106
|
+
}], props: [{
|
|
107
|
+
type: Input,
|
|
108
|
+
args: [{ required: true, alias: 'flexRenderProps' }]
|
|
109
|
+
}], injector: [{
|
|
110
|
+
type: Input,
|
|
111
|
+
args: [{ required: false, alias: 'flexRenderInjector' }]
|
|
112
|
+
}] } });
|
|
113
|
+
export class FlexRenderComponent {
|
|
114
|
+
component;
|
|
115
|
+
inputs;
|
|
116
|
+
injector;
|
|
117
|
+
constructor(component, inputs = {}, injector) {
|
|
118
|
+
this.component = component;
|
|
119
|
+
this.inputs = inputs;
|
|
120
|
+
this.injector = injector;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const FlexRenderComponentProps = new InjectionToken('[@tanstack/angular-table] Flex render component context props');
|
|
124
|
+
export function injectFlexRenderContext() {
|
|
125
|
+
return inject(FlexRenderComponentProps);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxleC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUVULGVBQWUsRUFDZixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBRUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFBOztBQWF0QixNQUFNLE9BQU8sbUJBQW1CO0lBaUJwQjtJQUNBO0lBZFYsT0FBTyxHQUlTLFNBQVMsQ0FBQTtJQUd6QixLQUFLLEdBQVcsRUFBWSxDQUFBO0lBRzVCLFFBQVEsR0FBYSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFckMsWUFDVSxnQkFBa0MsRUFDbEMsV0FBNkI7UUFEN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFDcEMsQ0FBQztJQUVKLEdBQUcsR0FBNkQsSUFBSSxDQUFBO0lBRXBFLFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzdCLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtRQUNuQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDM0MsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFrQztRQUN0RCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBQ25DLENBQUM7UUFDRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FDN0MsT0FBTyxFQUNQLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUM3QixDQUFBO1FBQ0gsQ0FBQzthQUFNLElBQUksT0FBTyxZQUFZLG1CQUFtQixFQUFFLENBQUM7WUFDbEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDbkIsT0FBTyxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUTtnQkFDckMsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVE7Z0JBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDZCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hFLElBQUksU0FBUztnQkFDWCxPQUFPLE9BQU8sRUFBRSxDQUFBO1lBQ2xCLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUNyQixtQkFBZ0Q7UUFFaEQsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQW1CLENBQUE7UUFFM0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUVuQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBcUIsQ0FBQztTQUN2RCxDQUFDLENBQUE7UUFFRixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDeEMsTUFBTSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUNqQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDcEUsQ0FBQyxDQUFBO1FBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7WUFDcEUsUUFBUSxFQUFFLGlCQUFpQjtTQUM1QixDQUFDLENBQUE7UUFDRixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDM0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDbkMsT0FBTztZQUNMLElBQUksU0FBUztnQkFDWCxPQUFPLFVBQVUsRUFBRSxDQUFBO1lBQ3JCLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQzt1R0FuSFUsbUJBQW1COzJGQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjsrR0FLQyxPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBUTlDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUluRCxRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTs7QUF5R3pELE1BQU0sT0FBTyxtQkFBbUI7SUFFbkI7SUFDQTtJQUNBO0lBSFgsWUFDVyxTQUF3QixFQUN4QixTQUFZLEVBQU8sRUFDbkIsUUFBbUI7UUFGbkIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVc7SUFDM0IsQ0FBQztDQUNMO0FBRUQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDakQsK0RBQStELENBQ2hFLENBQUE7QUFFRCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFJLHdCQUF3QixDQUFDLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgdHlwZSBEb0NoZWNrLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgdHlwZSBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICB0eXBlIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbnR5cGUgRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+ID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVFByb3BzIH0+XG4gIHwgbnVsbFxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZmxleFJlbmRlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyRGlyZWN0aXZlPFRQcm9wcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVja1xue1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmbGV4UmVuZGVyJyB9KVxuICBjb250ZW50OlxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8ICgocHJvcHM6IFRQcm9wcykgPT4gRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzPilcbiAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2ZsZXhSZW5kZXJQcm9wcycgfSlcbiAgcHJvcHM6IFRQcm9wcyA9IHt9IGFzIFRQcm9wc1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmbGV4UmVuZGVySW5qZWN0b3InIH0pXG4gIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PlxuICApIHt9XG5cbiAgcmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+IHwgRW1iZWRkZWRWaWV3UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGxcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZiA9IHRoaXMucmVuZGVyKClcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5yZWYgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMucmVmLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZikubWFya0ZvckNoZWNrKClcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVmIGluc3RhbmNlb2YgRW1iZWRkZWRWaWV3UmVmKSB7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKVxuICAgIGNvbnN0IHsgY29udGVudCwgcHJvcHMgfSA9IHRoaXNcbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyU3RyaW5nQ29udGVudCgpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29udGVudChjb250ZW50KHByb3BzKSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29udGVudChjb250ZW50OiBGbGV4UmVuZGVyQ29udGVudDxUUHJvcHM+KSB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclN0cmluZ0NvbnRlbnQoKVxuICAgIH1cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZVJlZkNvbnRleHQoKVxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZsZXhSZW5kZXJDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RyaW5nQ29udGVudCgpOiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ251bWJlcidcbiAgICAgICAgPyB0aGlzLmNvbnRlbnRcbiAgICAgICAgOiB0aGlzLmNvbnRlbnQ/Lih0aGlzLnByb3BzKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gY29udGV4dCgpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNvbXBvbmVudChcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgKTogQ29tcG9uZW50UmVmPHVua25vd24+IHtcbiAgICBjb25zdCB7IGNvbXBvbmVudCwgaW5wdXRzLCBpbmplY3RvciB9ID0gZmxleFJlbmRlckNvbXBvbmVudFxuXG4gICAgY29uc3QgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRoaXMucHJvcHMsIHtcbiAgICAgIGdldDogKF8sIGtleSkgPT4gZ2V0Q29udGV4dCgpPy5ba2V5IGFzIGtleW9mIHR5cGVvZiBfXSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3RvciA/PyB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsIHVzZVZhbHVlOiBwcm94eSB9XSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGluamVjdG9yOiBjb21wb25lbnRJbmplY3RvcixcbiAgICB9KVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBpbnB1dHMpIHtcbiAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2U/Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChwcm9wLCBpbnB1dHNbcHJvcF0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRSZWZcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGVtcGxhdGVSZWZDb250ZXh0KCkge1xuICAgIGNvbnN0IGdldENvbnRleHQgPSAoKSA9PiB0aGlzLnByb3BzXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCAkaW1wbGljaXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0KClcbiAgICAgIH0sXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBOb25OdWxsYWJsZTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj4sXG4gICAgcmVhZG9ubHkgaW5wdXRzOiBUID0ge30gYXMgVCxcbiAgICByZWFkb25seSBpbmplY3Rvcj86IEluamVjdG9yXG4gICkge31cbn1cblxuY29uc3QgRmxleFJlbmRlckNvbXBvbmVudFByb3BzID0gbmV3IEluamVjdGlvblRva2VuPE5vbk51bGxhYmxlPHVua25vd24+PihcbiAgJ1tAdGFuc3RhY2svYW5ndWxhci10YWJsZV0gRmxleCByZW5kZXIgY29tcG9uZW50IGNvbnRleHQgcHJvcHMnXG4pXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RGbGV4UmVuZGVyQ29udGV4dDxUIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+KCk6IFQge1xuICByZXR1cm4gaW5qZWN0PFQ+KEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcylcbn1cbiJdfQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { computed, signal } from '@angular/core';
|
|
2
|
+
import { createTable, } from '@tanstack/table-core';
|
|
3
|
+
import { lazyInit } from './lazy-signal-initializer';
|
|
4
|
+
import { proxifyTable } from './proxy';
|
|
5
|
+
export * from '@tanstack/table-core';
|
|
6
|
+
export { FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, } from './flex-render';
|
|
7
|
+
export function createAngularTable(options) {
|
|
8
|
+
return lazyInit(() => {
|
|
9
|
+
const resolvedOptions = {
|
|
10
|
+
state: {},
|
|
11
|
+
onStateChange: () => { },
|
|
12
|
+
renderFallbackValue: null,
|
|
13
|
+
...options(),
|
|
14
|
+
};
|
|
15
|
+
const table = createTable(resolvedOptions);
|
|
16
|
+
// By default, manage table state here using the table's initial state
|
|
17
|
+
const state = signal(table.initialState);
|
|
18
|
+
// Compose table options using computed.
|
|
19
|
+
// This is to allow `tableSignal` to listen and set table option
|
|
20
|
+
const updatedOptions = computed(() => {
|
|
21
|
+
// listen to table state changed
|
|
22
|
+
const tableState = state();
|
|
23
|
+
// listen to input options changed
|
|
24
|
+
const tableOptions = options();
|
|
25
|
+
return {
|
|
26
|
+
...table.options,
|
|
27
|
+
...resolvedOptions,
|
|
28
|
+
...tableOptions,
|
|
29
|
+
state: { ...tableState, ...tableOptions.state },
|
|
30
|
+
onStateChange: updater => {
|
|
31
|
+
const value = updater instanceof Function ? updater(tableState) : updater;
|
|
32
|
+
state.set(value);
|
|
33
|
+
resolvedOptions.onStateChange?.(updater);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
// convert table instance to signal for proxify to listen to any table state and options changes
|
|
38
|
+
const tableSignal = computed(() => {
|
|
39
|
+
table.setOptions(updatedOptions());
|
|
40
|
+
return table;
|
|
41
|
+
}, {
|
|
42
|
+
equal: () => false,
|
|
43
|
+
});
|
|
44
|
+
// proxify Table instance to provide ability for consumer to listen to any table state changes
|
|
45
|
+
return proxifyTable(tableSignal);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUtMLFdBQVcsR0FFWixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXRDLGNBQWMsc0JBQXNCLENBQUE7QUFFcEMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBa0M7SUFFbEMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLEtBQUssRUFBRSxFQUFFO1lBQ1QsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7WUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixHQUFHLE9BQU8sRUFBRTtTQUNiLENBQUE7UUFFRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFMUMsc0VBQXNFO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBYSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFcEQsd0NBQXdDO1FBQ3hDLGdFQUFnRTtRQUNoRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQThCLEdBQUcsRUFBRTtZQUNoRSxnQ0FBZ0M7WUFDaEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUE7WUFDMUIsa0NBQWtDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxDQUFBO1lBQzlCLE9BQU87Z0JBQ0wsR0FBRyxLQUFLLENBQUMsT0FBTztnQkFDaEIsR0FBRyxlQUFlO2dCQUNsQixHQUFHLFlBQVk7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUMvQyxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3ZCLE1BQU0sS0FBSyxHQUNULE9BQU8sWUFBWSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO29CQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNoQixlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzFDLENBQUM7YUFDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixnR0FBZ0c7UUFDaEcsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUMxQixHQUFHLEVBQUU7WUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7WUFDbEMsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLEVBQ0Q7WUFDRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztTQUNuQixDQUNGLENBQUE7UUFFRCw4RkFBOEY7UUFDOUYsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBSb3dEYXRhLFxuICBUYWJsZU9wdGlvbnMsXG4gIFRhYmxlT3B0aW9uc1Jlc29sdmVkLFxuICBUYWJsZVN0YXRlLFxuICBjcmVhdGVUYWJsZSxcbiAgdHlwZSBUYWJsZSxcbn0gZnJvbSAnQHRhbnN0YWNrL3RhYmxlLWNvcmUnXG5pbXBvcnQgeyBsYXp5SW5pdCB9IGZyb20gJy4vbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXInXG5pbXBvcnQgeyBwcm94aWZ5VGFibGUgfSBmcm9tICcuL3Byb3h5J1xuXG5leHBvcnQgKiBmcm9tICdAdGFuc3RhY2svdGFibGUtY29yZSdcblxuZXhwb3J0IHtcbiAgRmxleFJlbmRlckNvbXBvbmVudCxcbiAgRmxleFJlbmRlckRpcmVjdGl2ZSxcbiAgaW5qZWN0RmxleFJlbmRlckNvbnRleHQsXG59IGZyb20gJy4vZmxleC1yZW5kZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbmd1bGFyVGFibGU8VERhdGEgZXh0ZW5kcyBSb3dEYXRhPihcbiAgb3B0aW9uczogKCkgPT4gVGFibGVPcHRpb25zPFREYXRhPlxuKTogVGFibGU8VERhdGE+IHtcbiAgcmV0dXJuIGxhenlJbml0KCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSB7XG4gICAgICBzdGF0ZToge30sXG4gICAgICBvblN0YXRlQ2hhbmdlOiAoKSA9PiB7fSxcbiAgICAgIHJlbmRlckZhbGxiYWNrVmFsdWU6IG51bGwsXG4gICAgICAuLi5vcHRpb25zKCksXG4gICAgfVxuXG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShyZXNvbHZlZE9wdGlvbnMpXG5cbiAgICAvLyBCeSBkZWZhdWx0LCBtYW5hZ2UgdGFibGUgc3RhdGUgaGVyZSB1c2luZyB0aGUgdGFibGUncyBpbml0aWFsIHN0YXRlXG4gICAgY29uc3Qgc3RhdGUgPSBzaWduYWw8VGFibGVTdGF0ZT4odGFibGUuaW5pdGlhbFN0YXRlKVxuXG4gICAgLy8gQ29tcG9zZSB0YWJsZSBvcHRpb25zIHVzaW5nIGNvbXB1dGVkLlxuICAgIC8vIFRoaXMgaXMgdG8gYWxsb3cgYHRhYmxlU2lnbmFsYCB0byBsaXN0ZW4gYW5kIHNldCB0YWJsZSBvcHRpb25cbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IGNvbXB1dGVkPFRhYmxlT3B0aW9uc1Jlc29sdmVkPFREYXRhPj4oKCkgPT4ge1xuICAgICAgLy8gbGlzdGVuIHRvIHRhYmxlIHN0YXRlIGNoYW5nZWRcbiAgICAgIGNvbnN0IHRhYmxlU3RhdGUgPSBzdGF0ZSgpXG4gICAgICAvLyBsaXN0ZW4gdG8gaW5wdXQgb3B0aW9ucyBjaGFuZ2VkXG4gICAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSBvcHRpb25zKClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRhYmxlLm9wdGlvbnMsXG4gICAgICAgIC4uLnJlc29sdmVkT3B0aW9ucyxcbiAgICAgICAgLi4udGFibGVPcHRpb25zLFxuICAgICAgICBzdGF0ZTogeyAuLi50YWJsZVN0YXRlLCAuLi50YWJsZU9wdGlvbnMuc3RhdGUgfSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZTogdXBkYXRlciA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgdXBkYXRlciBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gdXBkYXRlcih0YWJsZVN0YXRlKSA6IHVwZGF0ZXJcbiAgICAgICAgICBzdGF0ZS5zZXQodmFsdWUpXG4gICAgICAgICAgcmVzb2x2ZWRPcHRpb25zLm9uU3RhdGVDaGFuZ2U/Lih1cGRhdGVyKVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBjb252ZXJ0IHRhYmxlIGluc3RhbmNlIHRvIHNpZ25hbCBmb3IgcHJveGlmeSB0byBsaXN0ZW4gdG8gYW55IHRhYmxlIHN0YXRlIGFuZCBvcHRpb25zIGNoYW5nZXNcbiAgICBjb25zdCB0YWJsZVNpZ25hbCA9IGNvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0YWJsZS5zZXRPcHRpb25zKHVwZGF0ZWRPcHRpb25zKCkpXG4gICAgICAgIHJldHVybiB0YWJsZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZXF1YWw6ICgpID0+IGZhbHNlLFxuICAgICAgfVxuICAgIClcblxuICAgIC8vIHByb3hpZnkgVGFibGUgaW5zdGFuY2UgdG8gcHJvdmlkZSBhYmlsaXR5IGZvciBjb25zdW1lciB0byBsaXN0ZW4gdG8gYW55IHRhYmxlIHN0YXRlIGNoYW5nZXNcbiAgICByZXR1cm4gcHJveGlmeVRhYmxlKHRhYmxlU2lnbmFsKVxuICB9KVxufVxuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { untracked } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Implementation from @tanstack/angular-query
|
|
4
|
+
* {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}
|
|
5
|
+
*/
|
|
6
|
+
export function lazyInit(initializer) {
|
|
7
|
+
let object = null;
|
|
8
|
+
const initializeObject = () => {
|
|
9
|
+
if (!object) {
|
|
10
|
+
object = untracked(() => initializer());
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
queueMicrotask(() => initializeObject());
|
|
14
|
+
function table() { }
|
|
15
|
+
return new Proxy(table, {
|
|
16
|
+
apply(target, thisArg, argArray) {
|
|
17
|
+
initializeObject();
|
|
18
|
+
if (typeof object === 'function') {
|
|
19
|
+
return Reflect.apply(object, thisArg, argArray);
|
|
20
|
+
}
|
|
21
|
+
return Reflect.apply(target, thisArg, argArray);
|
|
22
|
+
},
|
|
23
|
+
get(_, prop, receiver) {
|
|
24
|
+
initializeObject();
|
|
25
|
+
return Reflect.get(object, prop, receiver);
|
|
26
|
+
},
|
|
27
|
+
has(_, prop) {
|
|
28
|
+
initializeObject();
|
|
29
|
+
return Reflect.has(object, prop);
|
|
30
|
+
},
|
|
31
|
+
ownKeys() {
|
|
32
|
+
initializeObject();
|
|
33
|
+
return Reflect.ownKeys(object);
|
|
34
|
+
},
|
|
35
|
+
getOwnPropertyDescriptor() {
|
|
36
|
+
return {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFtQixXQUFvQjtJQUM3RCxJQUFJLE1BQU0sR0FBYSxJQUFJLENBQUE7SUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBRXhDLFNBQVMsS0FBSyxLQUFJLENBQUM7SUFFbkIsT0FBTyxJQUFJLEtBQUssQ0FBSSxLQUFVLEVBQUU7UUFDOUIsS0FBSyxDQUFDLE1BQVMsRUFBRSxPQUFZLEVBQUUsUUFBZTtZQUM1QyxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ2pELENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN4RCxDQUFDO1FBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUNuQixnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUk7WUFDVCxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFXLENBQUMsQ0FBQTtRQUNyQyxDQUFDO1FBQ0Qsd0JBQXdCO1lBQ3RCLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUE7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gZnJvbSBAdGFuc3RhY2svYW5ndWxhci1xdWVyeVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9UYW5TdGFjay9xdWVyeS9ibG9iL21haW4vcGFja2FnZXMvYW5ndWxhci1xdWVyeS1leHBlcmltZW50YWwvc3JjL3V0aWwvbGF6eS1pbml0L2xhenktaW5pdC50c31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhenlJbml0PFQgZXh0ZW5kcyBvYmplY3Q+KGluaXRpYWxpemVyOiAoKSA9PiBUKTogVCB7XG4gIGxldCBvYmplY3Q6IFQgfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0IGluaXRpYWxpemVPYmplY3QgPSAoKSA9PiB7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIG9iamVjdCA9IHVudHJhY2tlZCgoKSA9PiBpbml0aWFsaXplcigpKVxuICAgIH1cbiAgfVxuXG4gIHF1ZXVlTWljcm90YXNrKCgpID0+IGluaXRpYWxpemVPYmplY3QoKSlcblxuICBmdW5jdGlvbiB0YWJsZSgpIHt9XG5cbiAgcmV0dXJuIG5ldyBQcm94eTxUPih0YWJsZSBhcyBULCB7XG4gICAgYXBwbHkodGFyZ2V0OiBULCB0aGlzQXJnOiBhbnksIGFyZ0FycmF5OiBhbnlbXSk6IGFueSB7XG4gICAgICBpbml0aWFsaXplT2JqZWN0KClcbiAgICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KG9iamVjdCwgdGhpc0FyZywgYXJnQXJyYXkpXG4gICAgICB9XG4gICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQgYXMgYW55LCB0aGlzQXJnLCBhcmdBcnJheSlcbiAgICB9LFxuICAgIGdldChfLCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgaW5pdGlhbGl6ZU9iamVjdCgpXG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXQob2JqZWN0IGFzIFQsIHByb3AsIHJlY2VpdmVyKVxuICAgIH0sXG4gICAgaGFzKF8sIHByb3ApIHtcbiAgICAgIGluaXRpYWxpemVPYmplY3QoKVxuICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKG9iamVjdCBhcyBULCBwcm9wKVxuICAgIH0sXG4gICAgb3duS2V5cygpIHtcbiAgICAgIGluaXRpYWxpemVPYmplY3QoKVxuICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyhvYmplY3QgYXMgVClcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH1cbiAgICB9LFxuICB9KVxufVxuIl19
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { computed, untracked } from '@angular/core';
|
|
2
|
+
export function proxifyTable(tableSignal) {
|
|
3
|
+
const internalState = tableSignal;
|
|
4
|
+
return new Proxy(internalState, {
|
|
5
|
+
apply() {
|
|
6
|
+
return tableSignal();
|
|
7
|
+
},
|
|
8
|
+
get(target, property) {
|
|
9
|
+
if (target[property]) {
|
|
10
|
+
return target[property];
|
|
11
|
+
}
|
|
12
|
+
const table = untracked(tableSignal);
|
|
13
|
+
/**
|
|
14
|
+
* Attempt to convert all accessors into computed ones,
|
|
15
|
+
* excluding handlers as they do not retain any reactive value
|
|
16
|
+
*/
|
|
17
|
+
if (property.startsWith('get') &&
|
|
18
|
+
(!property.endsWith('Handler') || !property.endsWith('Model'))) {
|
|
19
|
+
const maybeFn = table[property];
|
|
20
|
+
if (typeof maybeFn === 'function') {
|
|
21
|
+
Object.defineProperty(target, property, {
|
|
22
|
+
value: toComputed(tableSignal, maybeFn),
|
|
23
|
+
configurable: true,
|
|
24
|
+
enumerable: true,
|
|
25
|
+
});
|
|
26
|
+
return target[property];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// @ts-expect-error
|
|
30
|
+
return (target[property] = table[property]);
|
|
31
|
+
},
|
|
32
|
+
has(_, prop) {
|
|
33
|
+
return !!untracked(tableSignal)[prop];
|
|
34
|
+
},
|
|
35
|
+
ownKeys() {
|
|
36
|
+
return Reflect.ownKeys(untracked(tableSignal));
|
|
37
|
+
},
|
|
38
|
+
getOwnPropertyDescriptor() {
|
|
39
|
+
return {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Here we'll handle all type of accessors:
|
|
48
|
+
* - 0 argument -> e.g. table.getCanNextPage())
|
|
49
|
+
* - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)
|
|
50
|
+
* - 1 required argument -> e.g. table.getColumn(columnId)
|
|
51
|
+
* - 1+ argument -> e.g. table.getRow(id, searchAll?)
|
|
52
|
+
*
|
|
53
|
+
* Since we are not able to detect automatically the accessors parameters,
|
|
54
|
+
* we'll wrap all accessors into a cached function wrapping a computed
|
|
55
|
+
* that return it's value based on the given parameters
|
|
56
|
+
*/
|
|
57
|
+
function toComputed(signal, fn) {
|
|
58
|
+
const hasArgs = fn.length > 0;
|
|
59
|
+
if (!hasArgs) {
|
|
60
|
+
return computed(() => {
|
|
61
|
+
void signal();
|
|
62
|
+
return fn();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const computedCache = {};
|
|
66
|
+
return (...argsArray) => {
|
|
67
|
+
const serializedArgs = serializeArgs(...argsArray);
|
|
68
|
+
if (computedCache.hasOwnProperty(serializedArgs)) {
|
|
69
|
+
return computedCache[serializedArgs]?.();
|
|
70
|
+
}
|
|
71
|
+
const computedSignal = computed(() => {
|
|
72
|
+
void signal();
|
|
73
|
+
return fn(...argsArray);
|
|
74
|
+
});
|
|
75
|
+
computedCache[serializedArgs] = computedSignal;
|
|
76
|
+
return computedSignal();
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function serializeArgs(...args) {
|
|
80
|
+
return JSON.stringify(args);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLaEUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsV0FBNkI7SUFFN0IsTUFBTSxhQUFhLEdBQUcsV0FBNkIsQ0FBQTtJQUVuRCxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtRQUM5QixLQUFLO1lBQ0gsT0FBTyxXQUFXLEVBQUUsQ0FBQTtRQUN0QixDQUFDO1FBQ0QsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUF3QjtZQUNsQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6QixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3BDOzs7ZUFHRztZQUNILElBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUM5RCxDQUFDO2dCQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQXFCLENBQUE7Z0JBQ25ELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ2xDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTt3QkFDdEMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDO3dCQUN2QyxZQUFZLEVBQUUsSUFBSTt3QkFDbEIsVUFBVSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQTtvQkFDRixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDekIsQ0FBQztZQUNILENBQUM7WUFDRCxtQkFBbUI7WUFDbkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFvQjtZQUN6QixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU87WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDaEQsQ0FBQztRQUNELHdCQUF3QjtZQUN0QixPQUFPO2dCQUNMLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFBO1FBQ0gsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxVQUFVLENBQUksTUFBd0IsRUFBRSxFQUFZO0lBQzNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQixLQUFLLE1BQU0sRUFBRSxDQUFBO1lBQ2IsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFvQyxFQUFFLENBQUE7SUFFekQsT0FBTyxDQUFDLEdBQUcsU0FBZ0IsRUFBRSxFQUFFO1FBQzdCLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFBO1FBQ2xELElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtRQUMxQyxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxLQUFLLE1BQU0sRUFBRSxDQUFBO1lBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtRQUVGLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxjQUFjLENBQUE7UUFFOUMsT0FBTyxjQUFjLEVBQUUsQ0FBQTtJQUN6QixDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsR0FBRyxJQUFXO0lBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIHR5cGUgU2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgdHlwZSBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay90YWJsZS1jb3JlJ1xuXG50eXBlIFRhYmxlU2lnbmFsPFQ+ID0gVGFibGU8VD4gJiBTaWduYWw8VGFibGU8VD4+XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm94aWZ5VGFibGU8VD4oXG4gIHRhYmxlU2lnbmFsOiBTaWduYWw8VGFibGU8VD4+XG4pOiBUYWJsZTxUPiAmIFNpZ25hbDxUYWJsZTxUPj4ge1xuICBjb25zdCBpbnRlcm5hbFN0YXRlID0gdGFibGVTaWduYWwgYXMgVGFibGVTaWduYWw8VD5cblxuICByZXR1cm4gbmV3IFByb3h5KGludGVybmFsU3RhdGUsIHtcbiAgICBhcHBseSgpIHtcbiAgICAgIHJldHVybiB0YWJsZVNpZ25hbCgpXG4gICAgfSxcbiAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eToga2V5b2YgVGFibGU8VD4pOiBhbnkge1xuICAgICAgaWYgKHRhcmdldFtwcm9wZXJ0eV0pIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhYmxlID0gdW50cmFja2VkKHRhYmxlU2lnbmFsKVxuICAgICAgLyoqXG4gICAgICAgKiBBdHRlbXB0IHRvIGNvbnZlcnQgYWxsIGFjY2Vzc29ycyBpbnRvIGNvbXB1dGVkIG9uZXMsXG4gICAgICAgKiBleGNsdWRpbmcgaGFuZGxlcnMgYXMgdGhleSBkbyBub3QgcmV0YWluIGFueSByZWFjdGl2ZSB2YWx1ZVxuICAgICAgICovXG4gICAgICBpZiAoXG4gICAgICAgIHByb3BlcnR5LnN0YXJ0c1dpdGgoJ2dldCcpICYmXG4gICAgICAgICghcHJvcGVydHkuZW5kc1dpdGgoJ0hhbmRsZXInKSB8fCAhcHJvcGVydHkuZW5kc1dpdGgoJ01vZGVsJykpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbWF5YmVGbiA9IHRhYmxlW3Byb3BlcnR5XSBhcyBGdW5jdGlvbiB8IG5ldmVyXG4gICAgICAgIGlmICh0eXBlb2YgbWF5YmVGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5LCB7XG4gICAgICAgICAgICB2YWx1ZTogdG9Db21wdXRlZCh0YWJsZVNpZ25hbCwgbWF5YmVGbiksXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuICh0YXJnZXRbcHJvcGVydHldID0gdGFibGVbcHJvcGVydHldKVxuICAgIH0sXG4gICAgaGFzKF8sIHByb3A6IGtleW9mIFRhYmxlPFQ+KSB7XG4gICAgICByZXR1cm4gISF1bnRyYWNrZWQodGFibGVTaWduYWwpW3Byb3BdXG4gICAgfSxcbiAgICBvd25LZXlzKCkge1xuICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh1bnRyYWNrZWQodGFibGVTaWduYWwpKVxuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG5cbi8qKlxuICogSGVyZSB3ZSdsbCBoYW5kbGUgYWxsIHR5cGUgb2YgYWNjZXNzb3JzOlxuICogLSAwIGFyZ3VtZW50IC0+IGUuZy4gdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKSlcbiAqIC0gMH4xIGFyZ3VtZW50cyAtPiBlLmcuIHRhYmxlLmdldElzU29tZVJvd3NQaW5uZWQocG9zaXRpb24/KVxuICogLSAxIHJlcXVpcmVkIGFyZ3VtZW50IC0+IGUuZy4gdGFibGUuZ2V0Q29sdW1uKGNvbHVtbklkKVxuICogLSAxKyBhcmd1bWVudCAtPiBlLmcuIHRhYmxlLmdldFJvdyhpZCwgc2VhcmNoQWxsPylcbiAqXG4gKiBTaW5jZSB3ZSBhcmUgbm90IGFibGUgdG8gZGV0ZWN0IGF1dG9tYXRpY2FsbHkgdGhlIGFjY2Vzc29ycyBwYXJhbWV0ZXJzLFxuICogd2UnbGwgd3JhcCBhbGwgYWNjZXNzb3JzIGludG8gYSBjYWNoZWQgZnVuY3Rpb24gd3JhcHBpbmcgYSBjb21wdXRlZFxuICogdGhhdCByZXR1cm4gaXQncyB2YWx1ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVyc1xuICovXG5mdW5jdGlvbiB0b0NvbXB1dGVkPFQ+KHNpZ25hbDogU2lnbmFsPFRhYmxlPFQ+PiwgZm46IEZ1bmN0aW9uKSB7XG4gIGNvbnN0IGhhc0FyZ3MgPSBmbi5sZW5ndGggPiAwXG4gIGlmICghaGFzQXJncykge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICB2b2lkIHNpZ25hbCgpXG4gICAgICByZXR1cm4gZm4oKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb21wdXRlZENhY2hlOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+ID0ge31cblxuICByZXR1cm4gKC4uLmFyZ3NBcnJheTogYW55W10pID0+IHtcbiAgICBjb25zdCBzZXJpYWxpemVkQXJncyA9IHNlcmlhbGl6ZUFyZ3MoLi4uYXJnc0FycmF5KVxuICAgIGlmIChjb21wdXRlZENhY2hlLmhhc093blByb3BlcnR5KHNlcmlhbGl6ZWRBcmdzKSkge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkQ2FjaGVbc2VyaWFsaXplZEFyZ3NdPy4oKVxuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHZvaWQgc2lnbmFsKClcbiAgICAgIHJldHVybiBmbiguLi5hcmdzQXJyYXkpXG4gICAgfSlcblxuICAgIGNvbXB1dGVkQ2FjaGVbc2VyaWFsaXplZEFyZ3NdID0gY29tcHV0ZWRTaWduYWxcblxuICAgIHJldHVybiBjb21wdXRlZFNpZ25hbCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplQXJncyguLi5hcmdzOiBhbnlbXSkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJncylcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stYW5ndWxhci10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YW5zdGFjay1hbmd1bGFyLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -217,10 +217,10 @@ class FlexRenderDirective {
|
|
|
217
217
|
},
|
|
218
218
|
};
|
|
219
219
|
}
|
|
220
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
221
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.
|
|
220
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FlexRenderDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
221
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.8", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, ngImport: i0 });
|
|
222
222
|
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
224
224
|
type: Directive,
|
|
225
225
|
args: [{
|
|
226
226
|
selector: '[flexRender]',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-angular-table.mjs","sources":["../../src/lazy-signal-initializer.ts","../../src/proxy.ts","../../src/flex-render.ts","../../src/index.ts","../../src/tanstack-angular-table.ts"],"sourcesContent":["import { untracked } from '@angular/core'\n\n/**\n * Implementation from @tanstack/angular-query\n * {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}\n */\nexport function lazyInit<T extends object>(initializer: () => T): T {\n let object: T | null = null\n\n const initializeObject = () => {\n if (!object) {\n object = untracked(() => initializer())\n }\n }\n\n queueMicrotask(() => initializeObject())\n\n function table() {}\n\n return new Proxy<T>(table as T, {\n apply(target: T, thisArg: any, argArray: any[]): any {\n initializeObject()\n if (typeof object === 'function') {\n return Reflect.apply(object, thisArg, argArray)\n }\n return Reflect.apply(target as any, thisArg, argArray)\n },\n get(_, prop, receiver) {\n initializeObject()\n return Reflect.get(object as T, prop, receiver)\n },\n has(_, prop) {\n initializeObject()\n return Reflect.has(object as T, prop)\n },\n ownKeys() {\n initializeObject()\n return Reflect.ownKeys(object as T)\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n","import { computed, type Signal, untracked } from '@angular/core'\nimport { type Table } from '@tanstack/table-core'\n\ntype TableSignal<T> = Table<T> & Signal<Table<T>>\n\nexport function proxifyTable<T>(\n tableSignal: Signal<Table<T>>\n): Table<T> & Signal<Table<T>> {\n const internalState = tableSignal as TableSignal<T>\n\n return new Proxy(internalState, {\n apply() {\n return tableSignal()\n },\n get(target, property: keyof Table<T>): any {\n if (target[property]) {\n return target[property]\n }\n const table = untracked(tableSignal)\n /**\n * Attempt to convert all accessors into computed ones,\n * excluding handlers as they do not retain any reactive value\n */\n if (\n property.startsWith('get') &&\n (!property.endsWith('Handler') || !property.endsWith('Model'))\n ) {\n const maybeFn = table[property] as Function | never\n if (typeof maybeFn === 'function') {\n Object.defineProperty(target, property, {\n value: toComputed(tableSignal, maybeFn),\n configurable: true,\n enumerable: true,\n })\n return target[property]\n }\n }\n // @ts-expect-error\n return (target[property] = table[property])\n },\n has(_, prop: keyof Table<T>) {\n return !!untracked(tableSignal)[prop]\n },\n ownKeys() {\n return Reflect.ownKeys(untracked(tableSignal))\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n\n/**\n * Here we'll handle all type of accessors:\n * - 0 argument -> e.g. table.getCanNextPage())\n * - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)\n * - 1 required argument -> e.g. table.getColumn(columnId)\n * - 1+ argument -> e.g. table.getRow(id, searchAll?)\n *\n * Since we are not able to detect automatically the accessors parameters,\n * we'll wrap all accessors into a cached function wrapping a computed\n * that return it's value based on the given parameters\n */\nfunction toComputed<T>(signal: Signal<Table<T>>, fn: Function) {\n const hasArgs = fn.length > 0\n if (!hasArgs) {\n return computed(() => {\n void signal()\n return fn()\n })\n }\n\n const computedCache: Record<string, Signal<unknown>> = {}\n\n return (...argsArray: any[]) => {\n const serializedArgs = serializeArgs(...argsArray)\n if (computedCache.hasOwnProperty(serializedArgs)) {\n return computedCache[serializedArgs]?.()\n }\n const computedSignal = computed(() => {\n void signal()\n return fn(...argsArray)\n })\n\n computedCache[serializedArgs] = computedSignal\n\n return computedSignal()\n }\n}\n\nfunction serializeArgs(...args: any[]) {\n return JSON.stringify(args)\n}\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive,\n type DoCheck,\n EmbeddedViewRef,\n inject,\n InjectionToken,\n Injector,\n Input,\n type OnInit,\n TemplateRef,\n type Type,\n ViewContainerRef,\n} from '@angular/core'\n\ntype FlexRenderContent<TProps extends NonNullable<unknown>> =\n | string\n | number\n | FlexRenderComponent<TProps>\n | TemplateRef<{ $implicit: TProps }>\n | null\n\n@Directive({\n selector: '[flexRender]',\n standalone: true,\n})\nexport class FlexRenderDirective<TProps extends NonNullable<unknown>>\n implements OnInit, DoCheck\n{\n @Input({ required: true, alias: 'flexRender' })\n content:\n | number\n | string\n | ((props: TProps) => FlexRenderContent<TProps>)\n | undefined = undefined\n\n @Input({ required: true, alias: 'flexRenderProps' })\n props: TProps = {} as TProps\n\n @Input({ required: false, alias: 'flexRenderInjector' })\n injector: Injector = inject(Injector)\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private templateRef: TemplateRef<any>\n ) {}\n\n ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null = null\n\n ngOnInit(): void {\n this.ref = this.render()\n }\n\n ngDoCheck() {\n if (this.ref instanceof ComponentRef) {\n this.ref.injector.get(ChangeDetectorRef).markForCheck()\n } else if (this.ref instanceof EmbeddedViewRef) {\n this.ref.markForCheck()\n }\n }\n\n render() {\n this.viewContainerRef.clear()\n const { content, props } = this\n if (!this.content) {\n return null\n }\n\n if (typeof content === 'string' || typeof content === 'number') {\n return this.renderStringContent()\n }\n if (typeof content === 'function') {\n return this.renderContent(content(props))\n }\n return null\n }\n\n private renderContent(content: FlexRenderContent<TProps>) {\n if (typeof content === 'string' || typeof content === 'number') {\n return this.renderStringContent()\n }\n if (content instanceof TemplateRef) {\n return this.viewContainerRef.createEmbeddedView(\n content,\n this.getTemplateRefContext()\n )\n } else if (content instanceof FlexRenderComponent) {\n return this.renderComponent(content)\n } else {\n return null\n }\n }\n\n private renderStringContent(): EmbeddedViewRef<unknown> {\n const context = () => {\n return typeof this.content === 'string' ||\n typeof this.content === 'number'\n ? this.content\n : this.content?.(this.props)\n }\n return this.viewContainerRef.createEmbeddedView(this.templateRef, {\n get $implicit() {\n return context()\n },\n })\n }\n\n private renderComponent(\n flexRenderComponent: FlexRenderComponent<TProps>\n ): ComponentRef<unknown> {\n const { component, inputs, injector } = flexRenderComponent\n\n const getContext = () => this.props\n\n const proxy = new Proxy(this.props, {\n get: (_, key) => getContext()?.[key as keyof typeof _],\n })\n\n const componentInjector = Injector.create({\n parent: injector ?? this.injector,\n providers: [{ provide: FlexRenderComponentProps, useValue: proxy }],\n })\n\n const componentRef = this.viewContainerRef.createComponent(component, {\n injector: componentInjector,\n })\n for (const prop in inputs) {\n if (componentRef.instance?.hasOwnProperty(prop)) {\n componentRef.setInput(prop, inputs[prop])\n }\n }\n return componentRef\n }\n\n private getTemplateRefContext() {\n const getContext = () => this.props\n return {\n get $implicit() {\n return getContext()\n },\n }\n }\n}\n\nexport class FlexRenderComponent<T extends NonNullable<unknown>> {\n constructor(\n readonly component: Type<unknown>,\n readonly inputs: T = {} as T,\n readonly injector?: Injector\n ) {}\n}\n\nconst FlexRenderComponentProps = new InjectionToken<NonNullable<unknown>>(\n '[@tanstack/angular-table] Flex render component context props'\n)\n\nexport function injectFlexRenderContext<T extends NonNullable<unknown>>(): T {\n return inject<T>(FlexRenderComponentProps)\n}\n","import { computed, signal } from '@angular/core'\nimport {\n RowData,\n TableOptions,\n TableOptionsResolved,\n TableState,\n createTable,\n type Table,\n} from '@tanstack/table-core'\nimport { lazyInit } from './lazy-signal-initializer'\nimport { proxifyTable } from './proxy'\n\nexport * from '@tanstack/table-core'\n\nexport {\n FlexRenderComponent,\n FlexRenderDirective,\n injectFlexRenderContext,\n} from './flex-render'\n\nexport function createAngularTable<TData extends RowData>(\n options: () => TableOptions<TData>\n): Table<TData> {\n return lazyInit(() => {\n const resolvedOptions = {\n state: {},\n onStateChange: () => {},\n renderFallbackValue: null,\n ...options(),\n }\n\n const table = createTable(resolvedOptions)\n\n // By default, manage table state here using the table's initial state\n const state = signal<TableState>(table.initialState)\n\n // Compose table options using computed.\n // This is to allow `tableSignal` to listen and set table option\n const updatedOptions = computed<TableOptionsResolved<TData>>(() => {\n // listen to table state changed\n const tableState = state()\n // listen to input options changed\n const tableOptions = options()\n return {\n ...table.options,\n ...resolvedOptions,\n ...tableOptions,\n state: { ...tableState, ...tableOptions.state },\n onStateChange: updater => {\n const value =\n updater instanceof Function ? updater(tableState) : updater\n state.set(value)\n resolvedOptions.onStateChange?.(updater)\n },\n }\n })\n\n // convert table instance to signal for proxify to listen to any table state and options changes\n const tableSignal = computed(\n () => {\n table.setOptions(updatedOptions())\n return table\n },\n {\n equal: () => false,\n }\n )\n\n // proxify Table instance to provide ability for consumer to listen to any table state changes\n return proxifyTable(tableSignal)\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/angular-table",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0-alpha.0",
|
|
4
4
|
"description": "Headless UI for building powerful tables & datagrids for Angular.",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,14 +21,14 @@
|
|
|
21
21
|
"datagrid"
|
|
22
22
|
],
|
|
23
23
|
"type": "module",
|
|
24
|
-
"module": "
|
|
25
|
-
"types": "
|
|
24
|
+
"module": "dist/esm2022/index.mjs",
|
|
25
|
+
"types": "dist/index.d.ts",
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|
|
28
|
-
"types": "./
|
|
29
|
-
"esm": "./
|
|
30
|
-
"esm2022": "./
|
|
31
|
-
"default": "./
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"esm": "./dist/esm2022/index.mjs",
|
|
30
|
+
"esm2022": "./dist/esm2022/index.mjs",
|
|
31
|
+
"default": "./dist/fesm2022/tanstack-angular-table.mjs"
|
|
32
32
|
},
|
|
33
33
|
"./package.json": {
|
|
34
34
|
"default": "./package.json"
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"node": ">=12"
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
|
-
"
|
|
41
|
+
"dist",
|
|
42
42
|
"src"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"tslib": "^2.6.2",
|
|
46
|
-
"@tanstack/table-core": "
|
|
46
|
+
"@tanstack/table-core": "9.0.0-alpha.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@angular/core": "^17.3.1",
|
|
@@ -53,10 +53,5 @@
|
|
|
53
53
|
"@angular/core": ">=17"
|
|
54
54
|
},
|
|
55
55
|
"sideEffects": false,
|
|
56
|
-
"scripts": {
|
|
57
|
-
"clean": "rimraf ./build",
|
|
58
|
-
"test:types": "tsc --noEmit",
|
|
59
|
-
"build": "pnpm ng-packagr -p ng-package.json && rimraf ./build/lib/package.json",
|
|
60
|
-
"build:types": "tsc --emitDeclarationOnly"
|
|
61
|
-
}
|
|
56
|
+
"scripts": {}
|
|
62
57
|
}
|
package/build/lib/.npmignore
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ComponentRef, Directive, EmbeddedViewRef, inject, InjectionToken, Injector, Input, TemplateRef, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class FlexRenderDirective {
|
|
4
|
-
viewContainerRef;
|
|
5
|
-
templateRef;
|
|
6
|
-
content = undefined;
|
|
7
|
-
props = {};
|
|
8
|
-
injector = inject(Injector);
|
|
9
|
-
constructor(viewContainerRef, templateRef) {
|
|
10
|
-
this.viewContainerRef = viewContainerRef;
|
|
11
|
-
this.templateRef = templateRef;
|
|
12
|
-
}
|
|
13
|
-
ref = null;
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
this.ref = this.render();
|
|
16
|
-
}
|
|
17
|
-
ngDoCheck() {
|
|
18
|
-
if (this.ref instanceof ComponentRef) {
|
|
19
|
-
this.ref.injector.get(ChangeDetectorRef).markForCheck();
|
|
20
|
-
}
|
|
21
|
-
else if (this.ref instanceof EmbeddedViewRef) {
|
|
22
|
-
this.ref.markForCheck();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
render() {
|
|
26
|
-
this.viewContainerRef.clear();
|
|
27
|
-
const { content, props } = this;
|
|
28
|
-
if (!this.content) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
if (typeof content === 'string' || typeof content === 'number') {
|
|
32
|
-
return this.renderStringContent();
|
|
33
|
-
}
|
|
34
|
-
if (typeof content === 'function') {
|
|
35
|
-
return this.renderContent(content(props));
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
renderContent(content) {
|
|
40
|
-
if (typeof content === 'string' || typeof content === 'number') {
|
|
41
|
-
return this.renderStringContent();
|
|
42
|
-
}
|
|
43
|
-
if (content instanceof TemplateRef) {
|
|
44
|
-
return this.viewContainerRef.createEmbeddedView(content, this.getTemplateRefContext());
|
|
45
|
-
}
|
|
46
|
-
else if (content instanceof FlexRenderComponent) {
|
|
47
|
-
return this.renderComponent(content);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
renderStringContent() {
|
|
54
|
-
const context = () => {
|
|
55
|
-
return typeof this.content === 'string' ||
|
|
56
|
-
typeof this.content === 'number'
|
|
57
|
-
? this.content
|
|
58
|
-
: this.content?.(this.props);
|
|
59
|
-
};
|
|
60
|
-
return this.viewContainerRef.createEmbeddedView(this.templateRef, {
|
|
61
|
-
get $implicit() {
|
|
62
|
-
return context();
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
renderComponent(flexRenderComponent) {
|
|
67
|
-
const { component, inputs, injector } = flexRenderComponent;
|
|
68
|
-
const getContext = () => this.props;
|
|
69
|
-
const proxy = new Proxy(this.props, {
|
|
70
|
-
get: (_, key) => getContext()?.[key],
|
|
71
|
-
});
|
|
72
|
-
const componentInjector = Injector.create({
|
|
73
|
-
parent: injector ?? this.injector,
|
|
74
|
-
providers: [{ provide: FlexRenderComponentProps, useValue: proxy }],
|
|
75
|
-
});
|
|
76
|
-
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
77
|
-
injector: componentInjector,
|
|
78
|
-
});
|
|
79
|
-
for (const prop in inputs) {
|
|
80
|
-
if (componentRef.instance?.hasOwnProperty(prop)) {
|
|
81
|
-
componentRef.setInput(prop, inputs[prop]);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return componentRef;
|
|
85
|
-
}
|
|
86
|
-
getTemplateRefContext() {
|
|
87
|
-
const getContext = () => this.props;
|
|
88
|
-
return {
|
|
89
|
-
get $implicit() {
|
|
90
|
-
return getContext();
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FlexRenderDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
95
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.6", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, ngImport: i0 });
|
|
96
|
-
}
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
98
|
-
type: Directive,
|
|
99
|
-
args: [{
|
|
100
|
-
selector: '[flexRender]',
|
|
101
|
-
standalone: true,
|
|
102
|
-
}]
|
|
103
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }], propDecorators: { content: [{
|
|
104
|
-
type: Input,
|
|
105
|
-
args: [{ required: true, alias: 'flexRender' }]
|
|
106
|
-
}], props: [{
|
|
107
|
-
type: Input,
|
|
108
|
-
args: [{ required: true, alias: 'flexRenderProps' }]
|
|
109
|
-
}], injector: [{
|
|
110
|
-
type: Input,
|
|
111
|
-
args: [{ required: false, alias: 'flexRenderInjector' }]
|
|
112
|
-
}] } });
|
|
113
|
-
export class FlexRenderComponent {
|
|
114
|
-
component;
|
|
115
|
-
inputs;
|
|
116
|
-
injector;
|
|
117
|
-
constructor(component, inputs = {}, injector) {
|
|
118
|
-
this.component = component;
|
|
119
|
-
this.inputs = inputs;
|
|
120
|
-
this.injector = injector;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const FlexRenderComponentProps = new InjectionToken('[@tanstack/angular-table] Flex render component context props');
|
|
124
|
-
export function injectFlexRenderContext() {
|
|
125
|
-
return inject(FlexRenderComponentProps);
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmxleC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUVULGVBQWUsRUFDZixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBRUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFBOztBQWF0QixNQUFNLE9BQU8sbUJBQW1CO0lBaUJwQjtJQUNBO0lBZFYsT0FBTyxHQUlTLFNBQVMsQ0FBQTtJQUd6QixLQUFLLEdBQVcsRUFBWSxDQUFBO0lBRzVCLFFBQVEsR0FBYSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFckMsWUFDVSxnQkFBa0MsRUFDbEMsV0FBNkI7UUFEN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFDcEMsQ0FBQztJQUVKLEdBQUcsR0FBNkQsSUFBSSxDQUFBO0lBRXBFLFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzdCLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FB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QixDQUFDLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgdHlwZSBEb0NoZWNrLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgdHlwZSBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICB0eXBlIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbnR5cGUgRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+ID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVFByb3BzIH0+XG4gIHwgbnVsbFxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZmxleFJlbmRlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyRGlyZWN0aXZlPFRQcm9wcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVja1xue1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmbGV4UmVuZGVyJyB9KVxuICBjb250ZW50OlxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8ICgocHJvcHM6IFRQcm9wcykgPT4gRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzPilcbiAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2ZsZXhSZW5kZXJQcm9wcycgfSlcbiAgcHJvcHM6IFRQcm9wcyA9IHt9IGFzIFRQcm9wc1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmbGV4UmVuZGVySW5qZWN0b3InIH0pXG4gIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PlxuICApIHt9XG5cbiAgcmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+IHwgRW1iZWRkZWRWaWV3UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGxcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZiA9IHRoaXMucmVuZGVyKClcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5yZWYgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMucmVmLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZikubWFya0ZvckNoZWNrKClcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVmIGluc3RhbmNlb2YgRW1iZWRkZWRWaWV3UmVmKSB7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKVxuICAgIGNvbnN0IHsgY29udGVudCwgcHJvcHMgfSA9IHRoaXNcbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyU3RyaW5nQ29udGVudCgpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29udGVudChjb250ZW50KHByb3BzKSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29udGVudChjb250ZW50OiBGbGV4UmVuZGVyQ29udGVudDxUUHJvcHM+KSB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclN0cmluZ0NvbnRlbnQoKVxuICAgIH1cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZVJlZkNvbnRleHQoKVxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZsZXhSZW5kZXJDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RyaW5nQ29udGVudCgpOiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ251bWJlcidcbiAgICAgICAgPyB0aGlzLmNvbnRlbnRcbiAgICAgICAgOiB0aGlzLmNvbnRlbnQ/Lih0aGlzLnByb3BzKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gY29udGV4dCgpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNvbXBvbmVudChcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgKTogQ29tcG9uZW50UmVmPHVua25vd24+IHtcbiAgICBjb25zdCB7IGNvbXBvbmVudCwgaW5wdXRzLCBpbmplY3RvciB9ID0gZmxleFJlbmRlckNvbXBvbmVudFxuXG4gICAgY29uc3QgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRoaXMucHJvcHMsIHtcbiAgICAgIGdldDogKF8sIGtleSkgPT4gZ2V0Q29udGV4dCgpPy5ba2V5IGFzIGtleW9mIHR5cGVvZiBfXSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3RvciA/PyB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsIHVzZVZhbHVlOiBwcm94eSB9XSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGluamVjdG9yOiBjb21wb25lbnRJbmplY3RvcixcbiAgICB9KVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBpbnB1dHMpIHtcbiAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2U/Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChwcm9wLCBpbnB1dHNbcHJvcF0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRSZWZcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGVtcGxhdGVSZWZDb250ZXh0KCkge1xuICAgIGNvbnN0IGdldENvbnRleHQgPSAoKSA9PiB0aGlzLnByb3BzXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCAkaW1wbGljaXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0KClcbiAgICAgIH0sXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBOb25OdWxsYWJsZTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj4sXG4gICAgcmVhZG9ubHkgaW5wdXRzOiBUID0ge30gYXMgVCxcbiAgICByZWFkb25seSBpbmplY3Rvcj86IEluamVjdG9yXG4gICkge31cbn1cblxuY29uc3QgRmxleFJlbmRlckNvbXBvbmVudFByb3BzID0gbmV3IEluamVjdGlvblRva2VuPE5vbk51bGxhYmxlPHVua25vd24+PihcbiAgJ1tAdGFuc3RhY2svYW5ndWxhci10YWJsZV0gRmxleCByZW5kZXIgY29tcG9uZW50IGNvbnRleHQgcHJvcHMnXG4pXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RGbGV4UmVuZGVyQ29udGV4dDxUIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+KCk6IFQge1xuICByZXR1cm4gaW5qZWN0PFQ+KEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcylcbn1cbiJdfQ==
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { computed, signal } from '@angular/core';
|
|
2
|
-
import { createTable, } from '@tanstack/table-core';
|
|
3
|
-
import { lazyInit } from './lazy-signal-initializer';
|
|
4
|
-
import { proxifyTable } from './proxy';
|
|
5
|
-
export * from '@tanstack/table-core';
|
|
6
|
-
export { FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, } from './flex-render';
|
|
7
|
-
export function createAngularTable(options) {
|
|
8
|
-
return lazyInit(() => {
|
|
9
|
-
const resolvedOptions = {
|
|
10
|
-
state: {},
|
|
11
|
-
onStateChange: () => { },
|
|
12
|
-
renderFallbackValue: null,
|
|
13
|
-
...options(),
|
|
14
|
-
};
|
|
15
|
-
const table = createTable(resolvedOptions);
|
|
16
|
-
// By default, manage table state here using the table's initial state
|
|
17
|
-
const state = signal(table.initialState);
|
|
18
|
-
// Compose table options using computed.
|
|
19
|
-
// This is to allow `tableSignal` to listen and set table option
|
|
20
|
-
const updatedOptions = computed(() => {
|
|
21
|
-
// listen to table state changed
|
|
22
|
-
const tableState = state();
|
|
23
|
-
// listen to input options changed
|
|
24
|
-
const tableOptions = options();
|
|
25
|
-
return {
|
|
26
|
-
...table.options,
|
|
27
|
-
...resolvedOptions,
|
|
28
|
-
...tableOptions,
|
|
29
|
-
state: { ...tableState, ...tableOptions.state },
|
|
30
|
-
onStateChange: updater => {
|
|
31
|
-
const value = updater instanceof Function ? updater(tableState) : updater;
|
|
32
|
-
state.set(value);
|
|
33
|
-
resolvedOptions.onStateChange?.(updater);
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
// convert table instance to signal for proxify to listen to any table state and options changes
|
|
38
|
-
const tableSignal = computed(() => {
|
|
39
|
-
table.setOptions(updatedOptions());
|
|
40
|
-
return table;
|
|
41
|
-
}, {
|
|
42
|
-
equal: () => false,
|
|
43
|
-
});
|
|
44
|
-
// proxify Table instance to provide ability for consumer to listen to any table state changes
|
|
45
|
-
return proxifyTable(tableSignal);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEQsT0FBTyxFQUtMLFdBQVcsR0FFWixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXRDLGNBQWMsc0JBQXNCLENBQUE7QUFFcEMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBa0M7SUFFbEMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLEtBQUssRUFBRSxFQUFFO1lBQ1QsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7WUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixHQUFHLE9BQU8sRUFBRTtTQUNiLENBQUE7UUFFRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFMUMsc0VBQXNFO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBYSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFcEQsd0NBQXdDO1FBQ3hDLGdFQUFnRTtRQUNoRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQThCLEdBQUcsRUFBRTtZQUNoRSxnQ0FBZ0M7WUFDaEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUE7WUFDMUIsa0NBQWtDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxDQUFBO1lBQzlCLE9BQU87Z0JBQ0wsR0FBRyxLQUFLLENBQUMsT0FBTztnQkFDaEIsR0FBRyxlQUFlO2dCQUNsQixHQUFHLFlBQVk7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUMvQyxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3ZCLE1BQU0sS0FBSyxHQUNULE9BQU8sWUFBWSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO29CQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNoQixlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzFDLENBQUM7YUFDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixnR0FBZ0c7UUFDaEcsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUMxQixHQUFHLEVBQUU7WUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7WUFDbEMsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLEVBQ0Q7WUFDRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztTQUNuQixDQUNGLENBQUE7UUFFRCw4RkFBOEY7UUFDOUYsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBSb3dEYXRhLFxuICBUYWJsZU9wdGlvbnMsXG4gIFRhYmxlT3B0aW9uc1Jlc29sdmVkLFxuICBUYWJsZVN0YXRlLFxuICBjcmVhdGVUYWJsZSxcbiAgdHlwZSBUYWJsZSxcbn0gZnJvbSAnQHRhbnN0YWNrL3RhYmxlLWNvcmUnXG5pbXBvcnQgeyBsYXp5SW5pdCB9IGZyb20gJy4vbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXInXG5pbXBvcnQgeyBwcm94aWZ5VGFibGUgfSBmcm9tICcuL3Byb3h5J1xuXG5leHBvcnQgKiBmcm9tICdAdGFuc3RhY2svdGFibGUtY29yZSdcblxuZXhwb3J0IHtcbiAgRmxleFJlbmRlckNvbXBvbmVudCxcbiAgRmxleFJlbmRlckRpcmVjdGl2ZSxcbiAgaW5qZWN0RmxleFJlbmRlckNvbnRleHQsXG59IGZyb20gJy4vZmxleC1yZW5kZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbmd1bGFyVGFibGU8VERhdGEgZXh0ZW5kcyBSb3dEYXRhPihcbiAgb3B0aW9uczogKCkgPT4gVGFibGVPcHRpb25zPFREYXRhPlxuKTogVGFibGU8VERhdGE+IHtcbiAgcmV0dXJuIGxhenlJbml0KCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSB7XG4gICAgICBzdGF0ZToge30sXG4gICAgICBvblN0YXRlQ2hhbmdlOiAoKSA9PiB7fSxcbiAgICAgIHJlbmRlckZhbGxiYWNrVmFsdWU6IG51bGwsXG4gICAgICAuLi5vcHRpb25zKCksXG4gICAgfVxuXG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShyZXNvbHZlZE9wdGlvbnMpXG5cbiAgICAvLyBCeSBkZWZhdWx0LCBtYW5hZ2UgdGFibGUgc3RhdGUgaGVyZSB1c2luZyB0aGUgdGFibGUncyBpbml0aWFsIHN0YXRlXG4gICAgY29uc3Qgc3RhdGUgPSBzaWduYWw8VGFibGVTdGF0ZT4odGFibGUuaW5pdGlhbFN0YXRlKVxuXG4gICAgLy8gQ29tcG9zZSB0YWJsZSBvcHRpb25zIHVzaW5nIGNvbXB1dGVkLlxuICAgIC8vIFRoaXMgaXMgdG8gYWxsb3cgYHRhYmxlU2lnbmFsYCB0byBsaXN0ZW4gYW5kIHNldCB0YWJsZSBvcHRpb25cbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IGNvbXB1dGVkPFRhYmxlT3B0aW9uc1Jlc29sdmVkPFREYXRhPj4oKCkgPT4ge1xuICAgICAgLy8gbGlzdGVuIHRvIHRhYmxlIHN0YXRlIGNoYW5nZWRcbiAgICAgIGNvbnN0IHRhYmxlU3RhdGUgPSBzdGF0ZSgpXG4gICAgICAvLyBsaXN0ZW4gdG8gaW5wdXQgb3B0aW9ucyBjaGFuZ2VkXG4gICAgICBjb25zdCB0YWJsZU9wdGlvbnMgPSBvcHRpb25zKClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRhYmxlLm9wdGlvbnMsXG4gICAgICAgIC4uLnJlc29sdmVkT3B0aW9ucyxcbiAgICAgICAgLi4udGFibGVPcHRpb25zLFxuICAgICAgICBzdGF0ZTogeyAuLi50YWJsZVN0YXRlLCAuLi50YWJsZU9wdGlvbnMuc3RhdGUgfSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZTogdXBkYXRlciA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgdXBkYXRlciBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gdXBkYXRlcih0YWJsZVN0YXRlKSA6IHVwZGF0ZXJcbiAgICAgICAgICBzdGF0ZS5zZXQodmFsdWUpXG4gICAgICAgICAgcmVzb2x2ZWRPcHRpb25zLm9uU3RhdGVDaGFuZ2U/Lih1cGRhdGVyKVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBjb252ZXJ0IHRhYmxlIGluc3RhbmNlIHRvIHNpZ25hbCBmb3IgcHJveGlmeSB0byBsaXN0ZW4gdG8gYW55IHRhYmxlIHN0YXRlIGFuZCBvcHRpb25zIGNoYW5nZXNcbiAgICBjb25zdCB0YWJsZVNpZ25hbCA9IGNvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0YWJsZS5zZXRPcHRpb25zKHVwZGF0ZWRPcHRpb25zKCkpXG4gICAgICAgIHJldHVybiB0YWJsZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZXF1YWw6ICgpID0+IGZhbHNlLFxuICAgICAgfVxuICAgIClcblxuICAgIC8vIHByb3hpZnkgVGFibGUgaW5zdGFuY2UgdG8gcHJvdmlkZSBhYmlsaXR5IGZvciBjb25zdW1lciB0byBsaXN0ZW4gdG8gYW55IHRhYmxlIHN0YXRlIGNoYW5nZXNcbiAgICByZXR1cm4gcHJveGlmeVRhYmxlKHRhYmxlU2lnbmFsKVxuICB9KVxufVxuIl19
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { untracked } from '@angular/core';
|
|
2
|
-
/**
|
|
3
|
-
* Implementation from @tanstack/angular-query
|
|
4
|
-
* {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}
|
|
5
|
-
*/
|
|
6
|
-
export function lazyInit(initializer) {
|
|
7
|
-
let object = null;
|
|
8
|
-
const initializeObject = () => {
|
|
9
|
-
if (!object) {
|
|
10
|
-
object = untracked(() => initializer());
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
queueMicrotask(() => initializeObject());
|
|
14
|
-
function table() { }
|
|
15
|
-
return new Proxy(table, {
|
|
16
|
-
apply(target, thisArg, argArray) {
|
|
17
|
-
initializeObject();
|
|
18
|
-
if (typeof object === 'function') {
|
|
19
|
-
return Reflect.apply(object, thisArg, argArray);
|
|
20
|
-
}
|
|
21
|
-
return Reflect.apply(target, thisArg, argArray);
|
|
22
|
-
},
|
|
23
|
-
get(_, prop, receiver) {
|
|
24
|
-
initializeObject();
|
|
25
|
-
return Reflect.get(object, prop, receiver);
|
|
26
|
-
},
|
|
27
|
-
has(_, prop) {
|
|
28
|
-
initializeObject();
|
|
29
|
-
return Reflect.has(object, prop);
|
|
30
|
-
},
|
|
31
|
-
ownKeys() {
|
|
32
|
-
initializeObject();
|
|
33
|
-
return Reflect.ownKeys(object);
|
|
34
|
-
},
|
|
35
|
-
getOwnPropertyDescriptor() {
|
|
36
|
-
return {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
configurable: true,
|
|
39
|
-
};
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFtQixXQUFvQjtJQUM3RCxJQUFJLE1BQU0sR0FBYSxJQUFJLENBQUE7SUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBRXhDLFNBQVMsS0FBSyxLQUFJLENBQUM7SUFFbkIsT0FBTyxJQUFJLEtBQUssQ0FBSSxLQUFVLEVBQUU7UUFDOUIsS0FBSyxDQUFDLE1BQVMsRUFBRSxPQUFZLEVBQUUsUUFBZTtZQUM1QyxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ2pELENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN4RCxDQUFDO1FBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUTtZQUNuQixnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUk7WUFDVCxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFXLENBQUMsQ0FBQTtRQUNyQyxDQUFDO1FBQ0Qsd0JBQXdCO1lBQ3RCLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUE7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gZnJvbSBAdGFuc3RhY2svYW5ndWxhci1xdWVyeVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9UYW5TdGFjay9xdWVyeS9ibG9iL21haW4vcGFja2FnZXMvYW5ndWxhci1xdWVyeS1leHBlcmltZW50YWwvc3JjL3V0aWwvbGF6eS1pbml0L2xhenktaW5pdC50c31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhenlJbml0PFQgZXh0ZW5kcyBvYmplY3Q+KGluaXRpYWxpemVyOiAoKSA9PiBUKTogVCB7XG4gIGxldCBvYmplY3Q6IFQgfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0IGluaXRpYWxpemVPYmplY3QgPSAoKSA9PiB7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIG9iamVjdCA9IHVudHJhY2tlZCgoKSA9PiBpbml0aWFsaXplcigpKVxuICAgIH1cbiAgfVxuXG4gIHF1ZXVlTWljcm90YXNrKCgpID0+IGluaXRpYWxpemVPYmplY3QoKSlcblxuICBmdW5jdGlvbiB0YWJsZSgpIHt9XG5cbiAgcmV0dXJuIG5ldyBQcm94eTxUPih0YWJsZSBhcyBULCB7XG4gICAgYXBwbHkodGFyZ2V0OiBULCB0aGlzQXJnOiBhbnksIGFyZ0FycmF5OiBhbnlbXSk6IGFueSB7XG4gICAgICBpbml0aWFsaXplT2JqZWN0KClcbiAgICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KG9iamVjdCwgdGhpc0FyZywgYXJnQXJyYXkpXG4gICAgICB9XG4gICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQgYXMgYW55LCB0aGlzQXJnLCBhcmdBcnJheSlcbiAgICB9LFxuICAgIGdldChfLCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgaW5pdGlhbGl6ZU9iamVjdCgpXG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXQob2JqZWN0IGFzIFQsIHByb3AsIHJlY2VpdmVyKVxuICAgIH0sXG4gICAgaGFzKF8sIHByb3ApIHtcbiAgICAgIGluaXRpYWxpemVPYmplY3QoKVxuICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKG9iamVjdCBhcyBULCBwcm9wKVxuICAgIH0sXG4gICAgb3duS2V5cygpIHtcbiAgICAgIGluaXRpYWxpemVPYmplY3QoKVxuICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyhvYmplY3QgYXMgVClcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH1cbiAgICB9LFxuICB9KVxufVxuIl19
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { computed, untracked } from '@angular/core';
|
|
2
|
-
export function proxifyTable(tableSignal) {
|
|
3
|
-
const internalState = tableSignal;
|
|
4
|
-
return new Proxy(internalState, {
|
|
5
|
-
apply() {
|
|
6
|
-
return tableSignal();
|
|
7
|
-
},
|
|
8
|
-
get(target, property) {
|
|
9
|
-
if (target[property]) {
|
|
10
|
-
return target[property];
|
|
11
|
-
}
|
|
12
|
-
const table = untracked(tableSignal);
|
|
13
|
-
/**
|
|
14
|
-
* Attempt to convert all accessors into computed ones,
|
|
15
|
-
* excluding handlers as they do not retain any reactive value
|
|
16
|
-
*/
|
|
17
|
-
if (property.startsWith('get') &&
|
|
18
|
-
(!property.endsWith('Handler') || !property.endsWith('Model'))) {
|
|
19
|
-
const maybeFn = table[property];
|
|
20
|
-
if (typeof maybeFn === 'function') {
|
|
21
|
-
Object.defineProperty(target, property, {
|
|
22
|
-
value: toComputed(tableSignal, maybeFn),
|
|
23
|
-
configurable: true,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
});
|
|
26
|
-
return target[property];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
// @ts-expect-error
|
|
30
|
-
return (target[property] = table[property]);
|
|
31
|
-
},
|
|
32
|
-
has(_, prop) {
|
|
33
|
-
return !!untracked(tableSignal)[prop];
|
|
34
|
-
},
|
|
35
|
-
ownKeys() {
|
|
36
|
-
return Reflect.ownKeys(untracked(tableSignal));
|
|
37
|
-
},
|
|
38
|
-
getOwnPropertyDescriptor() {
|
|
39
|
-
return {
|
|
40
|
-
enumerable: true,
|
|
41
|
-
configurable: true,
|
|
42
|
-
};
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Here we'll handle all type of accessors:
|
|
48
|
-
* - 0 argument -> e.g. table.getCanNextPage())
|
|
49
|
-
* - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)
|
|
50
|
-
* - 1 required argument -> e.g. table.getColumn(columnId)
|
|
51
|
-
* - 1+ argument -> e.g. table.getRow(id, searchAll?)
|
|
52
|
-
*
|
|
53
|
-
* Since we are not able to detect automatically the accessors parameters,
|
|
54
|
-
* we'll wrap all accessors into a cached function wrapping a computed
|
|
55
|
-
* that return it's value based on the given parameters
|
|
56
|
-
*/
|
|
57
|
-
function toComputed(signal, fn) {
|
|
58
|
-
const hasArgs = fn.length > 0;
|
|
59
|
-
if (!hasArgs) {
|
|
60
|
-
return computed(() => {
|
|
61
|
-
void signal();
|
|
62
|
-
return fn();
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
const computedCache = {};
|
|
66
|
-
return (...argsArray) => {
|
|
67
|
-
const serializedArgs = serializeArgs(...argsArray);
|
|
68
|
-
if (computedCache.hasOwnProperty(serializedArgs)) {
|
|
69
|
-
return computedCache[serializedArgs]?.();
|
|
70
|
-
}
|
|
71
|
-
const computedSignal = computed(() => {
|
|
72
|
-
void signal();
|
|
73
|
-
return fn(...argsArray);
|
|
74
|
-
});
|
|
75
|
-
computedCache[serializedArgs] = computedSignal;
|
|
76
|
-
return computedSignal();
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function serializeArgs(...args) {
|
|
80
|
-
return JSON.stringify(args);
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLaEUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsV0FBNkI7SUFFN0IsTUFBTSxhQUFhLEdBQUcsV0FBNkIsQ0FBQTtJQUVuRCxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtRQUM5QixLQUFLO1lBQ0gsT0FBTyxXQUFXLEVBQUUsQ0FBQTtRQUN0QixDQUFDO1FBQ0QsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUF3QjtZQUNsQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6QixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3BDOzs7ZUFHRztZQUNILElBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUM5RCxDQUFDO2dCQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQXFCLENBQUE7Z0JBQ25ELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ2xDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTt3QkFDdEMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDO3dCQUN2QyxZQUFZLEVBQUUsSUFBSTt3QkFDbEIsVUFBVSxFQUFFLElBQUk7cUJBQ2pCLENBQUMsQ0FBQTtvQkFDRixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDekIsQ0FBQztZQUNILENBQUM7WUFDRCxtQkFBbUI7WUFDbkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFvQjtZQUN6QixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU87WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDaEQsQ0FBQztRQUNELHdCQUF3QjtZQUN0QixPQUFPO2dCQUNMLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFBO1FBQ0gsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBUyxVQUFVLENBQUksTUFBd0IsRUFBRSxFQUFZO0lBQzNELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQixLQUFLLE1BQU0sRUFBRSxDQUFBO1lBQ2IsT0FBTyxFQUFFLEVBQUUsQ0FBQTtRQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFvQyxFQUFFLENBQUE7SUFFekQsT0FBTyxDQUFDLEdBQUcsU0FBZ0IsRUFBRSxFQUFFO1FBQzdCLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFBO1FBQ2xELElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtRQUMxQyxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxLQUFLLE1BQU0sRUFBRSxDQUFBO1lBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtRQUVGLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxjQUFjLENBQUE7UUFFOUMsT0FBTyxjQUFjLEVBQUUsQ0FBQTtJQUN6QixDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsR0FBRyxJQUFXO0lBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIHR5cGUgU2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgdHlwZSBUYWJsZSB9IGZyb20gJ0B0YW5zdGFjay90YWJsZS1jb3JlJ1xuXG50eXBlIFRhYmxlU2lnbmFsPFQ+ID0gVGFibGU8VD4gJiBTaWduYWw8VGFibGU8VD4+XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm94aWZ5VGFibGU8VD4oXG4gIHRhYmxlU2lnbmFsOiBTaWduYWw8VGFibGU8VD4+XG4pOiBUYWJsZTxUPiAmIFNpZ25hbDxUYWJsZTxUPj4ge1xuICBjb25zdCBpbnRlcm5hbFN0YXRlID0gdGFibGVTaWduYWwgYXMgVGFibGVTaWduYWw8VD5cblxuICByZXR1cm4gbmV3IFByb3h5KGludGVybmFsU3RhdGUsIHtcbiAgICBhcHBseSgpIHtcbiAgICAgIHJldHVybiB0YWJsZVNpZ25hbCgpXG4gICAgfSxcbiAgICBnZXQodGFyZ2V0LCBwcm9wZXJ0eToga2V5b2YgVGFibGU8VD4pOiBhbnkge1xuICAgICAgaWYgKHRhcmdldFtwcm9wZXJ0eV0pIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHRhYmxlID0gdW50cmFja2VkKHRhYmxlU2lnbmFsKVxuICAgICAgLyoqXG4gICAgICAgKiBBdHRlbXB0IHRvIGNvbnZlcnQgYWxsIGFjY2Vzc29ycyBpbnRvIGNvbXB1dGVkIG9uZXMsXG4gICAgICAgKiBleGNsdWRpbmcgaGFuZGxlcnMgYXMgdGhleSBkbyBub3QgcmV0YWluIGFueSByZWFjdGl2ZSB2YWx1ZVxuICAgICAgICovXG4gICAgICBpZiAoXG4gICAgICAgIHByb3BlcnR5LnN0YXJ0c1dpdGgoJ2dldCcpICYmXG4gICAgICAgICghcHJvcGVydHkuZW5kc1dpdGgoJ0hhbmRsZXInKSB8fCAhcHJvcGVydHkuZW5kc1dpdGgoJ01vZGVsJykpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbWF5YmVGbiA9IHRhYmxlW3Byb3BlcnR5XSBhcyBGdW5jdGlvbiB8IG5ldmVyXG4gICAgICAgIGlmICh0eXBlb2YgbWF5YmVGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5LCB7XG4gICAgICAgICAgICB2YWx1ZTogdG9Db21wdXRlZCh0YWJsZVNpZ25hbCwgbWF5YmVGbiksXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wZXJ0eV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuICh0YXJnZXRbcHJvcGVydHldID0gdGFibGVbcHJvcGVydHldKVxuICAgIH0sXG4gICAgaGFzKF8sIHByb3A6IGtleW9mIFRhYmxlPFQ+KSB7XG4gICAgICByZXR1cm4gISF1bnRyYWNrZWQodGFibGVTaWduYWwpW3Byb3BdXG4gICAgfSxcbiAgICBvd25LZXlzKCkge1xuICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh1bnRyYWNrZWQodGFibGVTaWduYWwpKVxuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG5cbi8qKlxuICogSGVyZSB3ZSdsbCBoYW5kbGUgYWxsIHR5cGUgb2YgYWNjZXNzb3JzOlxuICogLSAwIGFyZ3VtZW50IC0+IGUuZy4gdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKSlcbiAqIC0gMH4xIGFyZ3VtZW50cyAtPiBlLmcuIHRhYmxlLmdldElzU29tZVJvd3NQaW5uZWQocG9zaXRpb24/KVxuICogLSAxIHJlcXVpcmVkIGFyZ3VtZW50IC0+IGUuZy4gdGFibGUuZ2V0Q29sdW1uKGNvbHVtbklkKVxuICogLSAxKyBhcmd1bWVudCAtPiBlLmcuIHRhYmxlLmdldFJvdyhpZCwgc2VhcmNoQWxsPylcbiAqXG4gKiBTaW5jZSB3ZSBhcmUgbm90IGFibGUgdG8gZGV0ZWN0IGF1dG9tYXRpY2FsbHkgdGhlIGFjY2Vzc29ycyBwYXJhbWV0ZXJzLFxuICogd2UnbGwgd3JhcCBhbGwgYWNjZXNzb3JzIGludG8gYSBjYWNoZWQgZnVuY3Rpb24gd3JhcHBpbmcgYSBjb21wdXRlZFxuICogdGhhdCByZXR1cm4gaXQncyB2YWx1ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVyc1xuICovXG5mdW5jdGlvbiB0b0NvbXB1dGVkPFQ+KHNpZ25hbDogU2lnbmFsPFRhYmxlPFQ+PiwgZm46IEZ1bmN0aW9uKSB7XG4gIGNvbnN0IGhhc0FyZ3MgPSBmbi5sZW5ndGggPiAwXG4gIGlmICghaGFzQXJncykge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICB2b2lkIHNpZ25hbCgpXG4gICAgICByZXR1cm4gZm4oKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb21wdXRlZENhY2hlOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+ID0ge31cblxuICByZXR1cm4gKC4uLmFyZ3NBcnJheTogYW55W10pID0+IHtcbiAgICBjb25zdCBzZXJpYWxpemVkQXJncyA9IHNlcmlhbGl6ZUFyZ3MoLi4uYXJnc0FycmF5KVxuICAgIGlmIChjb21wdXRlZENhY2hlLmhhc093blByb3BlcnR5KHNlcmlhbGl6ZWRBcmdzKSkge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkQ2FjaGVbc2VyaWFsaXplZEFyZ3NdPy4oKVxuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHZvaWQgc2lnbmFsKClcbiAgICAgIHJldHVybiBmbiguLi5hcmdzQXJyYXkpXG4gICAgfSlcblxuICAgIGNvbXB1dGVkQ2FjaGVbc2VyaWFsaXplZEFyZ3NdID0gY29tcHV0ZWRTaWduYWxcblxuICAgIHJldHVybiBjb21wdXRlZFNpZ25hbCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplQXJncyguLi5hcmdzOiBhbnlbXSkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJncylcbn1cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stYW5ndWxhci10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YW5zdGFjay1hbmd1bGFyLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-angular-table.mjs","sources":["../../../src/lazy-signal-initializer.ts","../../../src/proxy.ts","../../../src/flex-render.ts","../../../src/index.ts","../../../src/tanstack-angular-table.ts"],"sourcesContent":["import { untracked } from '@angular/core'\n\n/**\n * Implementation from @tanstack/angular-query\n * {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}\n */\nexport function lazyInit<T extends object>(initializer: () => T): T {\n let object: T | null = null\n\n const initializeObject = () => {\n if (!object) {\n object = untracked(() => initializer())\n }\n }\n\n queueMicrotask(() => initializeObject())\n\n function table() {}\n\n return new Proxy<T>(table as T, {\n apply(target: T, thisArg: any, argArray: any[]): any {\n initializeObject()\n if (typeof object === 'function') {\n return Reflect.apply(object, thisArg, argArray)\n }\n return Reflect.apply(target as any, thisArg, argArray)\n },\n get(_, prop, receiver) {\n initializeObject()\n return Reflect.get(object as T, prop, receiver)\n },\n has(_, prop) {\n initializeObject()\n return Reflect.has(object as T, prop)\n },\n ownKeys() {\n initializeObject()\n return Reflect.ownKeys(object as T)\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n","import { computed, type Signal, untracked } from '@angular/core'\nimport { type Table } from '@tanstack/table-core'\n\ntype TableSignal<T> = Table<T> & Signal<Table<T>>\n\nexport function proxifyTable<T>(\n tableSignal: Signal<Table<T>>\n): Table<T> & Signal<Table<T>> {\n const internalState = tableSignal as TableSignal<T>\n\n return new Proxy(internalState, {\n apply() {\n return tableSignal()\n },\n get(target, property: keyof Table<T>): any {\n if (target[property]) {\n return target[property]\n }\n const table = untracked(tableSignal)\n /**\n * Attempt to convert all accessors into computed ones,\n * excluding handlers as they do not retain any reactive value\n */\n if (\n property.startsWith('get') &&\n (!property.endsWith('Handler') || !property.endsWith('Model'))\n ) {\n const maybeFn = table[property] as Function | never\n if (typeof maybeFn === 'function') {\n Object.defineProperty(target, property, {\n value: toComputed(tableSignal, maybeFn),\n configurable: true,\n enumerable: true,\n })\n return target[property]\n }\n }\n // @ts-expect-error\n return (target[property] = table[property])\n },\n has(_, prop: keyof Table<T>) {\n return !!untracked(tableSignal)[prop]\n },\n ownKeys() {\n return Reflect.ownKeys(untracked(tableSignal))\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n\n/**\n * Here we'll handle all type of accessors:\n * - 0 argument -> e.g. table.getCanNextPage())\n * - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)\n * - 1 required argument -> e.g. table.getColumn(columnId)\n * - 1+ argument -> e.g. table.getRow(id, searchAll?)\n *\n * Since we are not able to detect automatically the accessors parameters,\n * we'll wrap all accessors into a cached function wrapping a computed\n * that return it's value based on the given parameters\n */\nfunction toComputed<T>(signal: Signal<Table<T>>, fn: Function) {\n const hasArgs = fn.length > 0\n if (!hasArgs) {\n return computed(() => {\n void signal()\n return fn()\n })\n }\n\n const computedCache: Record<string, Signal<unknown>> = {}\n\n return (...argsArray: any[]) => {\n const serializedArgs = serializeArgs(...argsArray)\n if (computedCache.hasOwnProperty(serializedArgs)) {\n return computedCache[serializedArgs]?.()\n }\n const computedSignal = computed(() => {\n void signal()\n return fn(...argsArray)\n })\n\n computedCache[serializedArgs] = computedSignal\n\n return computedSignal()\n }\n}\n\nfunction serializeArgs(...args: any[]) {\n return JSON.stringify(args)\n}\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive,\n type DoCheck,\n EmbeddedViewRef,\n inject,\n InjectionToken,\n Injector,\n Input,\n type OnInit,\n TemplateRef,\n type Type,\n ViewContainerRef,\n} from '@angular/core'\n\ntype FlexRenderContent<TProps extends NonNullable<unknown>> =\n | string\n | number\n | FlexRenderComponent<TProps>\n | TemplateRef<{ $implicit: TProps }>\n | null\n\n@Directive({\n selector: '[flexRender]',\n standalone: true,\n})\nexport class FlexRenderDirective<TProps extends NonNullable<unknown>>\n implements OnInit, DoCheck\n{\n @Input({ required: true, alias: 'flexRender' })\n content:\n | number\n | string\n | ((props: TProps) => FlexRenderContent<TProps>)\n | undefined = undefined\n\n @Input({ required: true, alias: 'flexRenderProps' })\n props: TProps = {} as TProps\n\n @Input({ required: false, alias: 'flexRenderInjector' })\n injector: Injector = inject(Injector)\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private templateRef: TemplateRef<any>\n ) {}\n\n ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null = null\n\n ngOnInit(): void {\n this.ref = this.render()\n }\n\n ngDoCheck() {\n if (this.ref instanceof ComponentRef) {\n this.ref.injector.get(ChangeDetectorRef).markForCheck()\n } else if (this.ref instanceof EmbeddedViewRef) {\n this.ref.markForCheck()\n }\n }\n\n render() {\n this.viewContainerRef.clear()\n const { content, props } = this\n if (!this.content) {\n return null\n }\n\n if (typeof content === 'string' || typeof content === 'number') {\n return this.renderStringContent()\n }\n if (typeof content === 'function') {\n return this.renderContent(content(props))\n }\n return null\n }\n\n private renderContent(content: FlexRenderContent<TProps>) {\n if (typeof content === 'string' || typeof content === 'number') {\n return this.renderStringContent()\n }\n if (content instanceof TemplateRef) {\n return this.viewContainerRef.createEmbeddedView(\n content,\n this.getTemplateRefContext()\n )\n } else if (content instanceof FlexRenderComponent) {\n return this.renderComponent(content)\n } else {\n return null\n }\n }\n\n private renderStringContent(): EmbeddedViewRef<unknown> {\n const context = () => {\n return typeof this.content === 'string' ||\n typeof this.content === 'number'\n ? this.content\n : this.content?.(this.props)\n }\n return this.viewContainerRef.createEmbeddedView(this.templateRef, {\n get $implicit() {\n return context()\n },\n })\n }\n\n private renderComponent(\n flexRenderComponent: FlexRenderComponent<TProps>\n ): ComponentRef<unknown> {\n const { component, inputs, injector } = flexRenderComponent\n\n const getContext = () => this.props\n\n const proxy = new Proxy(this.props, {\n get: (_, key) => getContext()?.[key as keyof typeof _],\n })\n\n const componentInjector = Injector.create({\n parent: injector ?? this.injector,\n providers: [{ provide: FlexRenderComponentProps, useValue: proxy }],\n })\n\n const componentRef = this.viewContainerRef.createComponent(component, {\n injector: componentInjector,\n })\n for (const prop in inputs) {\n if (componentRef.instance?.hasOwnProperty(prop)) {\n componentRef.setInput(prop, inputs[prop])\n }\n }\n return componentRef\n }\n\n private getTemplateRefContext() {\n const getContext = () => this.props\n return {\n get $implicit() {\n return getContext()\n },\n }\n }\n}\n\nexport class FlexRenderComponent<T extends NonNullable<unknown>> {\n constructor(\n readonly component: Type<unknown>,\n readonly inputs: T = {} as T,\n readonly injector?: Injector\n ) {}\n}\n\nconst FlexRenderComponentProps = new InjectionToken<NonNullable<unknown>>(\n '[@tanstack/angular-table] Flex render component context props'\n)\n\nexport function injectFlexRenderContext<T extends NonNullable<unknown>>(): T {\n return inject<T>(FlexRenderComponentProps)\n}\n","import { computed, signal } from '@angular/core'\nimport {\n RowData,\n TableOptions,\n TableOptionsResolved,\n TableState,\n createTable,\n type Table,\n} from '@tanstack/table-core'\nimport { lazyInit } from './lazy-signal-initializer'\nimport { proxifyTable } from './proxy'\n\nexport * from '@tanstack/table-core'\n\nexport {\n FlexRenderComponent,\n FlexRenderDirective,\n injectFlexRenderContext,\n} from './flex-render'\n\nexport function createAngularTable<TData extends RowData>(\n options: () => TableOptions<TData>\n): Table<TData> {\n return lazyInit(() => {\n const resolvedOptions = {\n state: {},\n onStateChange: () => {},\n renderFallbackValue: null,\n ...options(),\n }\n\n const table = createTable(resolvedOptions)\n\n // By default, manage table state here using the table's initial state\n const state = signal<TableState>(table.initialState)\n\n // Compose table options using computed.\n // This is to allow `tableSignal` to listen and set table option\n const updatedOptions = computed<TableOptionsResolved<TData>>(() => {\n // listen to table state changed\n const tableState = state()\n // listen to input options changed\n const tableOptions = options()\n return {\n ...table.options,\n ...resolvedOptions,\n ...tableOptions,\n state: { ...tableState, ...tableOptions.state },\n onStateChange: updater => {\n const value =\n updater instanceof Function ? updater(tableState) : updater\n state.set(value)\n resolvedOptions.onStateChange?.(updater)\n },\n }\n })\n\n // convert table instance to signal for proxify to listen to any table state and options changes\n const tableSignal = computed(\n () => {\n table.setOptions(updatedOptions())\n return table\n },\n {\n equal: () => false,\n }\n )\n\n // proxify Table instance to provide ability for consumer to listen to any table state changes\n return proxifyTable(tableSignal)\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|