@tanstack/vue-table 8.20.1 → 8.20.3
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/build/lib/index.d.ts +2 -2
- package/build/lib/index.esm.js +26 -24
- package/build/lib/index.esm.js.map +1 -1
- package/build/lib/index.js +25 -23
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +26 -24
- package/build/lib/index.mjs.map +1 -1
- package/build/umd/index.development.js +25 -23
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +36 -48
package/build/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TableOptions, RowData } from '@tanstack/table-core';
|
|
2
2
|
import { MaybeRef } from 'vue';
|
|
3
3
|
export * from '@tanstack/table-core';
|
|
4
|
-
type TableOptionsWithReactiveData<TData extends RowData> = Omit<TableOptions<TData>, 'data'> & {
|
|
4
|
+
export type TableOptionsWithReactiveData<TData extends RowData> = Omit<TableOptions<TData>, 'data'> & {
|
|
5
5
|
data: MaybeRef<TData[]>;
|
|
6
6
|
};
|
|
7
7
|
export declare const FlexRender: import("vue").DefineComponent<Readonly<{
|
|
@@ -14,4 +14,4 @@ export declare const FlexRender: import("vue").DefineComponent<Readonly<{
|
|
|
14
14
|
readonly props?: any;
|
|
15
15
|
readonly render?: any;
|
|
16
16
|
}, {}>;
|
|
17
|
-
export declare function useVueTable<TData extends RowData>(
|
|
17
|
+
export declare function useVueTable<TData extends RowData>(initialOptions: TableOptionsWithReactiveData<TData>): import("@tanstack/table-core").Table<TData>;
|
package/build/lib/index.esm.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { createTable } from '@tanstack/table-core';
|
|
12
12
|
export * from '@tanstack/table-core';
|
|
13
|
-
import { defineComponent, h, isRef, unref, ref, watchEffect } from 'vue';
|
|
13
|
+
import { defineComponent, h, isRef, watch, unref, ref, watchEffect } from 'vue';
|
|
14
14
|
|
|
15
15
|
function trueFn() {
|
|
16
16
|
return true;
|
|
@@ -82,36 +82,47 @@ const FlexRender = defineComponent({
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
-
function
|
|
85
|
+
function getOptionsWithReactiveData(options) {
|
|
86
|
+
return mergeProxy(options, {
|
|
87
|
+
data: unref(options.data)
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function useVueTable(initialOptions) {
|
|
86
91
|
const resolvedOptions = mergeProxy({
|
|
87
92
|
state: {},
|
|
88
93
|
// Dummy state
|
|
89
94
|
onStateChange: () => {},
|
|
90
95
|
// noop
|
|
91
|
-
renderFallbackValue: null
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
}, options);
|
|
96
|
+
renderFallbackValue: null
|
|
97
|
+
}, getOptionsWithReactiveData(initialOptions));
|
|
98
|
+
const table = createTable(resolvedOptions);
|
|
96
99
|
|
|
97
|
-
// Add support
|
|
98
|
-
if (isRef(
|
|
99
|
-
|
|
100
|
+
// Add reactivity support
|
|
101
|
+
if (isRef(initialOptions.data)) {
|
|
102
|
+
watch(initialOptions.data, () => {
|
|
103
|
+
table.setState(prev => ({
|
|
104
|
+
...prev,
|
|
105
|
+
data: unref(initialOptions.data)
|
|
106
|
+
}));
|
|
107
|
+
}, {
|
|
108
|
+
immediate: true,
|
|
109
|
+
deep: true
|
|
110
|
+
});
|
|
100
111
|
}
|
|
101
|
-
|
|
112
|
+
|
|
102
113
|
// can't use `reactive` because update needs to be immutable
|
|
103
114
|
const state = ref(table.initialState);
|
|
104
115
|
watchEffect(() => {
|
|
105
116
|
table.setOptions(prev => {
|
|
106
|
-
var
|
|
117
|
+
var _initialOptions$state;
|
|
107
118
|
const stateProxy = new Proxy({}, {
|
|
108
119
|
get: (_, prop) => state.value[prop]
|
|
109
120
|
});
|
|
110
|
-
|
|
121
|
+
return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
111
122
|
// merge the initialState and `options.state`
|
|
112
123
|
// create a new proxy on each `setOptions` call
|
|
113
124
|
// and get the value from state on each property access
|
|
114
|
-
state: mergeProxy(stateProxy, (
|
|
125
|
+
state: mergeProxy(stateProxy, (_initialOptions$state = initialOptions.state) != null ? _initialOptions$state : {}),
|
|
115
126
|
// Similarly, we'll maintain both our internal state and any user-provided
|
|
116
127
|
// state.
|
|
117
128
|
onStateChange: updater => {
|
|
@@ -120,18 +131,9 @@ function useVueTable(options) {
|
|
|
120
131
|
} else {
|
|
121
132
|
state.value = updater;
|
|
122
133
|
}
|
|
123
|
-
|
|
134
|
+
initialOptions.onStateChange == null || initialOptions.onStateChange(updater);
|
|
124
135
|
}
|
|
125
136
|
});
|
|
126
|
-
|
|
127
|
-
// Add support for reactivity
|
|
128
|
-
if (isRef(options.data)) {
|
|
129
|
-
return {
|
|
130
|
-
...newOptions,
|
|
131
|
-
data: unref(options.data)
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
return newOptions;
|
|
135
137
|
});
|
|
136
138
|
});
|
|
137
139
|
return table;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../src/merge-proxy.ts","../../src/index.ts"],"sourcesContent":["function trueFn() {\n return true\n}\n\nconst $PROXY = Symbol('merge-proxy')\n\n// https://github.com/solidjs/solid/blob/c20ca4fd8c36bc0522fedb2c7f38a110b7ee2663/packages/solid/src/render/component.ts#L51-L118\nconst propTraps: ProxyHandler<{\n get: (k: string | number | symbol) => any\n has: (k: string | number | symbol) => boolean\n keys: () => string[]\n}> = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver\n return _.get(property)\n },\n has(_, property) {\n return _.has(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n }\n },\n ownKeys(_) {\n return _.keys()\n },\n}\n\ntype UnboxLazy<T> = T extends () => infer U ? U : T\ntype BoxedTupleTypes<T extends any[]> = {\n [P in keyof T]: [UnboxLazy<T[P]>]\n}[Exclude<keyof T, keyof any[]>]\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I\n) => void\n ? I\n : never\ntype UnboxIntersection<T> = T extends { 0: infer U } ? U : never\ntype MergeProxy<T extends any[]> = UnboxIntersection<\n UnionToIntersection<BoxedTupleTypes<T>>\n>\n\nfunction resolveSource(s: any) {\n return 'value' in s ? s.value : s\n}\n\nexport function mergeProxy<T extends any[]>(...sources: T): MergeProxy<T>\nexport function mergeProxy(...sources: any): any {\n return new Proxy(\n {\n get(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property]\n if (v !== undefined) return v\n }\n },\n has(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true\n }\n return false\n },\n keys() {\n const keys = []\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])))\n return [...Array.from(new Set(keys))]\n },\n },\n propTraps\n )\n}\n","import {\n TableOptions,\n createTable,\n TableOptionsResolved,\n RowData,\n} from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n} from 'vue'\nimport { mergeProxy } from './merge-proxy'\n\nexport * from '@tanstack/table-core'\n\ntype TableOptionsWithReactiveData<TData extends RowData> = Omit<\n TableOptions<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\ntype TableOptionsResolvedWithReactiveData<TData extends RowData> = Omit<\n TableOptionsResolved<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\nexport const FlexRender = defineComponent({\n props: ['render', 'props'],\n setup: (props: { render: any; props: any }) => {\n return () => {\n if (\n typeof props.render === 'function' ||\n typeof props.render === 'object'\n ) {\n return h(props.render, props.props)\n }\n\n return props.render\n }\n },\n})\n\nexport function useVueTable<TData extends RowData>(\n options: TableOptionsWithReactiveData<TData>\n) {\n const resolvedOptions: TableOptionsResolvedWithReactiveData<TData> =\n mergeProxy(\n {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n mergeOptions(\n defaultOptions: TableOptions<TData>,\n options: TableOptions<TData>\n ) {\n return mergeProxy(defaultOptions, options)\n },\n },\n options\n )\n\n // Add support for reactivity\n if (isRef(options.data)) {\n resolvedOptions.data = unref(options.data)\n }\n\n const table = createTable<TData>(\n resolvedOptions as TableOptionsResolved<TData>\n )\n // can't use `reactive` because update needs to be immutable\n const state = ref(table.initialState)\n\n watchEffect(() => {\n table.setOptions(prev => {\n const stateProxy = new Proxy({} as typeof state.value, {\n get: (_, prop) => state.value[prop as keyof typeof state.value],\n })\n\n const newOptions = mergeProxy(prev, options, {\n // merge the initialState and `options.state`\n // create a new proxy on each `setOptions` call\n // and get the value from state on each property access\n state: mergeProxy(stateProxy, options.state ?? {}),\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: (updater: any) => {\n if (updater instanceof Function) {\n state.value = updater(state.value)\n } else {\n state.value = updater\n }\n\n options.onStateChange?.(updater)\n },\n })\n\n // Add support for reactivity\n if (isRef(options.data)) {\n return {\n ...newOptions,\n data: unref(options.data),\n }\n }\n\n return newOptions\n })\n })\n\n return table\n}\n"],"names":["trueFn","$PROXY","Symbol","propTraps","get","_","property","receiver","has","set","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","keys","resolveSource","s","value","mergeProxy","_len","arguments","length","sources","Array","_key","Proxy","i","v","undefined","push","Object","from","Set","FlexRender","defineComponent","props","setup","render","h","useVueTable","options","resolvedOptions","state","onStateChange","renderFallbackValue","mergeOptions","defaultOptions","isRef","data","unref","table","createTable","ref","initialState","watchEffect","setOptions","prev","_options$state","stateProxy","prop","newOptions","updater","Function"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../src/merge-proxy.ts","../../src/index.ts"],"sourcesContent":["function trueFn() {\n return true\n}\n\nconst $PROXY = Symbol('merge-proxy')\n\n// https://github.com/solidjs/solid/blob/c20ca4fd8c36bc0522fedb2c7f38a110b7ee2663/packages/solid/src/render/component.ts#L51-L118\nconst propTraps: ProxyHandler<{\n get: (k: string | number | symbol) => any\n has: (k: string | number | symbol) => boolean\n keys: () => string[]\n}> = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver\n return _.get(property)\n },\n has(_, property) {\n return _.has(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n }\n },\n ownKeys(_) {\n return _.keys()\n },\n}\n\ntype UnboxLazy<T> = T extends () => infer U ? U : T\ntype BoxedTupleTypes<T extends any[]> = {\n [P in keyof T]: [UnboxLazy<T[P]>]\n}[Exclude<keyof T, keyof any[]>]\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I\n) => void\n ? I\n : never\ntype UnboxIntersection<T> = T extends { 0: infer U } ? U : never\ntype MergeProxy<T extends any[]> = UnboxIntersection<\n UnionToIntersection<BoxedTupleTypes<T>>\n>\n\nfunction resolveSource(s: any) {\n return 'value' in s ? s.value : s\n}\n\nexport function mergeProxy<T extends any[]>(...sources: T): MergeProxy<T>\nexport function mergeProxy(...sources: any): any {\n return new Proxy(\n {\n get(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property]\n if (v !== undefined) return v\n }\n },\n has(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true\n }\n return false\n },\n keys() {\n const keys = []\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])))\n return [...Array.from(new Set(keys))]\n },\n },\n propTraps\n )\n}\n","import { TableOptions, createTable, RowData } from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n watch,\n} from 'vue'\nimport { mergeProxy } from './merge-proxy'\n\nexport * from '@tanstack/table-core'\n\nexport type TableOptionsWithReactiveData<TData extends RowData> = Omit<\n TableOptions<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\nexport const FlexRender = defineComponent({\n props: ['render', 'props'],\n setup: (props: { render: any; props: any }) => {\n return () => {\n if (\n typeof props.render === 'function' ||\n typeof props.render === 'object'\n ) {\n return h(props.render, props.props)\n }\n\n return props.render\n }\n },\n})\n\nfunction getOptionsWithReactiveData<TData extends RowData>(\n options: TableOptionsWithReactiveData<TData>\n) {\n return mergeProxy(options, {\n data: unref(options.data),\n })\n}\n\nexport function useVueTable<TData extends RowData>(\n initialOptions: TableOptionsWithReactiveData<TData>\n) {\n const resolvedOptions = mergeProxy(\n {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n },\n getOptionsWithReactiveData(initialOptions)\n )\n\n const table = createTable<TData>(resolvedOptions)\n\n // Add reactivity support\n if (isRef(initialOptions.data)) {\n watch(\n initialOptions.data,\n () => {\n table.setState(prev => ({\n ...prev,\n data: unref(initialOptions.data),\n }))\n },\n { immediate: true, deep: true }\n )\n }\n\n // can't use `reactive` because update needs to be immutable\n const state = ref(table.initialState)\n\n watchEffect(() => {\n table.setOptions(prev => {\n const stateProxy = new Proxy({} as typeof state.value, {\n get: (_, prop) => state.value[prop as keyof typeof state.value],\n })\n\n return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {\n // merge the initialState and `options.state`\n // create a new proxy on each `setOptions` call\n // and get the value from state on each property access\n state: mergeProxy(stateProxy, initialOptions.state ?? {}),\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: (updater: any) => {\n if (updater instanceof Function) {\n state.value = updater(state.value)\n } else {\n state.value = updater\n }\n\n initialOptions.onStateChange?.(updater)\n },\n })\n })\n })\n\n return table\n}\n"],"names":["trueFn","$PROXY","Symbol","propTraps","get","_","property","receiver","has","set","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","keys","resolveSource","s","value","mergeProxy","_len","arguments","length","sources","Array","_key","Proxy","i","v","undefined","push","Object","from","Set","FlexRender","defineComponent","props","setup","render","h","getOptionsWithReactiveData","options","data","unref","useVueTable","initialOptions","resolvedOptions","state","onStateChange","renderFallbackValue","table","createTable","isRef","watch","setState","prev","immediate","deep","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","prop","updater","Function"],"mappings":"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"}
|
package/build/lib/index.js
CHANGED
|
@@ -25,36 +25,47 @@ const FlexRender = vue.defineComponent({
|
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
|
-
function
|
|
28
|
+
function getOptionsWithReactiveData(options) {
|
|
29
|
+
return mergeProxy.mergeProxy(options, {
|
|
30
|
+
data: vue.unref(options.data)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function useVueTable(initialOptions) {
|
|
29
34
|
const resolvedOptions = mergeProxy.mergeProxy({
|
|
30
35
|
state: {},
|
|
31
36
|
// Dummy state
|
|
32
37
|
onStateChange: () => {},
|
|
33
38
|
// noop
|
|
34
|
-
renderFallbackValue: null
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
}, options);
|
|
39
|
+
renderFallbackValue: null
|
|
40
|
+
}, getOptionsWithReactiveData(initialOptions));
|
|
41
|
+
const table = tableCore.createTable(resolvedOptions);
|
|
39
42
|
|
|
40
|
-
// Add support
|
|
41
|
-
if (vue.isRef(
|
|
42
|
-
|
|
43
|
+
// Add reactivity support
|
|
44
|
+
if (vue.isRef(initialOptions.data)) {
|
|
45
|
+
vue.watch(initialOptions.data, () => {
|
|
46
|
+
table.setState(prev => ({
|
|
47
|
+
...prev,
|
|
48
|
+
data: vue.unref(initialOptions.data)
|
|
49
|
+
}));
|
|
50
|
+
}, {
|
|
51
|
+
immediate: true,
|
|
52
|
+
deep: true
|
|
53
|
+
});
|
|
43
54
|
}
|
|
44
|
-
|
|
55
|
+
|
|
45
56
|
// can't use `reactive` because update needs to be immutable
|
|
46
57
|
const state = vue.ref(table.initialState);
|
|
47
58
|
vue.watchEffect(() => {
|
|
48
59
|
table.setOptions(prev => {
|
|
49
|
-
var
|
|
60
|
+
var _initialOptions$state;
|
|
50
61
|
const stateProxy = new Proxy({}, {
|
|
51
62
|
get: (_, prop) => state.value[prop]
|
|
52
63
|
});
|
|
53
|
-
|
|
64
|
+
return mergeProxy.mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
54
65
|
// merge the initialState and `options.state`
|
|
55
66
|
// create a new proxy on each `setOptions` call
|
|
56
67
|
// and get the value from state on each property access
|
|
57
|
-
state: mergeProxy.mergeProxy(stateProxy, (
|
|
68
|
+
state: mergeProxy.mergeProxy(stateProxy, (_initialOptions$state = initialOptions.state) != null ? _initialOptions$state : {}),
|
|
58
69
|
// Similarly, we'll maintain both our internal state and any user-provided
|
|
59
70
|
// state.
|
|
60
71
|
onStateChange: updater => {
|
|
@@ -63,18 +74,9 @@ function useVueTable(options) {
|
|
|
63
74
|
} else {
|
|
64
75
|
state.value = updater;
|
|
65
76
|
}
|
|
66
|
-
|
|
77
|
+
initialOptions.onStateChange == null || initialOptions.onStateChange(updater);
|
|
67
78
|
}
|
|
68
79
|
});
|
|
69
|
-
|
|
70
|
-
// Add support for reactivity
|
|
71
|
-
if (vue.isRef(options.data)) {
|
|
72
|
-
return {
|
|
73
|
-
...newOptions,
|
|
74
|
-
data: vue.unref(options.data)
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
return newOptions;
|
|
78
80
|
});
|
|
79
81
|
});
|
|
80
82
|
return table;
|
package/build/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { TableOptions, createTable, RowData } from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n watch,\n} from 'vue'\nimport { mergeProxy } from './merge-proxy'\n\nexport * from '@tanstack/table-core'\n\nexport type TableOptionsWithReactiveData<TData extends RowData> = Omit<\n TableOptions<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\nexport const FlexRender = defineComponent({\n props: ['render', 'props'],\n setup: (props: { render: any; props: any }) => {\n return () => {\n if (\n typeof props.render === 'function' ||\n typeof props.render === 'object'\n ) {\n return h(props.render, props.props)\n }\n\n return props.render\n }\n },\n})\n\nfunction getOptionsWithReactiveData<TData extends RowData>(\n options: TableOptionsWithReactiveData<TData>\n) {\n return mergeProxy(options, {\n data: unref(options.data),\n })\n}\n\nexport function useVueTable<TData extends RowData>(\n initialOptions: TableOptionsWithReactiveData<TData>\n) {\n const resolvedOptions = mergeProxy(\n {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n },\n getOptionsWithReactiveData(initialOptions)\n )\n\n const table = createTable<TData>(resolvedOptions)\n\n // Add reactivity support\n if (isRef(initialOptions.data)) {\n watch(\n initialOptions.data,\n () => {\n table.setState(prev => ({\n ...prev,\n data: unref(initialOptions.data),\n }))\n },\n { immediate: true, deep: true }\n )\n }\n\n // can't use `reactive` because update needs to be immutable\n const state = ref(table.initialState)\n\n watchEffect(() => {\n table.setOptions(prev => {\n const stateProxy = new Proxy({} as typeof state.value, {\n get: (_, prop) => state.value[prop as keyof typeof state.value],\n })\n\n return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {\n // merge the initialState and `options.state`\n // create a new proxy on each `setOptions` call\n // and get the value from state on each property access\n state: mergeProxy(stateProxy, initialOptions.state ?? {}),\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: (updater: any) => {\n if (updater instanceof Function) {\n state.value = updater(state.value)\n } else {\n state.value = updater\n }\n\n initialOptions.onStateChange?.(updater)\n },\n })\n })\n })\n\n return table\n}\n"],"names":["FlexRender","defineComponent","props","setup","render","h","getOptionsWithReactiveData","options","mergeProxy","data","unref","useVueTable","initialOptions","resolvedOptions","state","onStateChange","renderFallbackValue","table","createTable","isRef","watch","setState","prev","immediate","deep","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","Proxy","get","_","prop","value","updater","Function"],"mappings":"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"}
|
package/build/lib/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { createTable } from '@tanstack/table-core';
|
|
12
12
|
export * from '@tanstack/table-core';
|
|
13
|
-
import { defineComponent, h, isRef, unref, ref, watchEffect } from 'vue';
|
|
13
|
+
import { defineComponent, h, isRef, watch, unref, ref, watchEffect } from 'vue';
|
|
14
14
|
|
|
15
15
|
function trueFn() {
|
|
16
16
|
return true;
|
|
@@ -82,36 +82,47 @@ const FlexRender = defineComponent({
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
|
-
function
|
|
85
|
+
function getOptionsWithReactiveData(options) {
|
|
86
|
+
return mergeProxy(options, {
|
|
87
|
+
data: unref(options.data)
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function useVueTable(initialOptions) {
|
|
86
91
|
const resolvedOptions = mergeProxy({
|
|
87
92
|
state: {},
|
|
88
93
|
// Dummy state
|
|
89
94
|
onStateChange: () => {},
|
|
90
95
|
// noop
|
|
91
|
-
renderFallbackValue: null
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
}, options);
|
|
96
|
+
renderFallbackValue: null
|
|
97
|
+
}, getOptionsWithReactiveData(initialOptions));
|
|
98
|
+
const table = createTable(resolvedOptions);
|
|
96
99
|
|
|
97
|
-
// Add support
|
|
98
|
-
if (isRef(
|
|
99
|
-
|
|
100
|
+
// Add reactivity support
|
|
101
|
+
if (isRef(initialOptions.data)) {
|
|
102
|
+
watch(initialOptions.data, () => {
|
|
103
|
+
table.setState(prev => ({
|
|
104
|
+
...prev,
|
|
105
|
+
data: unref(initialOptions.data)
|
|
106
|
+
}));
|
|
107
|
+
}, {
|
|
108
|
+
immediate: true,
|
|
109
|
+
deep: true
|
|
110
|
+
});
|
|
100
111
|
}
|
|
101
|
-
|
|
112
|
+
|
|
102
113
|
// can't use `reactive` because update needs to be immutable
|
|
103
114
|
const state = ref(table.initialState);
|
|
104
115
|
watchEffect(() => {
|
|
105
116
|
table.setOptions(prev => {
|
|
106
|
-
var
|
|
117
|
+
var _initialOptions$state;
|
|
107
118
|
const stateProxy = new Proxy({}, {
|
|
108
119
|
get: (_, prop) => state.value[prop]
|
|
109
120
|
});
|
|
110
|
-
|
|
121
|
+
return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
111
122
|
// merge the initialState and `options.state`
|
|
112
123
|
// create a new proxy on each `setOptions` call
|
|
113
124
|
// and get the value from state on each property access
|
|
114
|
-
state: mergeProxy(stateProxy, (
|
|
125
|
+
state: mergeProxy(stateProxy, (_initialOptions$state = initialOptions.state) != null ? _initialOptions$state : {}),
|
|
115
126
|
// Similarly, we'll maintain both our internal state and any user-provided
|
|
116
127
|
// state.
|
|
117
128
|
onStateChange: updater => {
|
|
@@ -120,18 +131,9 @@ function useVueTable(options) {
|
|
|
120
131
|
} else {
|
|
121
132
|
state.value = updater;
|
|
122
133
|
}
|
|
123
|
-
|
|
134
|
+
initialOptions.onStateChange == null || initialOptions.onStateChange(updater);
|
|
124
135
|
}
|
|
125
136
|
});
|
|
126
|
-
|
|
127
|
-
// Add support for reactivity
|
|
128
|
-
if (isRef(options.data)) {
|
|
129
|
-
return {
|
|
130
|
-
...newOptions,
|
|
131
|
-
data: unref(options.data)
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
return newOptions;
|
|
135
137
|
});
|
|
136
138
|
});
|
|
137
139
|
return table;
|
package/build/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/merge-proxy.ts","../../src/index.ts"],"sourcesContent":["function trueFn() {\n return true\n}\n\nconst $PROXY = Symbol('merge-proxy')\n\n// https://github.com/solidjs/solid/blob/c20ca4fd8c36bc0522fedb2c7f38a110b7ee2663/packages/solid/src/render/component.ts#L51-L118\nconst propTraps: ProxyHandler<{\n get: (k: string | number | symbol) => any\n has: (k: string | number | symbol) => boolean\n keys: () => string[]\n}> = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver\n return _.get(property)\n },\n has(_, property) {\n return _.has(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n }\n },\n ownKeys(_) {\n return _.keys()\n },\n}\n\ntype UnboxLazy<T> = T extends () => infer U ? U : T\ntype BoxedTupleTypes<T extends any[]> = {\n [P in keyof T]: [UnboxLazy<T[P]>]\n}[Exclude<keyof T, keyof any[]>]\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I\n) => void\n ? I\n : never\ntype UnboxIntersection<T> = T extends { 0: infer U } ? U : never\ntype MergeProxy<T extends any[]> = UnboxIntersection<\n UnionToIntersection<BoxedTupleTypes<T>>\n>\n\nfunction resolveSource(s: any) {\n return 'value' in s ? s.value : s\n}\n\nexport function mergeProxy<T extends any[]>(...sources: T): MergeProxy<T>\nexport function mergeProxy(...sources: any): any {\n return new Proxy(\n {\n get(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property]\n if (v !== undefined) return v\n }\n },\n has(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true\n }\n return false\n },\n keys() {\n const keys = []\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])))\n return [...Array.from(new Set(keys))]\n },\n },\n propTraps\n )\n}\n","import {\n TableOptions,\n createTable,\n TableOptionsResolved,\n RowData,\n} from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n} from 'vue'\nimport { mergeProxy } from './merge-proxy'\n\nexport * from '@tanstack/table-core'\n\ntype TableOptionsWithReactiveData<TData extends RowData> = Omit<\n TableOptions<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\ntype TableOptionsResolvedWithReactiveData<TData extends RowData> = Omit<\n TableOptionsResolved<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\nexport const FlexRender = defineComponent({\n props: ['render', 'props'],\n setup: (props: { render: any; props: any }) => {\n return () => {\n if (\n typeof props.render === 'function' ||\n typeof props.render === 'object'\n ) {\n return h(props.render, props.props)\n }\n\n return props.render\n }\n },\n})\n\nexport function useVueTable<TData extends RowData>(\n options: TableOptionsWithReactiveData<TData>\n) {\n const resolvedOptions: TableOptionsResolvedWithReactiveData<TData> =\n mergeProxy(\n {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n mergeOptions(\n defaultOptions: TableOptions<TData>,\n options: TableOptions<TData>\n ) {\n return mergeProxy(defaultOptions, options)\n },\n },\n options\n )\n\n // Add support for reactivity\n if (isRef(options.data)) {\n resolvedOptions.data = unref(options.data)\n }\n\n const table = createTable<TData>(\n resolvedOptions as TableOptionsResolved<TData>\n )\n // can't use `reactive` because update needs to be immutable\n const state = ref(table.initialState)\n\n watchEffect(() => {\n table.setOptions(prev => {\n const stateProxy = new Proxy({} as typeof state.value, {\n get: (_, prop) => state.value[prop as keyof typeof state.value],\n })\n\n const newOptions = mergeProxy(prev, options, {\n // merge the initialState and `options.state`\n // create a new proxy on each `setOptions` call\n // and get the value from state on each property access\n state: mergeProxy(stateProxy, options.state ?? {}),\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: (updater: any) => {\n if (updater instanceof Function) {\n state.value = updater(state.value)\n } else {\n state.value = updater\n }\n\n options.onStateChange?.(updater)\n },\n })\n\n // Add support for reactivity\n if (isRef(options.data)) {\n return {\n ...newOptions,\n data: unref(options.data),\n }\n }\n\n return newOptions\n })\n })\n\n return table\n}\n"],"names":["trueFn","$PROXY","Symbol","propTraps","get","_","property","receiver","has","set","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","keys","resolveSource","s","value","mergeProxy","_len","arguments","length","sources","Array","_key","Proxy","i","v","undefined","push","Object","from","Set","FlexRender","defineComponent","props","setup","render","h","useVueTable","options","resolvedOptions","state","onStateChange","renderFallbackValue","mergeOptions","defaultOptions","isRef","data","unref","table","createTable","ref","initialState","watchEffect","setOptions","prev","_options$state","stateProxy","prop","newOptions","updater","Function"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/merge-proxy.ts","../../src/index.ts"],"sourcesContent":["function trueFn() {\n return true\n}\n\nconst $PROXY = Symbol('merge-proxy')\n\n// https://github.com/solidjs/solid/blob/c20ca4fd8c36bc0522fedb2c7f38a110b7ee2663/packages/solid/src/render/component.ts#L51-L118\nconst propTraps: ProxyHandler<{\n get: (k: string | number | symbol) => any\n has: (k: string | number | symbol) => boolean\n keys: () => string[]\n}> = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver\n return _.get(property)\n },\n has(_, property) {\n return _.has(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property)\n },\n set: trueFn,\n deleteProperty: trueFn,\n }\n },\n ownKeys(_) {\n return _.keys()\n },\n}\n\ntype UnboxLazy<T> = T extends () => infer U ? U : T\ntype BoxedTupleTypes<T extends any[]> = {\n [P in keyof T]: [UnboxLazy<T[P]>]\n}[Exclude<keyof T, keyof any[]>]\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I\n) => void\n ? I\n : never\ntype UnboxIntersection<T> = T extends { 0: infer U } ? U : never\ntype MergeProxy<T extends any[]> = UnboxIntersection<\n UnionToIntersection<BoxedTupleTypes<T>>\n>\n\nfunction resolveSource(s: any) {\n return 'value' in s ? s.value : s\n}\n\nexport function mergeProxy<T extends any[]>(...sources: T): MergeProxy<T>\nexport function mergeProxy(...sources: any): any {\n return new Proxy(\n {\n get(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property]\n if (v !== undefined) return v\n }\n },\n has(property: string | number | symbol) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true\n }\n return false\n },\n keys() {\n const keys = []\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])))\n return [...Array.from(new Set(keys))]\n },\n },\n propTraps\n )\n}\n","import { TableOptions, createTable, RowData } from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n watch,\n} from 'vue'\nimport { mergeProxy } from './merge-proxy'\n\nexport * from '@tanstack/table-core'\n\nexport type TableOptionsWithReactiveData<TData extends RowData> = Omit<\n TableOptions<TData>,\n 'data'\n> & {\n data: MaybeRef<TData[]>\n}\n\nexport const FlexRender = defineComponent({\n props: ['render', 'props'],\n setup: (props: { render: any; props: any }) => {\n return () => {\n if (\n typeof props.render === 'function' ||\n typeof props.render === 'object'\n ) {\n return h(props.render, props.props)\n }\n\n return props.render\n }\n },\n})\n\nfunction getOptionsWithReactiveData<TData extends RowData>(\n options: TableOptionsWithReactiveData<TData>\n) {\n return mergeProxy(options, {\n data: unref(options.data),\n })\n}\n\nexport function useVueTable<TData extends RowData>(\n initialOptions: TableOptionsWithReactiveData<TData>\n) {\n const resolvedOptions = mergeProxy(\n {\n state: {}, // Dummy state\n onStateChange: () => {}, // noop\n renderFallbackValue: null,\n },\n getOptionsWithReactiveData(initialOptions)\n )\n\n const table = createTable<TData>(resolvedOptions)\n\n // Add reactivity support\n if (isRef(initialOptions.data)) {\n watch(\n initialOptions.data,\n () => {\n table.setState(prev => ({\n ...prev,\n data: unref(initialOptions.data),\n }))\n },\n { immediate: true, deep: true }\n )\n }\n\n // can't use `reactive` because update needs to be immutable\n const state = ref(table.initialState)\n\n watchEffect(() => {\n table.setOptions(prev => {\n const stateProxy = new Proxy({} as typeof state.value, {\n get: (_, prop) => state.value[prop as keyof typeof state.value],\n })\n\n return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {\n // merge the initialState and `options.state`\n // create a new proxy on each `setOptions` call\n // and get the value from state on each property access\n state: mergeProxy(stateProxy, initialOptions.state ?? {}),\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: (updater: any) => {\n if (updater instanceof Function) {\n state.value = updater(state.value)\n } else {\n state.value = updater\n }\n\n initialOptions.onStateChange?.(updater)\n },\n })\n })\n })\n\n return table\n}\n"],"names":["trueFn","$PROXY","Symbol","propTraps","get","_","property","receiver","has","set","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","keys","resolveSource","s","value","mergeProxy","_len","arguments","length","sources","Array","_key","Proxy","i","v","undefined","push","Object","from","Set","FlexRender","defineComponent","props","setup","render","h","getOptionsWithReactiveData","options","data","unref","useVueTable","initialOptions","resolvedOptions","state","onStateChange","renderFallbackValue","table","createTable","isRef","watch","setState","prev","immediate","deep","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","prop","updater","Function"],"mappings":"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"}
|
|
@@ -3602,36 +3602,47 @@
|
|
|
3602
3602
|
};
|
|
3603
3603
|
}
|
|
3604
3604
|
});
|
|
3605
|
-
function
|
|
3605
|
+
function getOptionsWithReactiveData(options) {
|
|
3606
|
+
return mergeProxy(options, {
|
|
3607
|
+
data: vue.unref(options.data)
|
|
3608
|
+
});
|
|
3609
|
+
}
|
|
3610
|
+
function useVueTable(initialOptions) {
|
|
3606
3611
|
const resolvedOptions = mergeProxy({
|
|
3607
3612
|
state: {},
|
|
3608
3613
|
// Dummy state
|
|
3609
3614
|
onStateChange: () => {},
|
|
3610
3615
|
// noop
|
|
3611
|
-
renderFallbackValue: null
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
}
|
|
3615
|
-
}, options);
|
|
3616
|
+
renderFallbackValue: null
|
|
3617
|
+
}, getOptionsWithReactiveData(initialOptions));
|
|
3618
|
+
const table = createTable(resolvedOptions);
|
|
3616
3619
|
|
|
3617
|
-
// Add support
|
|
3618
|
-
if (vue.isRef(
|
|
3619
|
-
|
|
3620
|
+
// Add reactivity support
|
|
3621
|
+
if (vue.isRef(initialOptions.data)) {
|
|
3622
|
+
vue.watch(initialOptions.data, () => {
|
|
3623
|
+
table.setState(prev => ({
|
|
3624
|
+
...prev,
|
|
3625
|
+
data: vue.unref(initialOptions.data)
|
|
3626
|
+
}));
|
|
3627
|
+
}, {
|
|
3628
|
+
immediate: true,
|
|
3629
|
+
deep: true
|
|
3630
|
+
});
|
|
3620
3631
|
}
|
|
3621
|
-
|
|
3632
|
+
|
|
3622
3633
|
// can't use `reactive` because update needs to be immutable
|
|
3623
3634
|
const state = vue.ref(table.initialState);
|
|
3624
3635
|
vue.watchEffect(() => {
|
|
3625
3636
|
table.setOptions(prev => {
|
|
3626
|
-
var
|
|
3637
|
+
var _initialOptions$state;
|
|
3627
3638
|
const stateProxy = new Proxy({}, {
|
|
3628
3639
|
get: (_, prop) => state.value[prop]
|
|
3629
3640
|
});
|
|
3630
|
-
|
|
3641
|
+
return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
3631
3642
|
// merge the initialState and `options.state`
|
|
3632
3643
|
// create a new proxy on each `setOptions` call
|
|
3633
3644
|
// and get the value from state on each property access
|
|
3634
|
-
state: mergeProxy(stateProxy, (
|
|
3645
|
+
state: mergeProxy(stateProxy, (_initialOptions$state = initialOptions.state) != null ? _initialOptions$state : {}),
|
|
3635
3646
|
// Similarly, we'll maintain both our internal state and any user-provided
|
|
3636
3647
|
// state.
|
|
3637
3648
|
onStateChange: updater => {
|
|
@@ -3640,18 +3651,9 @@
|
|
|
3640
3651
|
} else {
|
|
3641
3652
|
state.value = updater;
|
|
3642
3653
|
}
|
|
3643
|
-
|
|
3654
|
+
initialOptions.onStateChange == null || initialOptions.onStateChange(updater);
|
|
3644
3655
|
}
|
|
3645
3656
|
});
|
|
3646
|
-
|
|
3647
|
-
// Add support for reactivity
|
|
3648
|
-
if (vue.isRef(options.data)) {
|
|
3649
|
-
return {
|
|
3650
|
-
...newOptions,
|
|
3651
|
-
data: vue.unref(options.data)
|
|
3652
|
-
};
|
|
3653
|
-
}
|
|
3654
|
-
return newOptions;
|
|
3655
3657
|
});
|
|
3656
3658
|
});
|
|
3657
3659
|
return table;
|