@tanstack/angular-table 9.0.0-alpha.0 → 9.0.0-alpha.10
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 +39 -18
- package/dist/esm2022/index.mjs +4 -4
- package/dist/esm2022/lazy-signal-initializer.mjs +2 -2
- package/dist/esm2022/proxy.mjs +3 -2
- package/dist/fesm2022/tanstack-angular-table.mjs +45 -23
- package/dist/fesm2022/tanstack-angular-table.mjs.map +1 -1
- package/dist/flex-render.d.ts +9 -10
- package/dist/index.d.ts +3 -2
- package/package.json +8 -5
- package/src/flex-render.ts +45 -21
- package/src/index.ts +6 -5
- package/src/lazy-signal-initializer.ts +1 -1
- package/src/proxy.ts +2 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ComponentRef, Directive,
|
|
1
|
+
import { ChangeDetectorRef, ComponentRef, Directive, Inject, inject, InjectionToken, Injector, Input, isSignal, TemplateRef, Type, ViewContainerRef, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class FlexRenderDirective {
|
|
4
4
|
viewContainerRef;
|
|
@@ -11,30 +11,28 @@ export class FlexRenderDirective {
|
|
|
11
11
|
this.templateRef = templateRef;
|
|
12
12
|
}
|
|
13
13
|
ref = null;
|
|
14
|
-
|
|
15
|
-
this.ref = this.render();
|
|
16
|
-
}
|
|
17
|
-
ngDoCheck() {
|
|
14
|
+
ngOnChanges(changes) {
|
|
18
15
|
if (this.ref instanceof ComponentRef) {
|
|
19
16
|
this.ref.injector.get(ChangeDetectorRef).markForCheck();
|
|
20
17
|
}
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
if (!changes['content']) {
|
|
19
|
+
return;
|
|
23
20
|
}
|
|
21
|
+
this.render();
|
|
24
22
|
}
|
|
25
23
|
render() {
|
|
26
24
|
this.viewContainerRef.clear();
|
|
27
25
|
const { content, props } = this;
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (typeof content === 'string' || typeof content === 'number') {
|
|
32
|
-
return this.renderStringContent();
|
|
26
|
+
if (content === null || content === undefined) {
|
|
27
|
+
this.ref = null;
|
|
28
|
+
return;
|
|
33
29
|
}
|
|
34
30
|
if (typeof content === 'function') {
|
|
35
31
|
return this.renderContent(content(props));
|
|
36
32
|
}
|
|
37
|
-
|
|
33
|
+
else {
|
|
34
|
+
return this.renderContent(content);
|
|
35
|
+
}
|
|
38
36
|
}
|
|
39
37
|
renderContent(content) {
|
|
40
38
|
if (typeof content === 'string' || typeof content === 'number') {
|
|
@@ -46,6 +44,9 @@ export class FlexRenderDirective {
|
|
|
46
44
|
else if (content instanceof FlexRenderComponent) {
|
|
47
45
|
return this.renderComponent(content);
|
|
48
46
|
}
|
|
47
|
+
else if (content instanceof Type) {
|
|
48
|
+
return this.renderCustomComponent(content);
|
|
49
|
+
}
|
|
49
50
|
else {
|
|
50
51
|
return null;
|
|
51
52
|
}
|
|
@@ -83,6 +84,20 @@ export class FlexRenderDirective {
|
|
|
83
84
|
}
|
|
84
85
|
return componentRef;
|
|
85
86
|
}
|
|
87
|
+
renderCustomComponent(component) {
|
|
88
|
+
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
89
|
+
injector: this.injector,
|
|
90
|
+
});
|
|
91
|
+
for (const prop in this.props) {
|
|
92
|
+
// Only signal based input can be added here
|
|
93
|
+
if (componentRef.instance?.hasOwnProperty(prop) &&
|
|
94
|
+
// @ts-ignore
|
|
95
|
+
isSignal(componentRef.instance[prop])) {
|
|
96
|
+
componentRef.setInput(prop, this.props[prop]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return componentRef;
|
|
100
|
+
}
|
|
86
101
|
getTemplateRefContext() {
|
|
87
102
|
const getContext = () => this.props;
|
|
88
103
|
return {
|
|
@@ -91,16 +106,22 @@ export class FlexRenderDirective {
|
|
|
91
106
|
},
|
|
92
107
|
};
|
|
93
108
|
}
|
|
94
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
95
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
109
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FlexRenderDirective, deps: [{ token: ViewContainerRef }, { token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
110
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, usesOnChanges: true, ngImport: i0 });
|
|
96
111
|
}
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
98
113
|
type: Directive,
|
|
99
114
|
args: [{
|
|
100
115
|
selector: '[flexRender]',
|
|
101
116
|
standalone: true,
|
|
102
117
|
}]
|
|
103
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef
|
|
118
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef, decorators: [{
|
|
119
|
+
type: Inject,
|
|
120
|
+
args: [ViewContainerRef]
|
|
121
|
+
}] }, { type: i0.TemplateRef, decorators: [{
|
|
122
|
+
type: Inject,
|
|
123
|
+
args: [TemplateRef]
|
|
124
|
+
}] }], propDecorators: { content: [{
|
|
104
125
|
type: Input,
|
|
105
126
|
args: [{ required: true, alias: 'flexRender' }]
|
|
106
127
|
}], props: [{
|
|
@@ -124,4 +145,4 @@ const FlexRenderComponentProps = new InjectionToken('[@tanstack/angular-table] F
|
|
|
124
145
|
export function injectFlexRenderContext() {
|
|
125
146
|
return inject(FlexRenderComponentProps);
|
|
126
147
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxleC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUVULGVBQWUsRUFDZixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBRUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFBOztBQWF0QixNQUFNLE9BQU8sbUJBQW1CO0lBaUJwQjtJQUNBO0lBZFYsT0FBTyxHQUlTLFNBQVMsQ0FBQTtJQUd6QixLQUFLLEdBQVcsRUFBWSxDQUFBO0lBRzVCLFFBQVEsR0FBYSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFckMsWUFDVSxnQkFBa0MsRUFDbEMsV0FBNkI7UUFEN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFDcEMsQ0FBQztJQUVKLEdBQUcsR0FBNkQsSUFBSSxDQUFBO0lBRXBFLFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzdCLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxF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QUFDLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgdHlwZSBEb0NoZWNrLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIGluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgdHlwZSBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICB0eXBlIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbnR5cGUgRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+ID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgfCBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVFByb3BzIH0+XG4gIHwgbnVsbFxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZmxleFJlbmRlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyRGlyZWN0aXZlPFRQcm9wcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVja1xue1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmbGV4UmVuZGVyJyB9KVxuICBjb250ZW50OlxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8ICgocHJvcHM6IFRQcm9wcykgPT4gRmxleFJlbmRlckNvbnRlbnQ8VFByb3BzPilcbiAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2ZsZXhSZW5kZXJQcm9wcycgfSlcbiAgcHJvcHM6IFRQcm9wcyA9IHt9IGFzIFRQcm9wc1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiBmYWxzZSwgYWxpYXM6ICdmbGV4UmVuZGVySW5qZWN0b3InIH0pXG4gIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PlxuICApIHt9XG5cbiAgcmVmPzogQ29tcG9uZW50UmVmPHVua25vd24+IHwgRW1iZWRkZWRWaWV3UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGxcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZiA9IHRoaXMucmVuZGVyKClcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5yZWYgaW5zdGFuY2VvZiBDb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMucmVmLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZikubWFya0ZvckNoZWNrKClcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVmIGluc3RhbmNlb2YgRW1iZWRkZWRWaWV3UmVmKSB7XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKVxuICAgIGNvbnN0IHsgY29udGVudCwgcHJvcHMgfSA9IHRoaXNcbiAgICBpZiAoIXRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyU3RyaW5nQ29udGVudCgpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29udGVudChjb250ZW50KHByb3BzKSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29udGVudChjb250ZW50OiBGbGV4UmVuZGVyQ29udGVudDxUUHJvcHM+KSB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclN0cmluZ0NvbnRlbnQoKVxuICAgIH1cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZVJlZkNvbnRleHQoKVxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZsZXhSZW5kZXJDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RyaW5nQ29udGVudCgpOiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ251bWJlcidcbiAgICAgICAgPyB0aGlzLmNvbnRlbnRcbiAgICAgICAgOiB0aGlzLmNvbnRlbnQ/Lih0aGlzLnByb3BzKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gY29udGV4dCgpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNvbXBvbmVudChcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgKTogQ29tcG9uZW50UmVmPHVua25vd24+IHtcbiAgICBjb25zdCB7IGNvbXBvbmVudCwgaW5wdXRzLCBpbmplY3RvciB9ID0gZmxleFJlbmRlckNvbXBvbmVudFxuXG4gICAgY29uc3QgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRoaXMucHJvcHMsIHtcbiAgICAgIGdldDogKF8sIGtleSkgPT4gZ2V0Q29udGV4dCgpPy5ba2V5IGFzIGtleW9mIHR5cGVvZiBfXSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3RvciA/PyB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsIHVzZVZhbHVlOiBwcm94eSB9XSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGluamVjdG9yOiBjb21wb25lbnRJbmplY3RvcixcbiAgICB9KVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBpbnB1dHMpIHtcbiAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2U/Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChwcm9wLCBpbnB1dHNbcHJvcF0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRSZWZcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGVtcGxhdGVSZWZDb250ZXh0KCkge1xuICAgIGNvbnN0IGdldENvbnRleHQgPSAoKSA9PiB0aGlzLnByb3BzXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCAkaW1wbGljaXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0KClcbiAgICAgIH0sXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBOb25OdWxsYWJsZTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj4sXG4gICAgcmVhZG9ubHkgaW5wdXRzOiBUID0ge30gYXMgVCxcbiAgICByZWFkb25seSBpbmplY3Rvcj86IEluamVjdG9yXG4gICkge31cbn1cblxuY29uc3QgRmxleFJlbmRlckNvbXBvbmVudFByb3BzID0gbmV3IEluamVjdGlvblRva2VuPE5vbk51bGxhYmxlPHVua25vd24+PihcbiAgJ1tAdGFuc3RhY2svYW5ndWxhci10YWJsZV0gRmxleCByZW5kZXIgY29tcG9uZW50IGNvbnRleHQgcHJvcHMnXG4pXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RGbGV4UmVuZGVyQ29udGV4dDxUIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+KCk6IFQge1xuICByZXR1cm4gaW5qZWN0PFQ+KEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcylcbn1cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxleC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUVULE1BQU0sRUFDTixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUdSLFdBQVcsRUFDWCxJQUFJLEVBQ0osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBOztBQWV0QixNQUFNLE9BQU8sbUJBQW1CO0lBbUJYO0lBRUE7SUFqQm5CLE9BQU8sR0FLUyxTQUFTLENBQUE7SUFHekIsS0FBSyxHQUFXLEVBQVksQ0FBQTtJQUc1QixRQUFRLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXJDLFlBRW1CLGdCQUFrQyxFQUVsQyxXQUE2QjtRQUY3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRWxDLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUM3QyxDQUFDO0lBRUosR0FBRyxHQUE2RCxJQUFJLENBQUE7SUFFcEUsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2YsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDL0Is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QkFDakI7OzBCQW1CSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLE1BQU07MkJBQUMsV0FBVzt5Q0FoQnJCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFTOUMsS0FBSztzQkFESixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBSW5ELFFBQVE7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFOztBQTRIekQsTUFBTSxPQUFPLG1CQUFtQjtJQUVuQjtJQUNBO0lBQ0E7SUFIWCxZQUNXLFNBQXdCLEVBQ3hCLFNBQVksRUFBTyxFQUNuQixRQUFtQjtRQUZuQixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUMzQixDQUFDO0NBQ0w7QUFFRCxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUNqRCwrREFBK0QsQ0FDaEUsQ0FBQTtBQUVELE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsT0FBTyxNQUFNLENBQUksd0JBQXdCLENBQUMsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEluamVjdCxcbiAgaW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBpc1NpZ25hbCxcbiAgdHlwZSBPbkNoYW5nZXMsXG4gIHR5cGUgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCB0eXBlIEZsZXhSZW5kZXJDb250ZW50PFRQcm9wcyBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PiA9XG4gIHwgc3RyaW5nXG4gIHwgbnVtYmVyXG4gIHwgVHlwZTxUUHJvcHM+XG4gIHwgRmxleFJlbmRlckNvbXBvbmVudDxUUHJvcHM+XG4gIHwgVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFRQcm9wcyB9PlxuICB8IG51bGxcbiAgfCB1bmRlZmluZWRcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZsZXhSZW5kZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckRpcmVjdGl2ZTxUUHJvcHMgZXh0ZW5kcyBOb25OdWxsYWJsZTx1bmtub3duPj5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnZmxleFJlbmRlcicgfSlcbiAgY29udGVudDpcbiAgICB8IG51bWJlclxuICAgIHwgc3RyaW5nXG4gICAgfCAoKHByb3BzOiBUUHJvcHMpID0+IEZsZXhSZW5kZXJDb250ZW50PFRQcm9wcz4pXG4gICAgfCBudWxsXG4gICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmbGV4UmVuZGVyUHJvcHMnIH0pXG4gIHByb3BzOiBUUHJvcHMgPSB7fSBhcyBUUHJvcHNcblxuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UsIGFsaWFzOiAnZmxleFJlbmRlckluamVjdG9yJyB9KVxuICBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBASW5qZWN0KFRlbXBsYXRlUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT5cbiAgKSB7fVxuXG4gIHJlZj86IENvbXBvbmVudFJlZjx1bmtub3duPiB8IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPiB8IG51bGwgPSBudWxsXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLnJlZiBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5yZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgICBpZiAoIWNoYW5nZXNbJ2NvbnRlbnQnXSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMucmVuZGVyKClcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKVxuICAgIGNvbnN0IHsgY29udGVudCwgcHJvcHMgfSA9IHRoaXNcbiAgICBpZiAoY29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucmVmID0gbnVsbFxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29udGVudChjb250ZW50KHByb3BzKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29udGVudChjb250ZW50KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29udGVudChjb250ZW50OiBGbGV4UmVuZGVyQ29udGVudDxUUHJvcHM+KSB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlclN0cmluZ0NvbnRlbnQoKVxuICAgIH1cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZVJlZkNvbnRleHQoKVxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZsZXhSZW5kZXJDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckN1c3RvbUNvbXBvbmVudChjb250ZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RyaW5nQ29udGVudCgpOiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHRoaXMuY29udGVudCA9PT0gJ251bWJlcidcbiAgICAgICAgPyB0aGlzLmNvbnRlbnRcbiAgICAgICAgOiB0aGlzLmNvbnRlbnQ/Lih0aGlzLnByb3BzKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gY29udGV4dCgpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHJlbmRlckNvbXBvbmVudChcbiAgICBmbGV4UmVuZGVyQ29tcG9uZW50OiBGbGV4UmVuZGVyQ29tcG9uZW50PFRQcm9wcz5cbiAgKTogQ29tcG9uZW50UmVmPHVua25vd24+IHtcbiAgICBjb25zdCB7IGNvbXBvbmVudCwgaW5wdXRzLCBpbmplY3RvciB9ID0gZmxleFJlbmRlckNvbXBvbmVudFxuXG4gICAgY29uc3QgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRoaXMucHJvcHMsIHtcbiAgICAgIGdldDogKF8sIGtleSkgPT4gZ2V0Q29udGV4dCgpPy5ba2V5IGFzIGtleW9mIHR5cGVvZiBfXSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiBpbmplY3RvciA/PyB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMsIHVzZVZhbHVlOiBwcm94eSB9XSxcbiAgICB9KVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGluamVjdG9yOiBjb21wb25lbnRJbmplY3RvcixcbiAgICB9KVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBpbnB1dHMpIHtcbiAgICAgIGlmIChjb21wb25lbnRSZWYuaW5zdGFuY2U/Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChwcm9wLCBpbnB1dHNbcHJvcF0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRSZWZcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ3VzdG9tQ29tcG9uZW50KFxuICAgIGNvbXBvbmVudDogVHlwZTx1bmtub3duPlxuICApOiBDb21wb25lbnRSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XG4gICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICB9KVxuICAgIGZvciAoY29uc3QgcHJvcCBpbiB0aGlzLnByb3BzKSB7XG4gICAgICAvLyBPbmx5IHNpZ25hbCBiYXNlZCBpbnB1dCBjYW4gYmUgYWRkZWQgaGVyZVxuICAgICAgaWYgKFxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2U/Lmhhc093blByb3BlcnR5KHByb3ApICYmXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaXNTaWduYWwoY29tcG9uZW50UmVmLmluc3RhbmNlW3Byb3BdKVxuICAgICAgKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5zZXRJbnB1dChwcm9wLCB0aGlzLnByb3BzW3Byb3BdKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tcG9uZW50UmVmXG4gIH1cblxuICBwcml2YXRlIGdldFRlbXBsYXRlUmVmQ29udGV4dCgpIHtcbiAgICBjb25zdCBnZXRDb250ZXh0ID0gKCkgPT4gdGhpcy5wcm9wc1xuICAgIHJldHVybiB7XG4gICAgICBnZXQgJGltcGxpY2l0KCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dCgpXG4gICAgICB9LFxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmxleFJlbmRlckNvbXBvbmVudDxUIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY29tcG9uZW50OiBUeXBlPHVua25vd24+LFxuICAgIHJlYWRvbmx5IGlucHV0czogVCA9IHt9IGFzIFQsXG4gICAgcmVhZG9ubHkgaW5qZWN0b3I/OiBJbmplY3RvclxuICApIHt9XG59XG5cbmNvbnN0IEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOb25OdWxsYWJsZTx1bmtub3duPj4oXG4gICdbQHRhbnN0YWNrL2FuZ3VsYXItdGFibGVdIEZsZXggcmVuZGVyIGNvbXBvbmVudCBjb250ZXh0IHByb3BzJ1xuKVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RmxleFJlbmRlckNvbnRleHQ8VCBleHRlbmRzIE5vbk51bGxhYmxlPHVua25vd24+PigpOiBUIHtcbiAgcmV0dXJuIGluamVjdDxUPihGbGV4UmVuZGVyQ29tcG9uZW50UHJvcHMpXG59XG4iXX0=
|
package/dist/esm2022/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { computed, signal } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { _createTable, } from '@tanstack/table-core';
|
|
3
3
|
import { lazyInit } from './lazy-signal-initializer';
|
|
4
4
|
import { proxifyTable } from './proxy';
|
|
5
5
|
export * from '@tanstack/table-core';
|
|
6
6
|
export { FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, } from './flex-render';
|
|
7
|
-
export function
|
|
7
|
+
export function injectTable(options) {
|
|
8
8
|
return lazyInit(() => {
|
|
9
9
|
const resolvedOptions = {
|
|
10
10
|
state: {},
|
|
@@ -12,7 +12,7 @@ export function createAngularTable(options) {
|
|
|
12
12
|
renderFallbackValue: null,
|
|
13
13
|
...options(),
|
|
14
14
|
};
|
|
15
|
-
const table =
|
|
15
|
+
const table = _createTable(resolvedOptions);
|
|
16
16
|
// By default, manage table state here using the table's initial state
|
|
17
17
|
const state = signal(table.initialState);
|
|
18
18
|
// Compose table options using computed.
|
|
@@ -45,4 +45,4 @@ export function createAngularTable(options) {
|
|
|
45
45
|
return proxifyTable(tableSignal);
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBZSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUtMLFlBQVksR0FFYixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXRDLGNBQWMsc0JBQXNCLENBQUE7QUFFcEMsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE1BQU0sVUFBVSxXQUFXLENBQ3pCLE9BQWtDO0lBRWxDLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNuQixNQUFNLGVBQWUsR0FBRztZQUN0QixLQUFLLEVBQUUsRUFBRTtZQUNULGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1lBQ3ZCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsR0FBRyxPQUFPLEVBQUU7U0FDYixDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRTNDLHNFQUFzRTtRQUN0RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQWEsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRXBELHdDQUF3QztRQUN4QyxnRUFBZ0U7UUFDaEUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUE4QixHQUFHLEVBQUU7WUFDaEUsZ0NBQWdDO1lBQ2hDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxDQUFBO1lBQzFCLGtDQUFrQztZQUNsQyxNQUFNLFlBQVksR0FBRyxPQUFPLEVBQUUsQ0FBQTtZQUM5QixPQUFPO2dCQUNMLEdBQUcsS0FBSyxDQUFDLE9BQU87Z0JBQ2hCLEdBQUcsZUFBZTtnQkFDbEIsR0FBRyxZQUFZO2dCQUNmLEtBQUssRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDL0MsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUN2QixNQUFNLEtBQUssR0FDVCxPQUFPLFlBQVksUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtvQkFDN0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFDaEIsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUMxQyxDQUFDO2FBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsZ0dBQWdHO1FBQ2hHLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FDMUIsR0FBRyxFQUFFO1lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQyxFQUNEO1lBQ0UsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUs7U0FDbkIsQ0FDRixDQUFBO1FBRUQsOEZBQThGO1FBQzlGLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCB0eXBlIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFJvd0RhdGEsXG4gIFRhYmxlT3B0aW9ucyxcbiAgVGFibGVPcHRpb25zUmVzb2x2ZWQsXG4gIFRhYmxlU3RhdGUsXG4gIF9jcmVhdGVUYWJsZSxcbiAgdHlwZSBUYWJsZSxcbn0gZnJvbSAnQHRhbnN0YWNrL3RhYmxlLWNvcmUnXG5pbXBvcnQgeyBsYXp5SW5pdCB9IGZyb20gJy4vbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXInXG5pbXBvcnQgeyBwcm94aWZ5VGFibGUgfSBmcm9tICcuL3Byb3h5J1xuXG5leHBvcnQgKiBmcm9tICdAdGFuc3RhY2svdGFibGUtY29yZSdcblxuZXhwb3J0IHtcbiAgdHlwZSBGbGV4UmVuZGVyQ29udGVudCxcbiAgRmxleFJlbmRlckNvbXBvbmVudCxcbiAgRmxleFJlbmRlckRpcmVjdGl2ZSxcbiAgaW5qZWN0RmxleFJlbmRlckNvbnRleHQsXG59IGZyb20gJy4vZmxleC1yZW5kZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RUYWJsZTxURGF0YSBleHRlbmRzIFJvd0RhdGE+KFxuICBvcHRpb25zOiAoKSA9PiBUYWJsZU9wdGlvbnM8VERhdGE+XG4pOiBUYWJsZTxURGF0YT4gJiBTaWduYWw8VGFibGU8VERhdGE+PiB7XG4gIHJldHVybiBsYXp5SW5pdCgoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRPcHRpb25zID0ge1xuICAgICAgc3RhdGU6IHt9LFxuICAgICAgb25TdGF0ZUNoYW5nZTogKCkgPT4ge30sXG4gICAgICByZW5kZXJGYWxsYmFja1ZhbHVlOiBudWxsLFxuICAgICAgLi4ub3B0aW9ucygpLFxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gX2NyZWF0ZVRhYmxlKHJlc29sdmVkT3B0aW9ucylcblxuICAgIC8vIEJ5IGRlZmF1bHQsIG1hbmFnZSB0YWJsZSBzdGF0ZSBoZXJlIHVzaW5nIHRoZSB0YWJsZSdzIGluaXRpYWwgc3RhdGVcbiAgICBjb25zdCBzdGF0ZSA9IHNpZ25hbDxUYWJsZVN0YXRlPih0YWJsZS5pbml0aWFsU3RhdGUpXG5cbiAgICAvLyBDb21wb3NlIHRhYmxlIG9wdGlvbnMgdXNpbmcgY29tcHV0ZWQuXG4gICAgLy8gVGhpcyBpcyB0byBhbGxvdyBgdGFibGVTaWduYWxgIHRvIGxpc3RlbiBhbmQgc2V0IHRhYmxlIG9wdGlvblxuICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0gY29tcHV0ZWQ8VGFibGVPcHRpb25zUmVzb2x2ZWQ8VERhdGE+PigoKSA9PiB7XG4gICAgICAvLyBsaXN0ZW4gdG8gdGFibGUgc3RhdGUgY2hhbmdlZFxuICAgICAgY29uc3QgdGFibGVTdGF0ZSA9IHN0YXRlKClcbiAgICAgIC8vIGxpc3RlbiB0byBpbnB1dCBvcHRpb25zIGNoYW5nZWRcbiAgICAgIGNvbnN0IHRhYmxlT3B0aW9ucyA9IG9wdGlvbnMoKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udGFibGUub3B0aW9ucyxcbiAgICAgICAgLi4ucmVzb2x2ZWRPcHRpb25zLFxuICAgICAgICAuLi50YWJsZU9wdGlvbnMsXG4gICAgICAgIHN0YXRlOiB7IC4uLnRhYmxlU3RhdGUsIC4uLnRhYmxlT3B0aW9ucy5zdGF0ZSB9LFxuICAgICAgICBvblN0YXRlQ2hhbmdlOiB1cGRhdGVyID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAgICAgICB1cGRhdGVyIGluc3RhbmNlb2YgRnVuY3Rpb24gPyB1cGRhdGVyKHRhYmxlU3RhdGUpIDogdXBkYXRlclxuICAgICAgICAgIHN0YXRlLnNldCh2YWx1ZSlcbiAgICAgICAgICByZXNvbHZlZE9wdGlvbnMub25TdGF0ZUNoYW5nZT8uKHVwZGF0ZXIpXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIGNvbnZlcnQgdGFibGUgaW5zdGFuY2UgdG8gc2lnbmFsIGZvciBwcm94aWZ5IHRvIGxpc3RlbiB0byBhbnkgdGFibGUgc3RhdGUgYW5kIG9wdGlvbnMgY2hhbmdlc1xuICAgIGNvbnN0IHRhYmxlU2lnbmFsID0gY29tcHV0ZWQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRhYmxlLnNldE9wdGlvbnModXBkYXRlZE9wdGlvbnMoKSlcbiAgICAgICAgcmV0dXJuIHRhYmxlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlcXVhbDogKCkgPT4gZmFsc2UsXG4gICAgICB9XG4gICAgKVxuXG4gICAgLy8gcHJveGlmeSBUYWJsZSBpbnN0YW5jZSB0byBwcm92aWRlIGFiaWxpdHkgZm9yIGNvbnN1bWVyIHRvIGxpc3RlbiB0byBhbnkgdGFibGUgc3RhdGUgY2hhbmdlc1xuICAgIHJldHVybiBwcm94aWZ5VGFibGUodGFibGVTaWduYWwpXG4gIH0pXG59XG4iXX0=
|
|
@@ -11,7 +11,7 @@ export function lazyInit(initializer) {
|
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
13
|
queueMicrotask(() => initializeObject());
|
|
14
|
-
|
|
14
|
+
const table = () => { };
|
|
15
15
|
return new Proxy(table, {
|
|
16
16
|
apply(target, thisArg, argArray) {
|
|
17
17
|
initializeObject();
|
|
@@ -40,4 +40,4 @@ export function lazyInit(initializer) {
|
|
|
40
40
|
},
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFtQixXQUFvQjtJQUM3RCxJQUFJLE1BQU0sR0FBYSxJQUFJLENBQUE7SUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBRXhDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQTtJQUV0QixPQUFPLElBQUksS0FBSyxDQUFJLEtBQVUsRUFBRTtRQUM5QixLQUFLLENBQUMsTUFBUyxFQUFFLE9BQVksRUFBRSxRQUFlO1lBQzVDLGdCQUFnQixFQUFFLENBQUE7WUFDbEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDakQsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFhLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ25CLGdCQUFnQixFQUFFLENBQUE7WUFDbEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDakQsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSTtZQUNULGdCQUFnQixFQUFFLENBQUE7WUFDbEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBQ0QsT0FBTztZQUNMLGdCQUFnQixFQUFFLENBQUE7WUFDbEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQVcsQ0FBQyxDQUFBO1FBQ3JDLENBQUM7UUFDRCx3QkFBd0I7WUFDdEIsT0FBTztnQkFDTCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQTtRQUNILENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBmcm9tIEB0YW5zdGFjay9hbmd1bGFyLXF1ZXJ5XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL1RhblN0YWNrL3F1ZXJ5L2Jsb2IvbWFpbi9wYWNrYWdlcy9hbmd1bGFyLXF1ZXJ5LWV4cGVyaW1lbnRhbC9zcmMvdXRpbC9sYXp5LWluaXQvbGF6eS1pbml0LnRzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF6eUluaXQ8VCBleHRlbmRzIG9iamVjdD4oaW5pdGlhbGl6ZXI6ICgpID0+IFQpOiBUIHtcbiAgbGV0IG9iamVjdDogVCB8IG51bGwgPSBudWxsXG5cbiAgY29uc3QgaW5pdGlhbGl6ZU9iamVjdCA9ICgpID0+IHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgb2JqZWN0ID0gdW50cmFja2VkKCgpID0+IGluaXRpYWxpemVyKCkpXG4gICAgfVxuICB9XG5cbiAgcXVldWVNaWNyb3Rhc2soKCkgPT4gaW5pdGlhbGl6ZU9iamVjdCgpKVxuXG4gIGNvbnN0IHRhYmxlID0gKCkgPT4ge31cblxuICByZXR1cm4gbmV3IFByb3h5PFQ+KHRhYmxlIGFzIFQsIHtcbiAgICBhcHBseSh0YXJnZXQ6IFQsIHRoaXNBcmc6IGFueSwgYXJnQXJyYXk6IGFueVtdKTogYW55IHtcbiAgICAgIGluaXRpYWxpemVPYmplY3QoKVxuICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkob2JqZWN0LCB0aGlzQXJnLCBhcmdBcnJheSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCBhcyBhbnksIHRoaXNBcmcsIGFyZ0FycmF5KVxuICAgIH0sXG4gICAgZ2V0KF8sIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICBpbml0aWFsaXplT2JqZWN0KClcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldChvYmplY3QgYXMgVCwgcHJvcCwgcmVjZWl2ZXIpXG4gICAgfSxcbiAgICBoYXMoXywgcHJvcCkge1xuICAgICAgaW5pdGlhbGl6ZU9iamVjdCgpXG4gICAgICByZXR1cm4gUmVmbGVjdC5oYXMob2JqZWN0IGFzIFQsIHByb3ApXG4gICAgfSxcbiAgICBvd25LZXlzKCkge1xuICAgICAgaW5pdGlhbGl6ZU9iamVjdCgpXG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKG9iamVjdCBhcyBUKVxuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG4iXX0=
|
package/dist/esm2022/proxy.mjs
CHANGED
|
@@ -15,7 +15,8 @@ export function proxifyTable(tableSignal) {
|
|
|
15
15
|
* excluding handlers as they do not retain any reactive value
|
|
16
16
|
*/
|
|
17
17
|
if (property.startsWith('get') &&
|
|
18
|
-
|
|
18
|
+
!property.endsWith('Handler') &&
|
|
19
|
+
!property.endsWith('Model')) {
|
|
19
20
|
const maybeFn = table[property];
|
|
20
21
|
if (typeof maybeFn === 'function') {
|
|
21
22
|
Object.defineProperty(target, property, {
|
|
@@ -79,4 +80,4 @@ function toComputed(signal, fn) {
|
|
|
79
80
|
function serializeArgs(...args) {
|
|
80
81
|
return JSON.stringify(args);
|
|
81
82
|
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLaEUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsV0FBNkI7SUFFN0IsTUFBTSxhQUFhLEdBQUcsV0FBNkIsQ0FBQTtJQUVuRCxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtRQUM5QixLQUFLO1lBQ0gsT0FBTyxXQUFXLEVBQUUsQ0FBQTtRQUN0QixDQUFDO1FBQ0QsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUF3QjtZQUNsQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6QixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3BDOzs7ZUFHRztZQUNILElBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDM0IsQ0FBQztnQkFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFxQixDQUFBO2dCQUNuRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7d0JBQ3RDLEtBQUssRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQzt3QkFDdkMsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLFVBQVUsRUFBRSxJQUFJO3FCQUNqQixDQUFDLENBQUE7b0JBQ0YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBQ0QsbUJBQW1CO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBb0I7WUFDekIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxPQUFPO1lBQ0wsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQ2hELENBQUM7UUFDRCx3QkFBd0I7WUFDdEIsT0FBTztnQkFDTCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQTtRQUNILENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsVUFBVSxDQUFJLE1BQXdCLEVBQUUsRUFBWTtJQUMzRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsS0FBSyxNQUFNLEVBQUUsQ0FBQTtZQUNiLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDYixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBb0MsRUFBRSxDQUFBO0lBRXpELE9BQU8sQ0FBQyxHQUFHLFNBQWdCLEVBQUUsRUFBRTtRQUM3QixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtRQUNsRCxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUE7UUFDMUMsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsS0FBSyxNQUFNLEVBQUUsQ0FBQTtZQUNiLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDekIsQ0FBQyxDQUFDLENBQUE7UUFFRixhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUFBO1FBRTlDLE9BQU8sY0FBYyxFQUFFLENBQUE7SUFDekIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEdBQUcsSUFBVztJQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCB0eXBlIFNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IHR5cGUgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svdGFibGUtY29yZSdcblxudHlwZSBUYWJsZVNpZ25hbDxUPiA9IFRhYmxlPFQ+ICYgU2lnbmFsPFRhYmxlPFQ+PlxuXG5leHBvcnQgZnVuY3Rpb24gcHJveGlmeVRhYmxlPFQ+KFxuICB0YWJsZVNpZ25hbDogU2lnbmFsPFRhYmxlPFQ+PlxuKTogVGFibGU8VD4gJiBTaWduYWw8VGFibGU8VD4+IHtcbiAgY29uc3QgaW50ZXJuYWxTdGF0ZSA9IHRhYmxlU2lnbmFsIGFzIFRhYmxlU2lnbmFsPFQ+XG5cbiAgcmV0dXJuIG5ldyBQcm94eShpbnRlcm5hbFN0YXRlLCB7XG4gICAgYXBwbHkoKSB7XG4gICAgICByZXR1cm4gdGFibGVTaWduYWwoKVxuICAgIH0sXG4gICAgZ2V0KHRhcmdldCwgcHJvcGVydHk6IGtleW9mIFRhYmxlPFQ+KTogYW55IHtcbiAgICAgIGlmICh0YXJnZXRbcHJvcGVydHldKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgICB9XG4gICAgICBjb25zdCB0YWJsZSA9IHVudHJhY2tlZCh0YWJsZVNpZ25hbClcbiAgICAgIC8qKlxuICAgICAgICogQXR0ZW1wdCB0byBjb252ZXJ0IGFsbCBhY2Nlc3NvcnMgaW50byBjb21wdXRlZCBvbmVzLFxuICAgICAgICogZXhjbHVkaW5nIGhhbmRsZXJzIGFzIHRoZXkgZG8gbm90IHJldGFpbiBhbnkgcmVhY3RpdmUgdmFsdWVcbiAgICAgICAqL1xuICAgICAgaWYgKFxuICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCdnZXQnKSAmJlxuICAgICAgICAhcHJvcGVydHkuZW5kc1dpdGgoJ0hhbmRsZXInKSAmJlxuICAgICAgICAhcHJvcGVydHkuZW5kc1dpdGgoJ01vZGVsJylcbiAgICAgICkge1xuICAgICAgICBjb25zdCBtYXliZUZuID0gdGFibGVbcHJvcGVydHldIGFzIEZ1bmN0aW9uIHwgbmV2ZXJcbiAgICAgICAgaWYgKHR5cGVvZiBtYXliZUZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHksIHtcbiAgICAgICAgICAgIHZhbHVlOiB0b0NvbXB1dGVkKHRhYmxlU2lnbmFsLCBtYXliZUZuKSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BlcnR5XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gKHRhcmdldFtwcm9wZXJ0eV0gPSB0YWJsZVtwcm9wZXJ0eV0pXG4gICAgfSxcbiAgICBoYXMoXywgcHJvcDoga2V5b2YgVGFibGU8VD4pIHtcbiAgICAgIHJldHVybiAhIXVudHJhY2tlZCh0YWJsZVNpZ25hbClbcHJvcF1cbiAgICB9LFxuICAgIG93bktleXMoKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHVudHJhY2tlZCh0YWJsZVNpZ25hbCkpXG4gICAgfSxcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9XG4gICAgfSxcbiAgfSlcbn1cblxuLyoqXG4gKiBIZXJlIHdlJ2xsIGhhbmRsZSBhbGwgdHlwZSBvZiBhY2Nlc3NvcnM6XG4gKiAtIDAgYXJndW1lbnQgLT4gZS5nLiB0YWJsZS5nZXRDYW5OZXh0UGFnZSgpKVxuICogLSAwfjEgYXJndW1lbnRzIC0+IGUuZy4gdGFibGUuZ2V0SXNTb21lUm93c1Bpbm5lZChwb3NpdGlvbj8pXG4gKiAtIDEgcmVxdWlyZWQgYXJndW1lbnQgLT4gZS5nLiB0YWJsZS5nZXRDb2x1bW4oY29sdW1uSWQpXG4gKiAtIDErIGFyZ3VtZW50IC0+IGUuZy4gdGFibGUuZ2V0Um93KGlkLCBzZWFyY2hBbGw/KVxuICpcbiAqIFNpbmNlIHdlIGFyZSBub3QgYWJsZSB0byBkZXRlY3QgYXV0b21hdGljYWxseSB0aGUgYWNjZXNzb3JzIHBhcmFtZXRlcnMsXG4gKiB3ZSdsbCB3cmFwIGFsbCBhY2Nlc3NvcnMgaW50byBhIGNhY2hlZCBmdW5jdGlvbiB3cmFwcGluZyBhIGNvbXB1dGVkXG4gKiB0aGF0IHJldHVybiBpdCdzIHZhbHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzXG4gKi9cbmZ1bmN0aW9uIHRvQ29tcHV0ZWQ8VD4oc2lnbmFsOiBTaWduYWw8VGFibGU8VD4+LCBmbjogRnVuY3Rpb24pIHtcbiAgY29uc3QgaGFzQXJncyA9IGZuLmxlbmd0aCA+IDBcbiAgaWYgKCFoYXNBcmdzKSB7XG4gICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHZvaWQgc2lnbmFsKClcbiAgICAgIHJldHVybiBmbigpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbXB1dGVkQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4gPSB7fVxuXG4gIHJldHVybiAoLi4uYXJnc0FycmF5OiBhbnlbXSkgPT4ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRBcmdzID0gc2VyaWFsaXplQXJncyguLi5hcmdzQXJyYXkpXG4gICAgaWYgKGNvbXB1dGVkQ2FjaGUuaGFzT3duUHJvcGVydHkoc2VyaWFsaXplZEFyZ3MpKSB7XG4gICAgICByZXR1cm4gY29tcHV0ZWRDYWNoZVtzZXJpYWxpemVkQXJnc10/LigpXG4gICAgfVxuICAgIGNvbnN0IGNvbXB1dGVkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgdm9pZCBzaWduYWwoKVxuICAgICAgcmV0dXJuIGZuKC4uLmFyZ3NBcnJheSlcbiAgICB9KVxuXG4gICAgY29tcHV0ZWRDYWNoZVtzZXJpYWxpemVkQXJnc10gPSBjb21wdXRlZFNpZ25hbFxuXG4gICAgcmV0dXJuIGNvbXB1dGVkU2lnbmFsKClcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVBcmdzKC4uLmFyZ3M6IGFueVtdKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzKVxufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { untracked, computed, inject, Injector, ComponentRef, ChangeDetectorRef,
|
|
3
|
-
import {
|
|
2
|
+
import { untracked, computed, inject, Injector, ComponentRef, ChangeDetectorRef, TemplateRef, Type, isSignal, ViewContainerRef, Directive, Inject, Input, InjectionToken, signal } from '@angular/core';
|
|
3
|
+
import { _createTable } from '@tanstack/table-core';
|
|
4
4
|
export * from '@tanstack/table-core';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -15,7 +15,7 @@ function lazyInit(initializer) {
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
queueMicrotask(() => initializeObject());
|
|
18
|
-
|
|
18
|
+
const table = () => { };
|
|
19
19
|
return new Proxy(table, {
|
|
20
20
|
apply(target, thisArg, argArray) {
|
|
21
21
|
initializeObject();
|
|
@@ -61,7 +61,8 @@ function proxifyTable(tableSignal) {
|
|
|
61
61
|
* excluding handlers as they do not retain any reactive value
|
|
62
62
|
*/
|
|
63
63
|
if (property.startsWith('get') &&
|
|
64
|
-
|
|
64
|
+
!property.endsWith('Handler') &&
|
|
65
|
+
!property.endsWith('Model')) {
|
|
65
66
|
const maybeFn = table[property];
|
|
66
67
|
if (typeof maybeFn === 'function') {
|
|
67
68
|
Object.defineProperty(target, property, {
|
|
@@ -137,30 +138,28 @@ class FlexRenderDirective {
|
|
|
137
138
|
this.templateRef = templateRef;
|
|
138
139
|
}
|
|
139
140
|
ref = null;
|
|
140
|
-
|
|
141
|
-
this.ref = this.render();
|
|
142
|
-
}
|
|
143
|
-
ngDoCheck() {
|
|
141
|
+
ngOnChanges(changes) {
|
|
144
142
|
if (this.ref instanceof ComponentRef) {
|
|
145
143
|
this.ref.injector.get(ChangeDetectorRef).markForCheck();
|
|
146
144
|
}
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
if (!changes['content']) {
|
|
146
|
+
return;
|
|
149
147
|
}
|
|
148
|
+
this.render();
|
|
150
149
|
}
|
|
151
150
|
render() {
|
|
152
151
|
this.viewContainerRef.clear();
|
|
153
152
|
const { content, props } = this;
|
|
154
|
-
if (
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (typeof content === 'string' || typeof content === 'number') {
|
|
158
|
-
return this.renderStringContent();
|
|
153
|
+
if (content === null || content === undefined) {
|
|
154
|
+
this.ref = null;
|
|
155
|
+
return;
|
|
159
156
|
}
|
|
160
157
|
if (typeof content === 'function') {
|
|
161
158
|
return this.renderContent(content(props));
|
|
162
159
|
}
|
|
163
|
-
|
|
160
|
+
else {
|
|
161
|
+
return this.renderContent(content);
|
|
162
|
+
}
|
|
164
163
|
}
|
|
165
164
|
renderContent(content) {
|
|
166
165
|
if (typeof content === 'string' || typeof content === 'number') {
|
|
@@ -172,6 +171,9 @@ class FlexRenderDirective {
|
|
|
172
171
|
else if (content instanceof FlexRenderComponent) {
|
|
173
172
|
return this.renderComponent(content);
|
|
174
173
|
}
|
|
174
|
+
else if (content instanceof Type) {
|
|
175
|
+
return this.renderCustomComponent(content);
|
|
176
|
+
}
|
|
175
177
|
else {
|
|
176
178
|
return null;
|
|
177
179
|
}
|
|
@@ -209,6 +211,20 @@ class FlexRenderDirective {
|
|
|
209
211
|
}
|
|
210
212
|
return componentRef;
|
|
211
213
|
}
|
|
214
|
+
renderCustomComponent(component) {
|
|
215
|
+
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
216
|
+
injector: this.injector,
|
|
217
|
+
});
|
|
218
|
+
for (const prop in this.props) {
|
|
219
|
+
// Only signal based input can be added here
|
|
220
|
+
if (componentRef.instance?.hasOwnProperty(prop) &&
|
|
221
|
+
// @ts-ignore
|
|
222
|
+
isSignal(componentRef.instance[prop])) {
|
|
223
|
+
componentRef.setInput(prop, this.props[prop]);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return componentRef;
|
|
227
|
+
}
|
|
212
228
|
getTemplateRefContext() {
|
|
213
229
|
const getContext = () => this.props;
|
|
214
230
|
return {
|
|
@@ -217,16 +233,22 @@ class FlexRenderDirective {
|
|
|
217
233
|
},
|
|
218
234
|
};
|
|
219
235
|
}
|
|
220
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
221
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
236
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FlexRenderDirective, deps: [{ token: ViewContainerRef }, { token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
237
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, usesOnChanges: true, ngImport: i0 });
|
|
222
238
|
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
224
240
|
type: Directive,
|
|
225
241
|
args: [{
|
|
226
242
|
selector: '[flexRender]',
|
|
227
243
|
standalone: true,
|
|
228
244
|
}]
|
|
229
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef
|
|
245
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef, decorators: [{
|
|
246
|
+
type: Inject,
|
|
247
|
+
args: [ViewContainerRef]
|
|
248
|
+
}] }, { type: i0.TemplateRef, decorators: [{
|
|
249
|
+
type: Inject,
|
|
250
|
+
args: [TemplateRef]
|
|
251
|
+
}] }], propDecorators: { content: [{
|
|
230
252
|
type: Input,
|
|
231
253
|
args: [{ required: true, alias: 'flexRender' }]
|
|
232
254
|
}], props: [{
|
|
@@ -251,7 +273,7 @@ function injectFlexRenderContext() {
|
|
|
251
273
|
return inject(FlexRenderComponentProps);
|
|
252
274
|
}
|
|
253
275
|
|
|
254
|
-
function
|
|
276
|
+
function injectTable(options) {
|
|
255
277
|
return lazyInit(() => {
|
|
256
278
|
const resolvedOptions = {
|
|
257
279
|
state: {},
|
|
@@ -259,7 +281,7 @@ function createAngularTable(options) {
|
|
|
259
281
|
renderFallbackValue: null,
|
|
260
282
|
...options(),
|
|
261
283
|
};
|
|
262
|
-
const table =
|
|
284
|
+
const table = _createTable(resolvedOptions);
|
|
263
285
|
// By default, manage table state here using the table's initial state
|
|
264
286
|
const state = signal(table.initialState);
|
|
265
287
|
// Compose table options using computed.
|
|
@@ -297,5 +319,5 @@ function createAngularTable(options) {
|
|
|
297
319
|
* Generated bundle index. Do not edit.
|
|
298
320
|
*/
|
|
299
321
|
|
|
300
|
-
export { FlexRenderComponent, FlexRenderDirective,
|
|
322
|
+
export { FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, injectTable };
|
|
301
323
|
//# sourceMappingURL=tanstack-angular-table.mjs.map
|
|
@@ -1 +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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"}
|
|
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 const 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') &&\n !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 EmbeddedViewRef,\n Inject,\n inject,\n InjectionToken,\n Injector,\n Input,\n isSignal,\n type OnChanges,\n type SimpleChanges,\n TemplateRef,\n Type,\n ViewContainerRef,\n} from '@angular/core'\n\nexport type FlexRenderContent<TProps extends NonNullable<unknown>> =\n | string\n | number\n | Type<TProps>\n | FlexRenderComponent<TProps>\n | TemplateRef<{ $implicit: TProps }>\n | null\n | undefined\n\n@Directive({\n selector: '[flexRender]',\n standalone: true,\n})\nexport class FlexRenderDirective<TProps extends NonNullable<unknown>>\n implements OnChanges\n{\n @Input({ required: true, alias: 'flexRender' })\n content:\n | number\n | string\n | ((props: TProps) => FlexRenderContent<TProps>)\n | null\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 @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n @Inject(TemplateRef)\n private readonly templateRef: TemplateRef<any>\n ) {}\n\n ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null = null\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.ref instanceof ComponentRef) {\n this.ref.injector.get(ChangeDetectorRef).markForCheck()\n }\n if (!changes['content']) {\n return\n }\n this.render()\n }\n\n render() {\n this.viewContainerRef.clear()\n const { content, props } = this\n if (content === null || content === undefined) {\n this.ref = null\n return\n }\n if (typeof content === 'function') {\n return this.renderContent(content(props))\n } else {\n return this.renderContent(content)\n }\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 if (content instanceof Type) {\n return this.renderCustomComponent(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 renderCustomComponent(\n component: Type<unknown>\n ): ComponentRef<unknown> {\n const componentRef = this.viewContainerRef.createComponent(component, {\n injector: this.injector,\n })\n for (const prop in this.props) {\n // Only signal based input can be added here\n if (\n componentRef.instance?.hasOwnProperty(prop) &&\n // @ts-ignore\n isSignal(componentRef.instance[prop])\n ) {\n componentRef.setInput(prop, this.props[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, type Signal, 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 type FlexRenderContent,\n FlexRenderComponent,\n FlexRenderDirective,\n injectFlexRenderContext,\n} from './flex-render'\n\nexport function injectTable<TData extends RowData>(\n options: () => TableOptions<TData>\n): Table<TData> & Signal<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/dist/flex-render.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { ComponentRef,
|
|
1
|
+
import { ComponentRef, EmbeddedViewRef, Injector, type OnChanges, type SimpleChanges, TemplateRef, Type, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
type FlexRenderContent<TProps extends NonNullable<unknown>> = string | number | FlexRenderComponent<TProps> | TemplateRef<{
|
|
3
|
+
export type FlexRenderContent<TProps extends NonNullable<unknown>> = string | number | Type<TProps> | FlexRenderComponent<TProps> | TemplateRef<{
|
|
4
4
|
$implicit: TProps;
|
|
5
|
-
}> | null;
|
|
6
|
-
export declare class FlexRenderDirective<TProps extends NonNullable<unknown>> implements
|
|
7
|
-
private viewContainerRef;
|
|
8
|
-
private templateRef;
|
|
9
|
-
content: number | string | ((props: TProps) => FlexRenderContent<TProps>) | undefined;
|
|
5
|
+
}> | null | undefined;
|
|
6
|
+
export declare class FlexRenderDirective<TProps extends NonNullable<unknown>> implements OnChanges {
|
|
7
|
+
private readonly viewContainerRef;
|
|
8
|
+
private readonly templateRef;
|
|
9
|
+
content: number | string | ((props: TProps) => FlexRenderContent<TProps>) | null | undefined;
|
|
10
10
|
props: TProps;
|
|
11
11
|
injector: Injector;
|
|
12
12
|
constructor(viewContainerRef: ViewContainerRef, templateRef: TemplateRef<any>);
|
|
13
13
|
ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null;
|
|
14
|
-
|
|
15
|
-
ngDoCheck(): void;
|
|
14
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
16
15
|
render(): ComponentRef<unknown> | EmbeddedViewRef<unknown>;
|
|
17
16
|
private renderContent;
|
|
18
17
|
private renderStringContent;
|
|
19
18
|
private renderComponent;
|
|
19
|
+
private renderCustomComponent;
|
|
20
20
|
private getTemplateRefContext;
|
|
21
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<FlexRenderDirective<any>, never>;
|
|
22
22
|
static ɵdir: i0.ɵɵDirectiveDeclaration<FlexRenderDirective<any>, "[flexRender]", never, { "content": { "alias": "flexRender"; "required": true; }; "props": { "alias": "flexRenderProps"; "required": true; }; "injector": { "alias": "flexRenderInjector"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -28,4 +28,3 @@ export declare class FlexRenderComponent<T extends NonNullable<unknown>> {
|
|
|
28
28
|
constructor(component: Type<unknown>, inputs?: T, injector?: Injector);
|
|
29
29
|
}
|
|
30
30
|
export declare function injectFlexRenderContext<T extends NonNullable<unknown>>(): T;
|
|
31
|
-
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
1
2
|
import { RowData, TableOptions, type Table } from '@tanstack/table-core';
|
|
2
3
|
export * from '@tanstack/table-core';
|
|
3
|
-
export { FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, } from './flex-render';
|
|
4
|
-
export declare function
|
|
4
|
+
export { type FlexRenderContent, FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, } from './flex-render';
|
|
5
|
+
export declare function injectTable<TData extends RowData>(options: () => TableOptions<TData>): Table<TData> & Signal<Table<TData>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/angular-table",
|
|
3
|
-
"version": "9.0.0-alpha.
|
|
3
|
+
"version": "9.0.0-alpha.10",
|
|
4
4
|
"description": "Headless UI for building powerful tables & datagrids for Angular.",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,12 +42,15 @@
|
|
|
42
42
|
"src"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"tslib": "^2.6.
|
|
46
|
-
"@tanstack/table-core": "9.0.0-alpha.
|
|
45
|
+
"tslib": "^2.6.3",
|
|
46
|
+
"@tanstack/table-core": "9.0.0-alpha.10"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@angular
|
|
50
|
-
"
|
|
49
|
+
"@analogjs/vite-plugin-angular": "^1.5.0",
|
|
50
|
+
"@angular/core": "^18.0.3",
|
|
51
|
+
"@angular/platform-browser": "^18.0.3",
|
|
52
|
+
"@angular/platform-browser-dynamic": "^18.0.3",
|
|
53
|
+
"ng-packagr": "^18.0.0"
|
|
51
54
|
},
|
|
52
55
|
"peerDependencies": {
|
|
53
56
|
"@angular/core": ">=17"
|
package/src/flex-render.ts
CHANGED
|
@@ -2,37 +2,42 @@ import {
|
|
|
2
2
|
ChangeDetectorRef,
|
|
3
3
|
ComponentRef,
|
|
4
4
|
Directive,
|
|
5
|
-
type DoCheck,
|
|
6
5
|
EmbeddedViewRef,
|
|
6
|
+
Inject,
|
|
7
7
|
inject,
|
|
8
8
|
InjectionToken,
|
|
9
9
|
Injector,
|
|
10
10
|
Input,
|
|
11
|
-
|
|
11
|
+
isSignal,
|
|
12
|
+
type OnChanges,
|
|
13
|
+
type SimpleChanges,
|
|
12
14
|
TemplateRef,
|
|
13
|
-
|
|
15
|
+
Type,
|
|
14
16
|
ViewContainerRef,
|
|
15
17
|
} from '@angular/core'
|
|
16
18
|
|
|
17
|
-
type FlexRenderContent<TProps extends NonNullable<unknown>> =
|
|
19
|
+
export type FlexRenderContent<TProps extends NonNullable<unknown>> =
|
|
18
20
|
| string
|
|
19
21
|
| number
|
|
22
|
+
| Type<TProps>
|
|
20
23
|
| FlexRenderComponent<TProps>
|
|
21
24
|
| TemplateRef<{ $implicit: TProps }>
|
|
22
25
|
| null
|
|
26
|
+
| undefined
|
|
23
27
|
|
|
24
28
|
@Directive({
|
|
25
29
|
selector: '[flexRender]',
|
|
26
30
|
standalone: true,
|
|
27
31
|
})
|
|
28
32
|
export class FlexRenderDirective<TProps extends NonNullable<unknown>>
|
|
29
|
-
implements
|
|
33
|
+
implements OnChanges
|
|
30
34
|
{
|
|
31
35
|
@Input({ required: true, alias: 'flexRender' })
|
|
32
36
|
content:
|
|
33
37
|
| number
|
|
34
38
|
| string
|
|
35
39
|
| ((props: TProps) => FlexRenderContent<TProps>)
|
|
40
|
+
| null
|
|
36
41
|
| undefined = undefined
|
|
37
42
|
|
|
38
43
|
@Input({ required: true, alias: 'flexRenderProps' })
|
|
@@ -42,38 +47,36 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
|
|
|
42
47
|
injector: Injector = inject(Injector)
|
|
43
48
|
|
|
44
49
|
constructor(
|
|
45
|
-
|
|
46
|
-
private
|
|
50
|
+
@Inject(ViewContainerRef)
|
|
51
|
+
private readonly viewContainerRef: ViewContainerRef,
|
|
52
|
+
@Inject(TemplateRef)
|
|
53
|
+
private readonly templateRef: TemplateRef<any>
|
|
47
54
|
) {}
|
|
48
55
|
|
|
49
56
|
ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null = null
|
|
50
57
|
|
|
51
|
-
|
|
52
|
-
this.ref = this.render()
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
ngDoCheck() {
|
|
58
|
+
ngOnChanges(changes: SimpleChanges) {
|
|
56
59
|
if (this.ref instanceof ComponentRef) {
|
|
57
60
|
this.ref.injector.get(ChangeDetectorRef).markForCheck()
|
|
58
|
-
} else if (this.ref instanceof EmbeddedViewRef) {
|
|
59
|
-
this.ref.markForCheck()
|
|
60
61
|
}
|
|
62
|
+
if (!changes['content']) {
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
this.render()
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
render() {
|
|
64
69
|
this.viewContainerRef.clear()
|
|
65
70
|
const { content, props } = this
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (typeof content === 'string' || typeof content === 'number') {
|
|
71
|
-
return this.renderStringContent()
|
|
71
|
+
if (content === null || content === undefined) {
|
|
72
|
+
this.ref = null
|
|
73
|
+
return
|
|
72
74
|
}
|
|
73
75
|
if (typeof content === 'function') {
|
|
74
76
|
return this.renderContent(content(props))
|
|
77
|
+
} else {
|
|
78
|
+
return this.renderContent(content)
|
|
75
79
|
}
|
|
76
|
-
return null
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
private renderContent(content: FlexRenderContent<TProps>) {
|
|
@@ -87,6 +90,8 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
|
|
|
87
90
|
)
|
|
88
91
|
} else if (content instanceof FlexRenderComponent) {
|
|
89
92
|
return this.renderComponent(content)
|
|
93
|
+
} else if (content instanceof Type) {
|
|
94
|
+
return this.renderCustomComponent(content)
|
|
90
95
|
} else {
|
|
91
96
|
return null
|
|
92
97
|
}
|
|
@@ -133,6 +138,25 @@ export class FlexRenderDirective<TProps extends NonNullable<unknown>>
|
|
|
133
138
|
return componentRef
|
|
134
139
|
}
|
|
135
140
|
|
|
141
|
+
private renderCustomComponent(
|
|
142
|
+
component: Type<unknown>
|
|
143
|
+
): ComponentRef<unknown> {
|
|
144
|
+
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
145
|
+
injector: this.injector,
|
|
146
|
+
})
|
|
147
|
+
for (const prop in this.props) {
|
|
148
|
+
// Only signal based input can be added here
|
|
149
|
+
if (
|
|
150
|
+
componentRef.instance?.hasOwnProperty(prop) &&
|
|
151
|
+
// @ts-ignore
|
|
152
|
+
isSignal(componentRef.instance[prop])
|
|
153
|
+
) {
|
|
154
|
+
componentRef.setInput(prop, this.props[prop])
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return componentRef
|
|
158
|
+
}
|
|
159
|
+
|
|
136
160
|
private getTemplateRefContext() {
|
|
137
161
|
const getContext = () => this.props
|
|
138
162
|
return {
|
package/src/index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { computed, signal } from '@angular/core'
|
|
1
|
+
import { computed, type Signal, signal } from '@angular/core'
|
|
2
2
|
import {
|
|
3
3
|
RowData,
|
|
4
4
|
TableOptions,
|
|
5
5
|
TableOptionsResolved,
|
|
6
6
|
TableState,
|
|
7
|
-
|
|
7
|
+
_createTable,
|
|
8
8
|
type Table,
|
|
9
9
|
} from '@tanstack/table-core'
|
|
10
10
|
import { lazyInit } from './lazy-signal-initializer'
|
|
@@ -13,14 +13,15 @@ import { proxifyTable } from './proxy'
|
|
|
13
13
|
export * from '@tanstack/table-core'
|
|
14
14
|
|
|
15
15
|
export {
|
|
16
|
+
type FlexRenderContent,
|
|
16
17
|
FlexRenderComponent,
|
|
17
18
|
FlexRenderDirective,
|
|
18
19
|
injectFlexRenderContext,
|
|
19
20
|
} from './flex-render'
|
|
20
21
|
|
|
21
|
-
export function
|
|
22
|
+
export function injectTable<TData extends RowData>(
|
|
22
23
|
options: () => TableOptions<TData>
|
|
23
|
-
): Table<TData> {
|
|
24
|
+
): Table<TData> & Signal<Table<TData>> {
|
|
24
25
|
return lazyInit(() => {
|
|
25
26
|
const resolvedOptions = {
|
|
26
27
|
state: {},
|
|
@@ -29,7 +30,7 @@ export function createAngularTable<TData extends RowData>(
|
|
|
29
30
|
...options(),
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
const table =
|
|
33
|
+
const table = _createTable(resolvedOptions)
|
|
33
34
|
|
|
34
35
|
// By default, manage table state here using the table's initial state
|
|
35
36
|
const state = signal<TableState>(table.initialState)
|
|
@@ -15,7 +15,7 @@ export function lazyInit<T extends object>(initializer: () => T): T {
|
|
|
15
15
|
|
|
16
16
|
queueMicrotask(() => initializeObject())
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
const table = () => {}
|
|
19
19
|
|
|
20
20
|
return new Proxy<T>(table as T, {
|
|
21
21
|
apply(target: T, thisArg: any, argArray: any[]): any {
|
package/src/proxy.ts
CHANGED
|
@@ -23,7 +23,8 @@ export function proxifyTable<T>(
|
|
|
23
23
|
*/
|
|
24
24
|
if (
|
|
25
25
|
property.startsWith('get') &&
|
|
26
|
-
|
|
26
|
+
!property.endsWith('Handler') &&
|
|
27
|
+
!property.endsWith('Model')
|
|
27
28
|
) {
|
|
28
29
|
const maybeFn = table[property] as Function | never
|
|
29
30
|
if (typeof maybeFn === 'function') {
|