@tanstack/vue-table 8.20.2 → 8.20.4
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 +1 -1
- package/build/lib/index.esm.js +13 -9
- package/build/lib/index.esm.js.map +1 -1
- package/build/lib/index.js +12 -8
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +13 -9
- package/build/lib/index.mjs.map +1 -1
- package/build/umd/index.development.js +12 -8
- 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 +47 -25
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<{
|
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,
|
|
13
|
+
import { defineComponent, h, isRef, shallowRef, watch, ref, watchEffect, unref } from 'vue';
|
|
14
14
|
|
|
15
15
|
function trueFn() {
|
|
16
16
|
return true;
|
|
@@ -88,6 +88,7 @@ function getOptionsWithReactiveData(options) {
|
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
function useVueTable(initialOptions) {
|
|
91
|
+
const IS_REACTIVE = isRef(initialOptions.data);
|
|
91
92
|
const resolvedOptions = mergeProxy({
|
|
92
93
|
state: {},
|
|
93
94
|
// Dummy state
|
|
@@ -95,21 +96,24 @@ function useVueTable(initialOptions) {
|
|
|
95
96
|
// noop
|
|
96
97
|
renderFallbackValue: null,
|
|
97
98
|
mergeOptions(defaultOptions, options) {
|
|
98
|
-
return
|
|
99
|
+
return IS_REACTIVE ? {
|
|
100
|
+
...defaultOptions,
|
|
101
|
+
...options
|
|
102
|
+
} : mergeProxy(defaultOptions, options);
|
|
99
103
|
}
|
|
100
|
-
}, getOptionsWithReactiveData(initialOptions));
|
|
104
|
+
}, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
|
|
101
105
|
const table = createTable(resolvedOptions);
|
|
102
106
|
|
|
103
107
|
// Add reactivity support
|
|
104
|
-
if (
|
|
105
|
-
|
|
108
|
+
if (IS_REACTIVE) {
|
|
109
|
+
const dataRef = shallowRef(initialOptions.data);
|
|
110
|
+
watch(dataRef, () => {
|
|
106
111
|
table.setState(prev => ({
|
|
107
112
|
...prev,
|
|
108
|
-
data:
|
|
113
|
+
data: dataRef.value
|
|
109
114
|
}));
|
|
110
115
|
}, {
|
|
111
|
-
immediate: true
|
|
112
|
-
deep: true
|
|
116
|
+
immediate: true
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
119
|
|
|
@@ -121,7 +125,7 @@ function useVueTable(initialOptions) {
|
|
|
121
125
|
const stateProxy = new Proxy({}, {
|
|
122
126
|
get: (_, prop) => state.value[prop]
|
|
123
127
|
});
|
|
124
|
-
return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
128
|
+
return mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
|
|
125
129
|
// merge the initialState and `options.state`
|
|
126
130
|
// create a new proxy on each `setOptions` call
|
|
127
131
|
// and get the value from state on each property access
|
|
@@ -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 { 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\ntype 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 mergeOptions(\n defaultOptions: TableOptions<TData>,\n options: TableOptions<TData>\n ) {\n return mergeProxy(defaultOptions, options)\n },\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","mergeOptions","defaultOptions","table","createTable","isRef","watch","setState","prev","immediate","deep","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","prop","updater","Function"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,MAAMA,GAAG;AAChB,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEA,MAAMC,MAAM,GAAGC,MAAM,CAAC,aAAa,CAAC,CAAA;;AAEpC;AACA,MAAMC,SAIJ,GAAG;AACHC,EAAAA,GAAGA,CAACC,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAE;AACzB,IAAA,IAAID,QAAQ,KAAKL,MAAM,EAAE,OAAOM,QAAQ,CAAA;AACxC,IAAA,OAAOF,CAAC,CAACD,GAAG,CAACE,QAAQ,CAAC,CAAA;GACvB;AACDE,EAAAA,GAAGA,CAACH,CAAC,EAAEC,QAAQ,EAAE;AACf,IAAA,OAAOD,CAAC,CAACG,GAAG,CAACF,QAAQ,CAAC,CAAA;GACvB;AACDG,EAAAA,GAAG,EAAET,MAAM;AACXU,EAAAA,cAAc,EAAEV,MAAM;AACtBW,EAAAA,wBAAwBA,CAACN,CAAC,EAAEC,QAAQ,EAAE;IACpC,OAAO;AACLM,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,UAAU,EAAE,IAAI;AAChBT,MAAAA,GAAGA,GAAG;AACJ,QAAA,OAAOC,CAAC,CAACD,GAAG,CAACE,QAAQ,CAAC,CAAA;OACvB;AACDG,MAAAA,GAAG,EAAET,MAAM;AACXU,MAAAA,cAAc,EAAEV,MAAAA;KACjB,CAAA;GACF;EACDc,OAAOA,CAACT,CAAC,EAAE;AACT,IAAA,OAAOA,CAAC,CAACU,IAAI,EAAE,CAAA;AACjB,GAAA;AACF,CAAC,CAAA;AAgBD,SAASC,aAAaA,CAACC,CAAM,EAAE;EAC7B,OAAO,OAAO,IAAIA,CAAC,GAAGA,CAAC,CAACC,KAAK,GAAGD,CAAC,CAAA;AACnC,CAAA;AAGO,SAASE,UAAUA,GAAuB;AAAA,EAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAnBC,OAAO,GAAAC,IAAAA,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAPF,IAAAA,OAAO,CAAAE,IAAA,CAAAJ,GAAAA,SAAA,CAAAI,IAAA,CAAA,CAAA;AAAA,GAAA;EACnC,OAAO,IAAIC,KAAK,CACd;IACEtB,GAAGA,CAACE,QAAkC,EAAE;AACtC,MAAA,KAAK,IAAIqB,CAAC,GAAGJ,OAAO,CAACD,MAAM,GAAG,CAAC,EAAEK,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAC5C,MAAMC,CAAC,GAAGZ,aAAa,CAACO,OAAO,CAACI,CAAC,CAAC,CAAC,CAACrB,QAAQ,CAAC,CAAA;AAC7C,QAAA,IAAIsB,CAAC,KAAKC,SAAS,EAAE,OAAOD,CAAC,CAAA;AAC/B,OAAA;KACD;IACDpB,GAAGA,CAACF,QAAkC,EAAE;AACtC,MAAA,KAAK,IAAIqB,CAAC,GAAGJ,OAAO,CAACD,MAAM,GAAG,CAAC,EAAEK,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAC5C,IAAIrB,QAAQ,IAAIU,aAAa,CAACO,OAAO,CAACI,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AACxD,OAAA;AACA,MAAA,OAAO,KAAK,CAAA;KACb;AACDZ,IAAAA,IAAIA,GAAG;MACL,MAAMA,IAAI,GAAG,EAAE,CAAA;AACf,MAAA,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,OAAO,CAACD,MAAM,EAAEK,CAAC,EAAE,EACrCZ,IAAI,CAACe,IAAI,CAAC,GAAGC,MAAM,CAAChB,IAAI,CAACC,aAAa,CAACO,OAAO,CAACI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,MAAA,OAAO,CAAC,GAAGH,KAAK,CAACQ,IAAI,CAAC,IAAIC,GAAG,CAAClB,IAAI,CAAC,CAAC,CAAC,CAAA;AACvC,KAAA;GACD,EACDZ,SACF,CAAC,CAAA;AACH;;AC1Da+B,MAAAA,UAAU,GAAGC,eAAe,CAAC;AACxCC,EAAAA,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;EAC1BC,KAAK,EAAGD,KAAkC,IAAK;AAC7C,IAAA,OAAO,MAAM;AACX,MAAA,IACE,OAAOA,KAAK,CAACE,MAAM,KAAK,UAAU,IAClC,OAAOF,KAAK,CAACE,MAAM,KAAK,QAAQ,EAChC;QACA,OAAOC,CAAC,CAACH,KAAK,CAACE,MAAM,EAAEF,KAAK,CAACA,KAAK,CAAC,CAAA;AACrC,OAAA;MAEA,OAAOA,KAAK,CAACE,MAAM,CAAA;KACpB,CAAA;AACH,GAAA;AACF,CAAC,EAAC;AAEF,SAASE,0BAA0BA,CACjCC,OAA4C,EAC5C;EACA,OAAOtB,UAAU,CAACsB,OAAO,EAAE;AACzBC,IAAAA,IAAI,EAAEC,KAAK,CAACF,OAAO,CAACC,IAAI,CAAA;AAC1B,GAAC,CAAC,CAAA;AACJ,CAAA;AAEO,SAASE,WAAWA,CACzBC,cAAmD,EACnD;EACA,MAAMC,eAAe,GAAG3B,UAAU,CAChC;IACE4B,KAAK,EAAE,EAAE;AAAE;AACXC,IAAAA,aAAa,EAAEA,MAAM,EAAE;AAAE;AACzBC,IAAAA,mBAAmB,EAAE,IAAI;AACzBC,IAAAA,YAAYA,CACVC,cAAmC,EACnCV,OAA4B,EAC5B;AACA,MAAA,OAAOtB,UAAU,CAACgC,cAAc,EAAEV,OAAO,CAAC,CAAA;AAC5C,KAAA;AACF,GAAC,EACDD,0BAA0B,CAACK,cAAc,CAC3C,CAAC,CAAA;AAED,EAAA,MAAMO,KAAK,GAAGC,WAAW,CAAQP,eAAe,CAAC,CAAA;;AAEjD;AACA,EAAA,IAAIQ,KAAK,CAACT,cAAc,CAACH,IAAI,CAAC,EAAE;AAC9Ba,IAAAA,KAAK,CACHV,cAAc,CAACH,IAAI,EACnB,MAAM;AACJU,MAAAA,KAAK,CAACI,QAAQ,CAACC,IAAI,KAAK;AACtB,QAAA,GAAGA,IAAI;AACPf,QAAAA,IAAI,EAAEC,KAAK,CAACE,cAAc,CAACH,IAAI,CAAA;AACjC,OAAC,CAAC,CAAC,CAAA;AACL,KAAC,EACD;AAAEgB,MAAAA,SAAS,EAAE,IAAI;AAAEC,MAAAA,IAAI,EAAE,IAAA;AAAK,KAChC,CAAC,CAAA;AACH,GAAA;;AAEA;AACA,EAAA,MAAMZ,KAAK,GAAGa,GAAG,CAACR,KAAK,CAACS,YAAY,CAAC,CAAA;AAErCC,EAAAA,WAAW,CAAC,MAAM;AAChBV,IAAAA,KAAK,CAACW,UAAU,CAACN,IAAI,IAAI;AAAA,MAAA,IAAAO,qBAAA,CAAA;AACvB,MAAA,MAAMC,UAAU,GAAG,IAAIvC,KAAK,CAAC,EAAE,EAAwB;QACrDtB,GAAG,EAAEA,CAACC,CAAC,EAAE6D,IAAI,KAAKnB,KAAK,CAAC7B,KAAK,CAACgD,IAAI,CAAA;AACpC,OAAC,CAAC,CAAA;MAEF,OAAO/C,UAAU,CAACsC,IAAI,EAAEjB,0BAA0B,CAACK,cAAc,CAAC,EAAE;AAClE;AACA;AACA;AACAE,QAAAA,KAAK,EAAE5B,UAAU,CAAC8C,UAAU,GAAAD,qBAAA,GAAEnB,cAAc,CAACE,KAAK,KAAAiB,IAAAA,GAAAA,qBAAA,GAAI,EAAE,CAAC;AACzD;AACA;QACAhB,aAAa,EAAGmB,OAAY,IAAK;UAC/B,IAAIA,OAAO,YAAYC,QAAQ,EAAE;YAC/BrB,KAAK,CAAC7B,KAAK,GAAGiD,OAAO,CAACpB,KAAK,CAAC7B,KAAK,CAAC,CAAA;AACpC,WAAC,MAAM;YACL6B,KAAK,CAAC7B,KAAK,GAAGiD,OAAO,CAAA;AACvB,WAAA;UAEAtB,cAAc,CAACG,aAAa,IAA5BH,IAAAA,IAAAA,cAAc,CAACG,aAAa,CAAGmB,OAAO,CAAC,CAAA;AACzC,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOf,KAAK,CAAA;AACd;;;;"}
|
|
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 RowData,\n TableOptionsResolved,\n} from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n watch,\n shallowRef,\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 IS_REACTIVE = isRef(initialOptions.data)\n\n const resolvedOptions = 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 IS_REACTIVE\n ? {\n ...defaultOptions,\n ...options,\n }\n : mergeProxy(defaultOptions, options)\n },\n },\n IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions\n )\n\n const table = createTable<TData>(\n resolvedOptions as TableOptionsResolved<TData>\n )\n\n // Add reactivity support\n if (IS_REACTIVE) {\n const dataRef = shallowRef(initialOptions.data)\n watch(\n dataRef,\n () => {\n table.setState(prev => ({\n ...prev,\n data: dataRef.value,\n }))\n },\n { immediate: 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(\n prev,\n IS_REACTIVE\n ? getOptionsWithReactiveData(initialOptions)\n : initialOptions,\n {\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\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","IS_REACTIVE","isRef","resolvedOptions","state","onStateChange","renderFallbackValue","mergeOptions","defaultOptions","table","createTable","dataRef","shallowRef","watch","setState","prev","immediate","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","prop","updater","Function"],"mappings":"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"}
|
package/build/lib/index.js
CHANGED
|
@@ -31,6 +31,7 @@ function getOptionsWithReactiveData(options) {
|
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
function useVueTable(initialOptions) {
|
|
34
|
+
const IS_REACTIVE = vue.isRef(initialOptions.data);
|
|
34
35
|
const resolvedOptions = mergeProxy.mergeProxy({
|
|
35
36
|
state: {},
|
|
36
37
|
// Dummy state
|
|
@@ -38,21 +39,24 @@ function useVueTable(initialOptions) {
|
|
|
38
39
|
// noop
|
|
39
40
|
renderFallbackValue: null,
|
|
40
41
|
mergeOptions(defaultOptions, options) {
|
|
41
|
-
return
|
|
42
|
+
return IS_REACTIVE ? {
|
|
43
|
+
...defaultOptions,
|
|
44
|
+
...options
|
|
45
|
+
} : mergeProxy.mergeProxy(defaultOptions, options);
|
|
42
46
|
}
|
|
43
|
-
}, getOptionsWithReactiveData(initialOptions));
|
|
47
|
+
}, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
|
|
44
48
|
const table = tableCore.createTable(resolvedOptions);
|
|
45
49
|
|
|
46
50
|
// Add reactivity support
|
|
47
|
-
if (
|
|
48
|
-
vue.
|
|
51
|
+
if (IS_REACTIVE) {
|
|
52
|
+
const dataRef = vue.shallowRef(initialOptions.data);
|
|
53
|
+
vue.watch(dataRef, () => {
|
|
49
54
|
table.setState(prev => ({
|
|
50
55
|
...prev,
|
|
51
|
-
data:
|
|
56
|
+
data: dataRef.value
|
|
52
57
|
}));
|
|
53
58
|
}, {
|
|
54
|
-
immediate: true
|
|
55
|
-
deep: true
|
|
59
|
+
immediate: true
|
|
56
60
|
});
|
|
57
61
|
}
|
|
58
62
|
|
|
@@ -64,7 +68,7 @@ function useVueTable(initialOptions) {
|
|
|
64
68
|
const stateProxy = new Proxy({}, {
|
|
65
69
|
get: (_, prop) => state.value[prop]
|
|
66
70
|
});
|
|
67
|
-
return mergeProxy.mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
71
|
+
return mergeProxy.mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
|
|
68
72
|
// merge the initialState and `options.state`
|
|
69
73
|
// create a new proxy on each `setOptions` call
|
|
70
74
|
// and get the value from state on each property access
|
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 {\n TableOptions,\n createTable,\n RowData,\n TableOptionsResolved,\n} from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n watch,\n shallowRef,\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 IS_REACTIVE = isRef(initialOptions.data)\n\n const resolvedOptions = 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 IS_REACTIVE\n ? {\n ...defaultOptions,\n ...options,\n }\n : mergeProxy(defaultOptions, options)\n },\n },\n IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions\n )\n\n const table = createTable<TData>(\n resolvedOptions as TableOptionsResolved<TData>\n )\n\n // Add reactivity support\n if (IS_REACTIVE) {\n const dataRef = shallowRef(initialOptions.data)\n watch(\n dataRef,\n () => {\n table.setState(prev => ({\n ...prev,\n data: dataRef.value,\n }))\n },\n { immediate: 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(\n prev,\n IS_REACTIVE\n ? getOptionsWithReactiveData(initialOptions)\n : initialOptions,\n {\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\n return table\n}\n"],"names":["FlexRender","defineComponent","props","setup","render","h","getOptionsWithReactiveData","options","mergeProxy","data","unref","useVueTable","initialOptions","IS_REACTIVE","isRef","resolvedOptions","state","onStateChange","renderFallbackValue","mergeOptions","defaultOptions","table","createTable","dataRef","shallowRef","watch","setState","prev","value","immediate","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","Proxy","get","_","prop","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,
|
|
13
|
+
import { defineComponent, h, isRef, shallowRef, watch, ref, watchEffect, unref } from 'vue';
|
|
14
14
|
|
|
15
15
|
function trueFn() {
|
|
16
16
|
return true;
|
|
@@ -88,6 +88,7 @@ function getOptionsWithReactiveData(options) {
|
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
function useVueTable(initialOptions) {
|
|
91
|
+
const IS_REACTIVE = isRef(initialOptions.data);
|
|
91
92
|
const resolvedOptions = mergeProxy({
|
|
92
93
|
state: {},
|
|
93
94
|
// Dummy state
|
|
@@ -95,21 +96,24 @@ function useVueTable(initialOptions) {
|
|
|
95
96
|
// noop
|
|
96
97
|
renderFallbackValue: null,
|
|
97
98
|
mergeOptions(defaultOptions, options) {
|
|
98
|
-
return
|
|
99
|
+
return IS_REACTIVE ? {
|
|
100
|
+
...defaultOptions,
|
|
101
|
+
...options
|
|
102
|
+
} : mergeProxy(defaultOptions, options);
|
|
99
103
|
}
|
|
100
|
-
}, getOptionsWithReactiveData(initialOptions));
|
|
104
|
+
}, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
|
|
101
105
|
const table = createTable(resolvedOptions);
|
|
102
106
|
|
|
103
107
|
// Add reactivity support
|
|
104
|
-
if (
|
|
105
|
-
|
|
108
|
+
if (IS_REACTIVE) {
|
|
109
|
+
const dataRef = shallowRef(initialOptions.data);
|
|
110
|
+
watch(dataRef, () => {
|
|
106
111
|
table.setState(prev => ({
|
|
107
112
|
...prev,
|
|
108
|
-
data:
|
|
113
|
+
data: dataRef.value
|
|
109
114
|
}));
|
|
110
115
|
}, {
|
|
111
|
-
immediate: true
|
|
112
|
-
deep: true
|
|
116
|
+
immediate: true
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
119
|
|
|
@@ -121,7 +125,7 @@ function useVueTable(initialOptions) {
|
|
|
121
125
|
const stateProxy = new Proxy({}, {
|
|
122
126
|
get: (_, prop) => state.value[prop]
|
|
123
127
|
});
|
|
124
|
-
return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
128
|
+
return mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
|
|
125
129
|
// merge the initialState and `options.state`
|
|
126
130
|
// create a new proxy on each `setOptions` call
|
|
127
131
|
// and get the value from state on each property access
|
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 { 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\ntype 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 mergeOptions(\n defaultOptions: TableOptions<TData>,\n options: TableOptions<TData>\n ) {\n return mergeProxy(defaultOptions, options)\n },\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","mergeOptions","defaultOptions","table","createTable","isRef","watch","setState","prev","immediate","deep","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","prop","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 {\n TableOptions,\n createTable,\n RowData,\n TableOptionsResolved,\n} from '@tanstack/table-core'\nimport {\n h,\n watchEffect,\n ref,\n defineComponent,\n isRef,\n unref,\n MaybeRef,\n watch,\n shallowRef,\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 IS_REACTIVE = isRef(initialOptions.data)\n\n const resolvedOptions = 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 IS_REACTIVE\n ? {\n ...defaultOptions,\n ...options,\n }\n : mergeProxy(defaultOptions, options)\n },\n },\n IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions\n )\n\n const table = createTable<TData>(\n resolvedOptions as TableOptionsResolved<TData>\n )\n\n // Add reactivity support\n if (IS_REACTIVE) {\n const dataRef = shallowRef(initialOptions.data)\n watch(\n dataRef,\n () => {\n table.setState(prev => ({\n ...prev,\n data: dataRef.value,\n }))\n },\n { immediate: 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(\n prev,\n IS_REACTIVE\n ? getOptionsWithReactiveData(initialOptions)\n : initialOptions,\n {\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\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","IS_REACTIVE","isRef","resolvedOptions","state","onStateChange","renderFallbackValue","mergeOptions","defaultOptions","table","createTable","dataRef","shallowRef","watch","setState","prev","immediate","ref","initialState","watchEffect","setOptions","_initialOptions$state","stateProxy","prop","updater","Function"],"mappings":"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"}
|
|
@@ -3608,6 +3608,7 @@
|
|
|
3608
3608
|
});
|
|
3609
3609
|
}
|
|
3610
3610
|
function useVueTable(initialOptions) {
|
|
3611
|
+
const IS_REACTIVE = vue.isRef(initialOptions.data);
|
|
3611
3612
|
const resolvedOptions = mergeProxy({
|
|
3612
3613
|
state: {},
|
|
3613
3614
|
// Dummy state
|
|
@@ -3615,21 +3616,24 @@
|
|
|
3615
3616
|
// noop
|
|
3616
3617
|
renderFallbackValue: null,
|
|
3617
3618
|
mergeOptions(defaultOptions, options) {
|
|
3618
|
-
return
|
|
3619
|
+
return IS_REACTIVE ? {
|
|
3620
|
+
...defaultOptions,
|
|
3621
|
+
...options
|
|
3622
|
+
} : mergeProxy(defaultOptions, options);
|
|
3619
3623
|
}
|
|
3620
|
-
}, getOptionsWithReactiveData(initialOptions));
|
|
3624
|
+
}, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
|
|
3621
3625
|
const table = createTable(resolvedOptions);
|
|
3622
3626
|
|
|
3623
3627
|
// Add reactivity support
|
|
3624
|
-
if (
|
|
3625
|
-
vue.
|
|
3628
|
+
if (IS_REACTIVE) {
|
|
3629
|
+
const dataRef = vue.shallowRef(initialOptions.data);
|
|
3630
|
+
vue.watch(dataRef, () => {
|
|
3626
3631
|
table.setState(prev => ({
|
|
3627
3632
|
...prev,
|
|
3628
|
-
data:
|
|
3633
|
+
data: dataRef.value
|
|
3629
3634
|
}));
|
|
3630
3635
|
}, {
|
|
3631
|
-
immediate: true
|
|
3632
|
-
deep: true
|
|
3636
|
+
immediate: true
|
|
3633
3637
|
});
|
|
3634
3638
|
}
|
|
3635
3639
|
|
|
@@ -3641,7 +3645,7 @@
|
|
|
3641
3645
|
const stateProxy = new Proxy({}, {
|
|
3642
3646
|
get: (_, prop) => state.value[prop]
|
|
3643
3647
|
});
|
|
3644
|
-
return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
|
|
3648
|
+
return mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
|
|
3645
3649
|
// merge the initialState and `options.state`
|
|
3646
3650
|
// create a new proxy on each `setOptions` call
|
|
3647
3651
|
// and get the value from state on each property access
|