@tanstack/angular-table 9.0.0-alpha.8 → 9.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +127 -0
  2. package/dist/README.md +127 -0
  3. package/dist/fesm2022/tanstack-angular-table-static-functions.mjs +6 -0
  4. package/dist/fesm2022/tanstack-angular-table-static-functions.mjs.map +1 -0
  5. package/dist/fesm2022/tanstack-angular-table.mjs +1337 -242
  6. package/dist/fesm2022/tanstack-angular-table.mjs.map +1 -1
  7. package/dist/types/tanstack-angular-table-static-functions.d.ts +1 -0
  8. package/dist/types/tanstack-angular-table.d.ts +793 -0
  9. package/package.json +39 -19
  10. package/skills/angular/angular-rendering-directives/SKILL.md +415 -0
  11. package/skills/angular/angular-rendering-directives/references/content-shapes.md +142 -0
  12. package/skills/angular/angular-rendering-directives/references/create-table-hook-registries.md +89 -0
  13. package/skills/angular/angular-rendering-directives/references/di-tokens.md +171 -0
  14. package/skills/angular/angular-rendering-directives/references/flex-render-component-options.md +64 -0
  15. package/skills/angular/client-to-server/SKILL.md +467 -0
  16. package/skills/angular/compose-with-tanstack-query/SKILL.md +482 -0
  17. package/skills/angular/compose-with-tanstack-store/SKILL.md +397 -0
  18. package/skills/angular/compose-with-tanstack-virtual/SKILL.md +400 -0
  19. package/skills/angular/getting-started/SKILL.md +496 -0
  20. package/skills/angular/getting-started/references/feature-row-model-mapping.md +48 -0
  21. package/skills/angular/migrate-v8-to-v9/SKILL.md +419 -0
  22. package/skills/angular/migrate-v8-to-v9/references/v8-to-v9-mapping.md +261 -0
  23. package/skills/angular/production-readiness/SKILL.md +469 -0
  24. package/skills/angular/table-state/SKILL.md +429 -0
  25. package/skills/angular/table-state/references/external-atoms-and-app-hook.md +152 -0
  26. package/src/flex-render/context.ts +14 -0
  27. package/src/flex-render/flags.ts +34 -0
  28. package/src/flex-render/flexRenderComponent.ts +288 -0
  29. package/src/flex-render/flexRenderComponentFactory.ts +251 -0
  30. package/src/flex-render/renderer.ts +393 -0
  31. package/src/flex-render/view.ts +226 -0
  32. package/src/flexRender.ts +124 -0
  33. package/src/helpers/cell.ts +104 -0
  34. package/src/helpers/createTableHook.ts +499 -0
  35. package/src/helpers/flexRenderCell.ts +136 -0
  36. package/src/helpers/header.ts +99 -0
  37. package/src/helpers/table.ts +85 -0
  38. package/src/index.ts +23 -70
  39. package/src/injectTable.ts +212 -0
  40. package/src/{lazy-signal-initializer.ts → lazySignalInitializer.ts} +2 -2
  41. package/src/reactivity.ts +105 -0
  42. package/static-functions/index.ts +1 -0
  43. package/static-functions/ng-package.json +6 -0
  44. package/dist/esm2022/flex-render.mjs +0 -150
  45. package/dist/esm2022/index.mjs +0 -48
  46. package/dist/esm2022/lazy-signal-initializer.mjs +0 -43
  47. package/dist/esm2022/proxy.mjs +0 -83
  48. package/dist/esm2022/tanstack-angular-table.mjs +0 -5
  49. package/dist/flex-render.d.ts +0 -31
  50. package/dist/index.d.ts +0 -5
  51. package/dist/lazy-signal-initializer.d.ts +0 -5
  52. package/dist/proxy.d.ts +0 -3
  53. package/src/flex-render.ts +0 -187
  54. package/src/proxy.ts +0 -97
package/src/proxy.ts DELETED
@@ -1,97 +0,0 @@
1
- import { computed, type Signal, untracked } from '@angular/core'
2
- import { type Table } from '@tanstack/table-core'
3
-
4
- type TableSignal<T> = Table<T> & Signal<Table<T>>
5
-
6
- export function proxifyTable<T>(
7
- tableSignal: Signal<Table<T>>
8
- ): Table<T> & Signal<Table<T>> {
9
- const internalState = tableSignal as TableSignal<T>
10
-
11
- return new Proxy(internalState, {
12
- apply() {
13
- return tableSignal()
14
- },
15
- get(target, property: keyof Table<T>): any {
16
- if (target[property]) {
17
- return target[property]
18
- }
19
- const table = untracked(tableSignal)
20
- /**
21
- * Attempt to convert all accessors into computed ones,
22
- * excluding handlers as they do not retain any reactive value
23
- */
24
- if (
25
- property.startsWith('get') &&
26
- !property.endsWith('Handler') &&
27
- !property.endsWith('Model')
28
- ) {
29
- const maybeFn = table[property] as Function | never
30
- if (typeof maybeFn === 'function') {
31
- Object.defineProperty(target, property, {
32
- value: toComputed(tableSignal, maybeFn),
33
- configurable: true,
34
- enumerable: true,
35
- })
36
- return target[property]
37
- }
38
- }
39
- // @ts-expect-error
40
- return (target[property] = table[property])
41
- },
42
- has(_, prop: keyof Table<T>) {
43
- return !!untracked(tableSignal)[prop]
44
- },
45
- ownKeys() {
46
- return Reflect.ownKeys(untracked(tableSignal))
47
- },
48
- getOwnPropertyDescriptor() {
49
- return {
50
- enumerable: true,
51
- configurable: true,
52
- }
53
- },
54
- })
55
- }
56
-
57
- /**
58
- * Here we'll handle all type of accessors:
59
- * - 0 argument -> e.g. table.getCanNextPage())
60
- * - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)
61
- * - 1 required argument -> e.g. table.getColumn(columnId)
62
- * - 1+ argument -> e.g. table.getRow(id, searchAll?)
63
- *
64
- * Since we are not able to detect automatically the accessors parameters,
65
- * we'll wrap all accessors into a cached function wrapping a computed
66
- * that return it's value based on the given parameters
67
- */
68
- function toComputed<T>(signal: Signal<Table<T>>, fn: Function) {
69
- const hasArgs = fn.length > 0
70
- if (!hasArgs) {
71
- return computed(() => {
72
- void signal()
73
- return fn()
74
- })
75
- }
76
-
77
- const computedCache: Record<string, Signal<unknown>> = {}
78
-
79
- return (...argsArray: any[]) => {
80
- const serializedArgs = serializeArgs(...argsArray)
81
- if (computedCache.hasOwnProperty(serializedArgs)) {
82
- return computedCache[serializedArgs]?.()
83
- }
84
- const computedSignal = computed(() => {
85
- void signal()
86
- return fn(...argsArray)
87
- })
88
-
89
- computedCache[serializedArgs] = computedSignal
90
-
91
- return computedSignal()
92
- }
93
- }
94
-
95
- function serializeArgs(...args: any[]) {
96
- return JSON.stringify(args)
97
- }