@tanstack/angular-table 9.0.0-alpha.5 → 9.0.0-alpha.51
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/README.md +127 -0
- package/dist/README.md +127 -0
- package/dist/fesm2022/tanstack-angular-table-static-functions.mjs +6 -0
- package/dist/fesm2022/tanstack-angular-table-static-functions.mjs.map +1 -0
- package/dist/fesm2022/tanstack-angular-table.mjs +1357 -242
- package/dist/fesm2022/tanstack-angular-table.mjs.map +1 -1
- package/dist/types/tanstack-angular-table-static-functions.d.ts +1 -0
- package/dist/types/tanstack-angular-table.d.ts +793 -0
- package/package.json +39 -19
- package/skills/angular/angular-rendering-directives/SKILL.md +415 -0
- package/skills/angular/angular-rendering-directives/references/content-shapes.md +142 -0
- package/skills/angular/angular-rendering-directives/references/create-table-hook-registries.md +89 -0
- package/skills/angular/angular-rendering-directives/references/di-tokens.md +171 -0
- package/skills/angular/angular-rendering-directives/references/flex-render-component-options.md +64 -0
- package/skills/angular/client-to-server/SKILL.md +467 -0
- package/skills/angular/compose-with-tanstack-query/SKILL.md +482 -0
- package/skills/angular/compose-with-tanstack-store/SKILL.md +397 -0
- package/skills/angular/compose-with-tanstack-virtual/SKILL.md +400 -0
- package/skills/angular/getting-started/SKILL.md +496 -0
- package/skills/angular/getting-started/references/feature-row-model-mapping.md +48 -0
- package/skills/angular/migrate-v8-to-v9/SKILL.md +419 -0
- package/skills/angular/migrate-v8-to-v9/references/v8-to-v9-mapping.md +261 -0
- package/skills/angular/production-readiness/SKILL.md +469 -0
- package/skills/angular/table-state/SKILL.md +429 -0
- package/skills/angular/table-state/references/external-atoms-and-app-hook.md +152 -0
- package/src/flex-render/context.ts +14 -0
- package/src/flex-render/flags.ts +34 -0
- package/src/flex-render/flexRenderComponent.ts +288 -0
- package/src/flex-render/flexRenderComponentFactory.ts +251 -0
- package/src/flex-render/renderer.ts +393 -0
- package/src/flex-render/view.ts +226 -0
- package/src/flexRender.ts +124 -0
- package/src/helpers/cell.ts +104 -0
- package/src/helpers/createTableHook.ts +499 -0
- package/src/helpers/flexRenderCell.ts +136 -0
- package/src/helpers/header.ts +99 -0
- package/src/helpers/table.ts +85 -0
- package/src/index.ts +23 -70
- package/src/injectTable.ts +206 -0
- package/src/{lazy-signal-initializer.ts → lazySignalInitializer.ts} +2 -2
- package/src/reactivity.ts +147 -0
- package/static-functions/index.ts +1 -0
- package/static-functions/ng-package.json +6 -0
- package/dist/esm2022/flex-render.mjs +0 -150
- package/dist/esm2022/index.mjs +0 -48
- package/dist/esm2022/lazy-signal-initializer.mjs +0 -43
- package/dist/esm2022/proxy.mjs +0 -83
- package/dist/esm2022/tanstack-angular-table.mjs +0 -5
- package/dist/flex-render.d.ts +0 -31
- package/dist/index.d.ts +0 -5
- package/dist/lazy-signal-initializer.d.ts +0 -5
- package/dist/proxy.d.ts +0 -3
- package/src/__tests__/createAngularTable.test.ts +0 -95
- package/src/__tests__/flex-render.test.ts +0 -178
- package/src/__tests__/lazy-init.test.ts +0 -124
- package/src/__tests__/test-setup.ts +0 -12
- package/src/__tests__/test-utils.ts +0 -62
- package/src/flex-render.ts +0 -187
- package/src/proxy.ts +0 -97
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ComponentRef, Directive, EmbeddedViewRef, Inject, InjectionToken, Injector, Input, TemplateRef, Type, ViewContainerRef, inject, isSignal, } 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 if (content instanceof Type) {
|
|
50
|
-
return this.renderCustomComponent(content);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
renderStringContent() {
|
|
57
|
-
const context = () => {
|
|
58
|
-
return typeof this.content === 'string' ||
|
|
59
|
-
typeof this.content === 'number'
|
|
60
|
-
? this.content
|
|
61
|
-
: this.content?.(this.props);
|
|
62
|
-
};
|
|
63
|
-
return this.viewContainerRef.createEmbeddedView(this.templateRef, {
|
|
64
|
-
get $implicit() {
|
|
65
|
-
return context();
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
renderComponent(flexRenderComponent) {
|
|
70
|
-
const { component, inputs, injector } = flexRenderComponent;
|
|
71
|
-
const getContext = () => this.props;
|
|
72
|
-
const proxy = new Proxy(this.props, {
|
|
73
|
-
get: (_, key) => getContext()?.[key],
|
|
74
|
-
});
|
|
75
|
-
const componentInjector = Injector.create({
|
|
76
|
-
parent: injector ?? this.injector,
|
|
77
|
-
providers: [{ provide: FlexRenderComponentProps, useValue: proxy }],
|
|
78
|
-
});
|
|
79
|
-
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
80
|
-
injector: componentInjector,
|
|
81
|
-
});
|
|
82
|
-
for (const prop in inputs) {
|
|
83
|
-
if (componentRef.instance?.hasOwnProperty(prop)) {
|
|
84
|
-
componentRef.setInput(prop, inputs[prop]);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return componentRef;
|
|
88
|
-
}
|
|
89
|
-
renderCustomComponent(component) {
|
|
90
|
-
const componentRef = this.viewContainerRef.createComponent(component, {
|
|
91
|
-
injector: this.injector,
|
|
92
|
-
});
|
|
93
|
-
for (const prop in this.props) {
|
|
94
|
-
// Only signal based input can be added here
|
|
95
|
-
if (componentRef.instance?.hasOwnProperty(prop) &&
|
|
96
|
-
// @ts-ignore
|
|
97
|
-
isSignal(componentRef.instance[prop])) {
|
|
98
|
-
componentRef.setInput(prop, this.props[prop]);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return componentRef;
|
|
102
|
-
}
|
|
103
|
-
getTemplateRefContext() {
|
|
104
|
-
const getContext = () => this.props;
|
|
105
|
-
return {
|
|
106
|
-
get $implicit() {
|
|
107
|
-
return getContext();
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FlexRenderDirective, deps: [{ token: ViewContainerRef }, { token: TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
112
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.3", type: FlexRenderDirective, isStandalone: true, selector: "[flexRender]", inputs: { content: ["flexRender", "content"], props: ["flexRenderProps", "props"], injector: ["flexRenderInjector", "injector"] }, ngImport: i0 });
|
|
113
|
-
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: FlexRenderDirective, decorators: [{
|
|
115
|
-
type: Directive,
|
|
116
|
-
args: [{
|
|
117
|
-
selector: '[flexRender]',
|
|
118
|
-
standalone: true,
|
|
119
|
-
}]
|
|
120
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef, decorators: [{
|
|
121
|
-
type: Inject,
|
|
122
|
-
args: [ViewContainerRef]
|
|
123
|
-
}] }, { type: i0.TemplateRef, decorators: [{
|
|
124
|
-
type: Inject,
|
|
125
|
-
args: [TemplateRef]
|
|
126
|
-
}] }], propDecorators: { content: [{
|
|
127
|
-
type: Input,
|
|
128
|
-
args: [{ required: true, alias: 'flexRender' }]
|
|
129
|
-
}], props: [{
|
|
130
|
-
type: Input,
|
|
131
|
-
args: [{ required: true, alias: 'flexRenderProps' }]
|
|
132
|
-
}], injector: [{
|
|
133
|
-
type: Input,
|
|
134
|
-
args: [{ required: false, alias: 'flexRenderInjector' }]
|
|
135
|
-
}] } });
|
|
136
|
-
export class FlexRenderComponent {
|
|
137
|
-
component;
|
|
138
|
-
inputs;
|
|
139
|
-
injector;
|
|
140
|
-
constructor(component, inputs = {}, injector) {
|
|
141
|
-
this.component = component;
|
|
142
|
-
this.inputs = inputs;
|
|
143
|
-
this.injector = injector;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
const FlexRenderComponentProps = new InjectionToken('[@tanstack/angular-table] Flex render component context props');
|
|
147
|
-
export function injectFlexRenderContext() {
|
|
148
|
-
return inject(FlexRenderComponentProps);
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxleC1yZW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULGVBQWUsRUFDZixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFFBQVEsR0FHVCxNQUFNLGVBQWUsQ0FBQTs7QUFldEIsTUFBTSxPQUFPLG1CQUFtQjtJQWtCWDtJQUVBO0lBaEJuQixPQUFPLEdBSVMsU0FBUyxDQUFBO0lBR3pCLEtBQUssR0FBVyxFQUFZLENBQUE7SUFHNUIsUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVyQyxZQUVtQixnQkFBa0MsRUFFbEMsV0FBNkI7UUFGN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUVsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFDN0MsQ0FBQztJQUVKLEdBQUcsR0FBNkQsSUFBSSxDQUFBO0lBRXBFLFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLEdBQUcsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtB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QixXQUFXOzJGQW5CVixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBa0JJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFFdkIsTUFBTTsyQkFBQyxXQUFXO3lDQWZyQixPQUFPO3NCQUROLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBUTlDLEtBQUs7c0JBREosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUluRCxRQUFRO3NCQURQLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTs7QUFnSXpELE1BQU0sT0FBTyxtQkFBbUI7SUFFbkI7SUFDQTtJQUNBO0lBSFgsWUFDVyxTQUF3QixFQUN4QixTQUFZLEVBQU8sRUFDbkIsUUFBbUI7UUFGbkIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVc7SUFDM0IsQ0FBQztDQUNMO0FBRUQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDakQsK0RBQStELENBQ2hFLENBQUE7QUFFRCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sTUFBTSxDQUFJLHdCQUF3QixDQUFDLENBQUE7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBpbmplY3QsXG4gIGlzU2lnbmFsLFxuICB0eXBlIERvQ2hlY2ssXG4gIHR5cGUgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5leHBvcnQgdHlwZSBGbGV4UmVuZGVyQ29udGVudDxUUHJvcHMgZXh0ZW5kcyBOb25OdWxsYWJsZTx1bmtub3duPj4gPVxuICB8IHN0cmluZ1xuICB8IG51bWJlclxuICB8IFR5cGU8VFByb3BzPlxuICB8IEZsZXhSZW5kZXJDb21wb25lbnQ8VFByb3BzPlxuICB8IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUUHJvcHMgfT5cbiAgfCBudWxsXG4gIHwgdW5kZWZpbmVkXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmbGV4UmVuZGVyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZsZXhSZW5kZXJEaXJlY3RpdmU8VFByb3BzIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+XG4gIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrXG57XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlLCBhbGlhczogJ2ZsZXhSZW5kZXInIH0pXG4gIGNvbnRlbnQ6XG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgKChwcm9wczogVFByb3BzKSA9PiBGbGV4UmVuZGVyQ29udGVudDxUUHJvcHM+KVxuICAgIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUsIGFsaWFzOiAnZmxleFJlbmRlclByb3BzJyB9KVxuICBwcm9wczogVFByb3BzID0ge30gYXMgVFByb3BzXG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IGZhbHNlLCBhbGlhczogJ2ZsZXhSZW5kZXJJbmplY3RvcicgfSlcbiAgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVmlld0NvbnRhaW5lclJlZilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQEluamVjdChUZW1wbGF0ZVJlZilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+XG4gICkge31cblxuICByZWY/OiBDb21wb25lbnRSZWY8dW5rbm93bj4gfCBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbFxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVmID0gdGhpcy5yZW5kZXIoKVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLnJlZiBpbnN0YW5jZW9mIENvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5yZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5tYXJrRm9yQ2hlY2soKVxuICAgIH0gZWxzZSBpZiAodGhpcy5yZWYgaW5zdGFuY2VvZiBFbWJlZGRlZFZpZXdSZWYpIHtcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpXG4gICAgY29uc3QgeyBjb250ZW50LCBwcm9wcyB9ID0gdGhpc1xuICAgIGlmICghdGhpcy5jb250ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNvbnRlbnQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJTdHJpbmdDb250ZW50KClcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJDb250ZW50KGNvbnRlbnQocHJvcHMpKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDb250ZW50KGNvbnRlbnQ6IEZsZXhSZW5kZXJDb250ZW50PFRQcm9wcz4pIHtcbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb250ZW50ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyU3RyaW5nQ29udGVudCgpXG4gICAgfVxuICAgIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIHJldHVybiB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICBjb250ZW50LFxuICAgICAgICB0aGlzLmdldFRlbXBsYXRlUmVmQ29udGV4dCgpXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgRmxleFJlbmRlckNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29tcG9uZW50KGNvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgVHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ3VzdG9tQ29tcG9uZW50KGNvbnRlbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdHJpbmdDb250ZW50KCk6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPiB7XG4gICAgY29uc3QgY29udGV4dCA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnc3RyaW5nJyB8fFxuICAgICAgICB0eXBlb2YgdGhpcy5jb250ZW50ID09PSAnbnVtYmVyJ1xuICAgICAgICA/IHRoaXMuY29udGVudFxuICAgICAgICA6IHRoaXMuY29udGVudD8uKHRoaXMucHJvcHMpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHtcbiAgICAgIGdldCAkaW1wbGljaXQoKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0KClcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ29tcG9uZW50KFxuICAgIGZsZXhSZW5kZXJDb21wb25lbnQ6IEZsZXhSZW5kZXJDb21wb25lbnQ8VFByb3BzPlxuICApOiBDb21wb25lbnRSZWY8dW5rbm93bj4ge1xuICAgIGNvbnN0IHsgY29tcG9uZW50LCBpbnB1dHMsIGluamVjdG9yIH0gPSBmbGV4UmVuZGVyQ29tcG9uZW50XG5cbiAgICBjb25zdCBnZXRDb250ZXh0ID0gKCkgPT4gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkodGhpcy5wcm9wcywge1xuICAgICAgZ2V0OiAoXywga2V5KSA9PiBnZXRDb250ZXh0KCk/LltrZXkgYXMga2V5b2YgdHlwZW9mIF9dLFxuICAgIH0pXG5cbiAgICBjb25zdCBjb21wb25lbnRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IGluamVjdG9yID8/IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcywgdXNlVmFsdWU6IHByb3h5IH1dLFxuICAgIH0pXG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgICAgaW5qZWN0b3I6IGNvbXBvbmVudEluamVjdG9yLFxuICAgIH0pXG4gICAgZm9yIChjb25zdCBwcm9wIGluIGlucHV0cykge1xuICAgICAgaWYgKGNvbXBvbmVudFJlZi5pbnN0YW5jZT8uaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KHByb3AsIGlucHV0c1twcm9wXSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZlxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDdXN0b21Db21wb25lbnQoXG4gICAgY29tcG9uZW50OiBUeXBlPHVua25vd24+XG4gICk6IENvbXBvbmVudFJlZjx1bmtub3duPiB7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgIH0pXG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIC8vIE9ubHkgc2lnbmFsIGJhc2VkIGlucHV0IGNhbiBiZSBhZGRlZCBoZXJlXG4gICAgICBpZiAoXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZT8uaGFzT3duUHJvcGVydHkocHJvcCkgJiZcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpc1NpZ25hbChjb21wb25lbnRSZWYuaW5zdGFuY2VbcHJvcF0pXG4gICAgICApIHtcbiAgICAgICAgY29tcG9uZW50UmVmLnNldElucHV0KHByb3AsIHRoaXMucHJvcHNbcHJvcF0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnRSZWZcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGVtcGxhdGVSZWZDb250ZXh0KCkge1xuICAgIGNvbnN0IGdldENvbnRleHQgPSAoKSA9PiB0aGlzLnByb3BzXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCAkaW1wbGljaXQoKSB7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0KClcbiAgICAgIH0sXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbGV4UmVuZGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBOb25OdWxsYWJsZTx1bmtub3duPj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj4sXG4gICAgcmVhZG9ubHkgaW5wdXRzOiBUID0ge30gYXMgVCxcbiAgICByZWFkb25seSBpbmplY3Rvcj86IEluamVjdG9yXG4gICkge31cbn1cblxuY29uc3QgRmxleFJlbmRlckNvbXBvbmVudFByb3BzID0gbmV3IEluamVjdGlvblRva2VuPE5vbk51bGxhYmxlPHVua25vd24+PihcbiAgJ1tAdGFuc3RhY2svYW5ndWxhci10YWJsZV0gRmxleCByZW5kZXIgY29tcG9uZW50IGNvbnRleHQgcHJvcHMnXG4pXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RGbGV4UmVuZGVyQ29udGV4dDxUIGV4dGVuZHMgTm9uTnVsbGFibGU8dW5rbm93bj4+KCk6IFQge1xuICByZXR1cm4gaW5qZWN0PFQ+KEZsZXhSZW5kZXJDb21wb25lbnRQcm9wcylcbn1cbiJdfQ==
|
package/dist/esm2022/index.mjs
DELETED
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBZSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUtMLFdBQVcsR0FFWixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXRDLGNBQWMsc0JBQXNCLENBQUE7QUFFcEMsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsT0FBa0M7SUFFbEMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25CLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLEtBQUssRUFBRSxFQUFFO1lBQ1QsYUFBYSxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7WUFDdkIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixHQUFHLE9BQU8sRUFBRTtTQUNiLENBQUE7UUFFRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFMUMsc0VBQXNFO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBYSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFcEQsd0NBQXdDO1FBQ3hDLGdFQUFnRTtRQUNoRSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQThCLEdBQUcsRUFBRTtZQUNoRSxnQ0FBZ0M7WUFDaEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUE7WUFDMUIsa0NBQWtDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxDQUFBO1lBQzlCLE9BQU87Z0JBQ0wsR0FBRyxLQUFLLENBQUMsT0FBTztnQkFDaEIsR0FBRyxlQUFlO2dCQUNsQixHQUFHLFlBQVk7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUMvQyxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3ZCLE1BQU0sS0FBSyxHQUNULE9BQU8sWUFBWSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO29CQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNoQixlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzFDLENBQUM7YUFDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixnR0FBZ0c7UUFDaEcsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUMxQixHQUFHLEVBQUU7WUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7WUFDbEMsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLEVBQ0Q7WUFDRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztTQUNuQixDQUNGLENBQUE7UUFFRCw4RkFBOEY7UUFDOUYsT0FBTyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIHR5cGUgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgUm93RGF0YSxcbiAgVGFibGVPcHRpb25zLFxuICBUYWJsZU9wdGlvbnNSZXNvbHZlZCxcbiAgVGFibGVTdGF0ZSxcbiAgY3JlYXRlVGFibGUsXG4gIHR5cGUgVGFibGUsXG59IGZyb20gJ0B0YW5zdGFjay90YWJsZS1jb3JlJ1xuaW1wb3J0IHsgbGF6eUluaXQgfSBmcm9tICcuL2xhenktc2lnbmFsLWluaXRpYWxpemVyJ1xuaW1wb3J0IHsgcHJveGlmeVRhYmxlIH0gZnJvbSAnLi9wcm94eSdcblxuZXhwb3J0ICogZnJvbSAnQHRhbnN0YWNrL3RhYmxlLWNvcmUnXG5cbmV4cG9ydCB7XG4gIHR5cGUgRmxleFJlbmRlckNvbnRlbnQsXG4gIEZsZXhSZW5kZXJDb21wb25lbnQsXG4gIEZsZXhSZW5kZXJEaXJlY3RpdmUsXG4gIGluamVjdEZsZXhSZW5kZXJDb250ZXh0LFxufSBmcm9tICcuL2ZsZXgtcmVuZGVyJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5ndWxhclRhYmxlPFREYXRhIGV4dGVuZHMgUm93RGF0YT4oXG4gIG9wdGlvbnM6ICgpID0+IFRhYmxlT3B0aW9uczxURGF0YT5cbik6IFRhYmxlPFREYXRhPiAmIFNpZ25hbDxUYWJsZTxURGF0YT4+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
|
-
const 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF6eS1zaWduYWwtaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFtQixXQUFvQjtJQUM3RCxJQUFJLE1BQU0sR0FBYSxJQUFJLENBQUE7SUFFM0IsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBRXhDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQTtJQUV0QixPQUFPLElBQUksS0FBSyxDQUFJLEtBQVUsRUFBRTtRQUM5QixLQUFLLENBQUMsTUFBUyxFQUFFLE9BQVksRUFBRSxRQUFlO1lBQzVDLGdCQUFnQixFQUFFLENBQUE7WUFDbEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDakQsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFhLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRO1lBQ25CLGdCQUFnQixFQUFFLENBQUE7WUFDbEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDakQsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSTtZQUNULGdCQUFnQixFQUFFLENBQUE7WUFDbEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBQ0QsT0FBTztZQUNMLGdCQUFnQixFQUFFLENBQUE7WUFDbEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQVcsQ0FBQyxDQUFBO1FBQ3JDLENBQUM7UUFDRCx3QkFBd0I7WUFDdEIsT0FBTztnQkFDTCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQTtRQUNILENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBmcm9tIEB0YW5zdGFjay9hbmd1bGFyLXF1ZXJ5XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL1RhblN0YWNrL3F1ZXJ5L2Jsb2IvbWFpbi9wYWNrYWdlcy9hbmd1bGFyLXF1ZXJ5LWV4cGVyaW1lbnRhbC9zcmMvdXRpbC9sYXp5LWluaXQvbGF6eS1pbml0LnRzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF6eUluaXQ8VCBleHRlbmRzIG9iamVjdD4oaW5pdGlhbGl6ZXI6ICgpID0+IFQpOiBUIHtcbiAgbGV0IG9iamVjdDogVCB8IG51bGwgPSBudWxsXG5cbiAgY29uc3QgaW5pdGlhbGl6ZU9iamVjdCA9ICgpID0+IHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgb2JqZWN0ID0gdW50cmFja2VkKCgpID0+IGluaXRpYWxpemVyKCkpXG4gICAgfVxuICB9XG5cbiAgcXVldWVNaWNyb3Rhc2soKCkgPT4gaW5pdGlhbGl6ZU9iamVjdCgpKVxuXG4gIGNvbnN0IHRhYmxlID0gKCkgPT4ge31cblxuICByZXR1cm4gbmV3IFByb3h5PFQ+KHRhYmxlIGFzIFQsIHtcbiAgICBhcHBseSh0YXJnZXQ6IFQsIHRoaXNBcmc6IGFueSwgYXJnQXJyYXk6IGFueVtdKTogYW55IHtcbiAgICAgIGluaXRpYWxpemVPYmplY3QoKVxuICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkob2JqZWN0LCB0aGlzQXJnLCBhcmdBcnJheSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCBhcyBhbnksIHRoaXNBcmcsIGFyZ0FycmF5KVxuICAgIH0sXG4gICAgZ2V0KF8sIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICBpbml0aWFsaXplT2JqZWN0KClcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldChvYmplY3QgYXMgVCwgcHJvcCwgcmVjZWl2ZXIpXG4gICAgfSxcbiAgICBoYXMoXywgcHJvcCkge1xuICAgICAgaW5pdGlhbGl6ZU9iamVjdCgpXG4gICAgICByZXR1cm4gUmVmbGVjdC5oYXMob2JqZWN0IGFzIFQsIHByb3ApXG4gICAgfSxcbiAgICBvd25LZXlzKCkge1xuICAgICAgaW5pdGlhbGl6ZU9iamVjdCgpXG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKG9iamVjdCBhcyBUKVxuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG4iXX0=
|
package/dist/esm2022/proxy.mjs
DELETED
|
@@ -1,83 +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') &&
|
|
19
|
-
!property.endsWith('Model')) {
|
|
20
|
-
const maybeFn = table[property];
|
|
21
|
-
if (typeof maybeFn === 'function') {
|
|
22
|
-
Object.defineProperty(target, property, {
|
|
23
|
-
value: toComputed(tableSignal, maybeFn),
|
|
24
|
-
configurable: true,
|
|
25
|
-
enumerable: true,
|
|
26
|
-
});
|
|
27
|
-
return target[property];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
// @ts-expect-error
|
|
31
|
-
return (target[property] = table[property]);
|
|
32
|
-
},
|
|
33
|
-
has(_, prop) {
|
|
34
|
-
return !!untracked(tableSignal)[prop];
|
|
35
|
-
},
|
|
36
|
-
ownKeys() {
|
|
37
|
-
return Reflect.ownKeys(untracked(tableSignal));
|
|
38
|
-
},
|
|
39
|
-
getOwnPropertyDescriptor() {
|
|
40
|
-
return {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
configurable: true,
|
|
43
|
-
};
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Here we'll handle all type of accessors:
|
|
49
|
-
* - 0 argument -> e.g. table.getCanNextPage())
|
|
50
|
-
* - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)
|
|
51
|
-
* - 1 required argument -> e.g. table.getColumn(columnId)
|
|
52
|
-
* - 1+ argument -> e.g. table.getRow(id, searchAll?)
|
|
53
|
-
*
|
|
54
|
-
* Since we are not able to detect automatically the accessors parameters,
|
|
55
|
-
* we'll wrap all accessors into a cached function wrapping a computed
|
|
56
|
-
* that return it's value based on the given parameters
|
|
57
|
-
*/
|
|
58
|
-
function toComputed(signal, fn) {
|
|
59
|
-
const hasArgs = fn.length > 0;
|
|
60
|
-
if (!hasArgs) {
|
|
61
|
-
return computed(() => {
|
|
62
|
-
void signal();
|
|
63
|
-
return fn();
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
const computedCache = {};
|
|
67
|
-
return (...argsArray) => {
|
|
68
|
-
const serializedArgs = serializeArgs(...argsArray);
|
|
69
|
-
if (computedCache.hasOwnProperty(serializedArgs)) {
|
|
70
|
-
return computedCache[serializedArgs]?.();
|
|
71
|
-
}
|
|
72
|
-
const computedSignal = computed(() => {
|
|
73
|
-
void signal();
|
|
74
|
-
return fn(...argsArray);
|
|
75
|
-
});
|
|
76
|
-
computedCache[serializedArgs] = computedSignal;
|
|
77
|
-
return computedSignal();
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
function serializeArgs(...args) {
|
|
81
|
-
return JSON.stringify(args);
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLaEUsTUFBTSxVQUFVLFlBQVksQ0FDMUIsV0FBNkI7SUFFN0IsTUFBTSxhQUFhLEdBQUcsV0FBNkIsQ0FBQTtJQUVuRCxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtRQUM5QixLQUFLO1lBQ0gsT0FBTyxXQUFXLEVBQUUsQ0FBQTtRQUN0QixDQUFDO1FBQ0QsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUF3QjtZQUNsQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6QixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3BDOzs7ZUFHRztZQUNILElBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFDM0IsQ0FBQztnQkFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFxQixDQUFBO2dCQUNuRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO29CQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7d0JBQ3RDLEtBQUssRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQzt3QkFDdkMsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLFVBQVUsRUFBRSxJQUFJO3FCQUNqQixDQUFDLENBQUE7b0JBQ0YsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBQ0QsbUJBQW1CO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBb0I7WUFDekIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxPQUFPO1lBQ0wsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQ2hELENBQUM7UUFDRCx3QkFBd0I7WUFDdEIsT0FBTztnQkFDTCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQTtRQUNILENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsVUFBVSxDQUFJLE1BQXdCLEVBQUUsRUFBWTtJQUMzRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsS0FBSyxNQUFNLEVBQUUsQ0FBQTtZQUNiLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDYixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBb0MsRUFBRSxDQUFBO0lBRXpELE9BQU8sQ0FBQyxHQUFHLFNBQWdCLEVBQUUsRUFBRTtRQUM3QixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtRQUNsRCxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUE7UUFDMUMsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsS0FBSyxNQUFNLEVBQUUsQ0FBQTtZQUNiLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDekIsQ0FBQyxDQUFDLENBQUE7UUFFRixhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUFBO1FBRTlDLE9BQU8sY0FBYyxFQUFFLENBQUE7SUFDekIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEdBQUcsSUFBVztJQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCB0eXBlIFNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IHR5cGUgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svdGFibGUtY29yZSdcblxudHlwZSBUYWJsZVNpZ25hbDxUPiA9IFRhYmxlPFQ+ICYgU2lnbmFsPFRhYmxlPFQ+PlxuXG5leHBvcnQgZnVuY3Rpb24gcHJveGlmeVRhYmxlPFQ+KFxuICB0YWJsZVNpZ25hbDogU2lnbmFsPFRhYmxlPFQ+PlxuKTogVGFibGU8VD4gJiBTaWduYWw8VGFibGU8VD4+IHtcbiAgY29uc3QgaW50ZXJuYWxTdGF0ZSA9IHRhYmxlU2lnbmFsIGFzIFRhYmxlU2lnbmFsPFQ+XG5cbiAgcmV0dXJuIG5ldyBQcm94eShpbnRlcm5hbFN0YXRlLCB7XG4gICAgYXBwbHkoKSB7XG4gICAgICByZXR1cm4gdGFibGVTaWduYWwoKVxuICAgIH0sXG4gICAgZ2V0KHRhcmdldCwgcHJvcGVydHk6IGtleW9mIFRhYmxlPFQ+KTogYW55IHtcbiAgICAgIGlmICh0YXJnZXRbcHJvcGVydHldKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRbcHJvcGVydHldXG4gICAgICB9XG4gICAgICBjb25zdCB0YWJsZSA9IHVudHJhY2tlZCh0YWJsZVNpZ25hbClcbiAgICAgIC8qKlxuICAgICAgICogQXR0ZW1wdCB0byBjb252ZXJ0IGFsbCBhY2Nlc3NvcnMgaW50byBjb21wdXRlZCBvbmVzLFxuICAgICAgICogZXhjbHVkaW5nIGhhbmRsZXJzIGFzIHRoZXkgZG8gbm90IHJldGFpbiBhbnkgcmVhY3RpdmUgdmFsdWVcbiAgICAgICAqL1xuICAgICAgaWYgKFxuICAgICAgICBwcm9wZXJ0eS5zdGFydHNXaXRoKCdnZXQnKSAmJlxuICAgICAgICAhcHJvcGVydHkuZW5kc1dpdGgoJ0hhbmRsZXInKSAmJlxuICAgICAgICAhcHJvcGVydHkuZW5kc1dpdGgoJ01vZGVsJylcbiAgICAgICkge1xuICAgICAgICBjb25zdCBtYXliZUZuID0gdGFibGVbcHJvcGVydHldIGFzIEZ1bmN0aW9uIHwgbmV2ZXJcbiAgICAgICAgaWYgKHR5cGVvZiBtYXliZUZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHksIHtcbiAgICAgICAgICAgIHZhbHVlOiB0b0NvbXB1dGVkKHRhYmxlU2lnbmFsLCBtYXliZUZuKSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BlcnR5XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gKHRhcmdldFtwcm9wZXJ0eV0gPSB0YWJsZVtwcm9wZXJ0eV0pXG4gICAgfSxcbiAgICBoYXMoXywgcHJvcDoga2V5b2YgVGFibGU8VD4pIHtcbiAgICAgIHJldHVybiAhIXVudHJhY2tlZCh0YWJsZVNpZ25hbClbcHJvcF1cbiAgICB9LFxuICAgIG93bktleXMoKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHVudHJhY2tlZCh0YWJsZVNpZ25hbCkpXG4gICAgfSxcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9XG4gICAgfSxcbiAgfSlcbn1cblxuLyoqXG4gKiBIZXJlIHdlJ2xsIGhhbmRsZSBhbGwgdHlwZSBvZiBhY2Nlc3NvcnM6XG4gKiAtIDAgYXJndW1lbnQgLT4gZS5nLiB0YWJsZS5nZXRDYW5OZXh0UGFnZSgpKVxuICogLSAwfjEgYXJndW1lbnRzIC0+IGUuZy4gdGFibGUuZ2V0SXNTb21lUm93c1Bpbm5lZChwb3NpdGlvbj8pXG4gKiAtIDEgcmVxdWlyZWQgYXJndW1lbnQgLT4gZS5nLiB0YWJsZS5nZXRDb2x1bW4oY29sdW1uSWQpXG4gKiAtIDErIGFyZ3VtZW50IC0+IGUuZy4gdGFibGUuZ2V0Um93KGlkLCBzZWFyY2hBbGw/KVxuICpcbiAqIFNpbmNlIHdlIGFyZSBub3QgYWJsZSB0byBkZXRlY3QgYXV0b21hdGljYWxseSB0aGUgYWNjZXNzb3JzIHBhcmFtZXRlcnMsXG4gKiB3ZSdsbCB3cmFwIGFsbCBhY2Nlc3NvcnMgaW50byBhIGNhY2hlZCBmdW5jdGlvbiB3cmFwcGluZyBhIGNvbXB1dGVkXG4gKiB0aGF0IHJldHVybiBpdCdzIHZhbHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzXG4gKi9cbmZ1bmN0aW9uIHRvQ29tcHV0ZWQ8VD4oc2lnbmFsOiBTaWduYWw8VGFibGU8VD4+LCBmbjogRnVuY3Rpb24pIHtcbiAgY29uc3QgaGFzQXJncyA9IGZuLmxlbmd0aCA+IDBcbiAgaWYgKCFoYXNBcmdzKSB7XG4gICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHZvaWQgc2lnbmFsKClcbiAgICAgIHJldHVybiBmbigpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbXB1dGVkQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4gPSB7fVxuXG4gIHJldHVybiAoLi4uYXJnc0FycmF5OiBhbnlbXSkgPT4ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRBcmdzID0gc2VyaWFsaXplQXJncyguLi5hcmdzQXJyYXkpXG4gICAgaWYgKGNvbXB1dGVkQ2FjaGUuaGFzT3duUHJvcGVydHkoc2VyaWFsaXplZEFyZ3MpKSB7XG4gICAgICByZXR1cm4gY29tcHV0ZWRDYWNoZVtzZXJpYWxpemVkQXJnc10/LigpXG4gICAgfVxuICAgIGNvbnN0IGNvbXB1dGVkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgdm9pZCBzaWduYWwoKVxuICAgICAgcmV0dXJuIGZuKC4uLmFyZ3NBcnJheSlcbiAgICB9KVxuXG4gICAgY29tcHV0ZWRDYWNoZVtzZXJpYWxpemVkQXJnc10gPSBjb21wdXRlZFNpZ25hbFxuXG4gICAgcmV0dXJuIGNvbXB1dGVkU2lnbmFsKClcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVBcmdzKC4uLmFyZ3M6IGFueVtdKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzKVxufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stYW5ndWxhci10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YW5zdGFjay1hbmd1bGFyLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/dist/flex-render.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ComponentRef, EmbeddedViewRef, Injector, TemplateRef, Type, ViewContainerRef, type DoCheck, type OnInit } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export type FlexRenderContent<TProps extends NonNullable<unknown>> = string | number | Type<TProps> | FlexRenderComponent<TProps> | TemplateRef<{
|
|
4
|
-
$implicit: TProps;
|
|
5
|
-
}> | null | undefined;
|
|
6
|
-
export declare class FlexRenderDirective<TProps extends NonNullable<unknown>> implements OnInit, DoCheck {
|
|
7
|
-
private readonly viewContainerRef;
|
|
8
|
-
private readonly templateRef;
|
|
9
|
-
content: number | string | ((props: TProps) => FlexRenderContent<TProps>) | undefined;
|
|
10
|
-
props: TProps;
|
|
11
|
-
injector: Injector;
|
|
12
|
-
constructor(viewContainerRef: ViewContainerRef, templateRef: TemplateRef<any>);
|
|
13
|
-
ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null;
|
|
14
|
-
ngOnInit(): void;
|
|
15
|
-
ngDoCheck(): void;
|
|
16
|
-
render(): ComponentRef<unknown> | EmbeddedViewRef<unknown>;
|
|
17
|
-
private renderContent;
|
|
18
|
-
private renderStringContent;
|
|
19
|
-
private renderComponent;
|
|
20
|
-
private renderCustomComponent;
|
|
21
|
-
private getTemplateRefContext;
|
|
22
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FlexRenderDirective<any>, never>;
|
|
23
|
-
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>;
|
|
24
|
-
}
|
|
25
|
-
export declare class FlexRenderComponent<T extends NonNullable<unknown>> {
|
|
26
|
-
readonly component: Type<unknown>;
|
|
27
|
-
readonly inputs: T;
|
|
28
|
-
readonly injector?: Injector;
|
|
29
|
-
constructor(component: Type<unknown>, inputs?: T, injector?: Injector);
|
|
30
|
-
}
|
|
31
|
-
export declare function injectFlexRenderContext<T extends NonNullable<unknown>>(): T;
|
package/dist/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { type Signal } from '@angular/core';
|
|
2
|
-
import { RowData, TableOptions, type Table } from '@tanstack/table-core';
|
|
3
|
-
export * from '@tanstack/table-core';
|
|
4
|
-
export { type FlexRenderContent, FlexRenderComponent, FlexRenderDirective, injectFlexRenderContext, } from './flex-render';
|
|
5
|
-
export declare function createAngularTable<TData extends RowData>(options: () => TableOptions<TData>): Table<TData> & Signal<Table<TData>>;
|
package/dist/proxy.d.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { describe, test } from 'vitest'
|
|
2
|
-
import {
|
|
3
|
-
type ColumnDef,
|
|
4
|
-
createAngularTable,
|
|
5
|
-
getCoreRowModel,
|
|
6
|
-
type Table,
|
|
7
|
-
} from '../index'
|
|
8
|
-
import { Component, input, isSignal, signal, untracked } from '@angular/core'
|
|
9
|
-
import { TestBed } from '@angular/core/testing'
|
|
10
|
-
import { setSignalInputs } from './test-utils'
|
|
11
|
-
|
|
12
|
-
describe('createAngularTable', () => {
|
|
13
|
-
test('should render with required signal inputs', () => {
|
|
14
|
-
@Component({
|
|
15
|
-
selector: 'app-fake',
|
|
16
|
-
template: ``,
|
|
17
|
-
standalone: true,
|
|
18
|
-
})
|
|
19
|
-
class FakeComponent {
|
|
20
|
-
data = input.required<any[]>()
|
|
21
|
-
|
|
22
|
-
table = createAngularTable(() => ({
|
|
23
|
-
data: this.data(),
|
|
24
|
-
columns: [],
|
|
25
|
-
getCoreRowModel: getCoreRowModel(),
|
|
26
|
-
}))
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const fixture = TestBed.createComponent(FakeComponent)
|
|
30
|
-
setSignalInputs(fixture.componentInstance, {
|
|
31
|
-
data: [],
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
fixture.detectChanges()
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
describe('Proxy table', () => {
|
|
38
|
-
type Data = { id: string; title: string }
|
|
39
|
-
const data = signal<Data[]>([{ id: '1', title: 'Title' }])
|
|
40
|
-
const columns: ColumnDef<Data>[] = [
|
|
41
|
-
{ id: 'id', header: 'Id', cell: context => context.getValue() },
|
|
42
|
-
{ id: 'title', header: 'Title', cell: context => context.getValue() },
|
|
43
|
-
]
|
|
44
|
-
const table = createAngularTable(() => ({
|
|
45
|
-
data: data(),
|
|
46
|
-
columns: columns,
|
|
47
|
-
getCoreRowModel: getCoreRowModel(),
|
|
48
|
-
getRowId: row => row.id,
|
|
49
|
-
}))
|
|
50
|
-
const tablePropertyKeys = Object.keys(table())
|
|
51
|
-
|
|
52
|
-
test('table must be a signal', () => {
|
|
53
|
-
expect(isSignal(table)).toEqual(true)
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
test('supports "in" operator', () => {
|
|
57
|
-
expect('getCoreRowModel' in table).toBe(true)
|
|
58
|
-
expect('options' in table).toBe(true)
|
|
59
|
-
expect('notFound' in table).toBe(false)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
test('supports "Object.keys"', () => {
|
|
63
|
-
const keys = Object.keys(table())
|
|
64
|
-
expect(Object.keys(table)).toEqual(keys)
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
test.each(
|
|
68
|
-
tablePropertyKeys.map(property => [
|
|
69
|
-
property,
|
|
70
|
-
testShouldBeComputedProperty(untracked(table), property),
|
|
71
|
-
])
|
|
72
|
-
)('property (%s) is computed -> (%s)', (name, expected) => {
|
|
73
|
-
const tableProperty = table[name as keyof typeof table]
|
|
74
|
-
expect(isSignal(tableProperty)).toEqual(expected)
|
|
75
|
-
})
|
|
76
|
-
})
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
const testShouldBeComputedProperty = (
|
|
80
|
-
table: Table<any>,
|
|
81
|
-
propertyName: string
|
|
82
|
-
) => {
|
|
83
|
-
if (propertyName.endsWith('Handler') || propertyName.endsWith('Model')) {
|
|
84
|
-
return false
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (propertyName.startsWith('get')) {
|
|
88
|
-
// Only properties with no arguments are computed
|
|
89
|
-
const fn = table[propertyName as keyof Table<any>]
|
|
90
|
-
// Cannot test if is lazy computed since we return the unwrapped value
|
|
91
|
-
return fn instanceof Function && fn.length === 0
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return false
|
|
95
|
-
}
|