@tanstack/vue-table 8.20.3 → 8.20.5

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.
@@ -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, watch, unref, ref, watchEffect } from 'vue';
13
+ import { defineComponent, h, isRef, shallowRef, watch, ref, watchEffect, unref } from 'vue';
14
14
 
15
15
  function trueFn() {
16
16
  return true;
@@ -88,25 +88,32 @@ 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
94
95
  onStateChange: () => {},
95
96
  // noop
96
- renderFallbackValue: null
97
- }, getOptionsWithReactiveData(initialOptions));
97
+ renderFallbackValue: null,
98
+ mergeOptions(defaultOptions, options) {
99
+ return IS_REACTIVE ? {
100
+ ...defaultOptions,
101
+ ...options
102
+ } : mergeProxy(defaultOptions, options);
103
+ }
104
+ }, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
98
105
  const table = createTable(resolvedOptions);
99
106
 
100
107
  // Add reactivity support
101
- if (isRef(initialOptions.data)) {
102
- watch(initialOptions.data, () => {
108
+ if (IS_REACTIVE) {
109
+ const dataRef = shallowRef(initialOptions.data);
110
+ watch(dataRef, () => {
103
111
  table.setState(prev => ({
104
112
  ...prev,
105
- data: unref(initialOptions.data)
113
+ data: dataRef.value
106
114
  }));
107
115
  }, {
108
- immediate: true,
109
- deep: true
116
+ immediate: true
110
117
  });
111
118
  }
112
119
 
@@ -118,7 +125,7 @@ function useVueTable(initialOptions) {
118
125
  const stateProxy = new Proxy({}, {
119
126
  get: (_, prop) => state.value[prop]
120
127
  });
121
- return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
128
+ return mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
122
129
  // merge the initialState and `options.state`
123
130
  // create a new proxy on each `setOptions` call
124
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\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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"}
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":";;;;;;;;;;;;;;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;;ACpDa+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;AACA,EAAA,MAAMC,WAAW,GAAGC,KAAK,CAACF,cAAc,CAACH,IAAI,CAAC,CAAA;EAE9C,MAAMM,eAAe,GAAG7B,UAAU,CAChC;IACE8B,KAAK,EAAE,EAAE;AAAE;AACXC,IAAAA,aAAa,EAAEA,MAAM,EAAE;AAAE;AACzBC,IAAAA,mBAAmB,EAAE,IAAI;AACzBC,IAAAA,YAAYA,CACVC,cAAmC,EACnCZ,OAA4B,EAC5B;AACA,MAAA,OAAOK,WAAW,GACd;AACE,QAAA,GAAGO,cAAc;QACjB,GAAGZ,OAAAA;AACL,OAAC,GACDtB,UAAU,CAACkC,cAAc,EAAEZ,OAAO,CAAC,CAAA;AACzC,KAAA;GACD,EACDK,WAAW,GAAGN,0BAA0B,CAACK,cAAc,CAAC,GAAGA,cAC7D,CAAC,CAAA;AAED,EAAA,MAAMS,KAAK,GAAGC,WAAW,CACvBP,eACF,CAAC,CAAA;;AAED;AACA,EAAA,IAAIF,WAAW,EAAE;AACf,IAAA,MAAMU,OAAO,GAAGC,UAAU,CAACZ,cAAc,CAACH,IAAI,CAAC,CAAA;IAC/CgB,KAAK,CACHF,OAAO,EACP,MAAM;AACJF,MAAAA,KAAK,CAACK,QAAQ,CAACC,IAAI,KAAK;AACtB,QAAA,GAAGA,IAAI;QACPlB,IAAI,EAAEc,OAAO,CAACtC,KAAAA;AAChB,OAAC,CAAC,CAAC,CAAA;AACL,KAAC,EACD;AAAE2C,MAAAA,SAAS,EAAE,IAAA;AAAK,KACpB,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,CAACL,IAAI,IAAI;AAAA,MAAA,IAAAM,qBAAA,CAAA;AACvB,MAAA,MAAMC,UAAU,GAAG,IAAIzC,KAAK,CAAC,EAAE,EAAwB;QACrDtB,GAAG,EAAEA,CAACC,CAAC,EAAE+D,IAAI,KAAKnB,KAAK,CAAC/B,KAAK,CAACkD,IAAI,CAAA;AACpC,OAAC,CAAC,CAAA;AAEF,MAAA,OAAOjD,UAAU,CACfyC,IAAI,EACJd,WAAW,GACPN,0BAA0B,CAACK,cAAc,CAAC,GAC1CA,cAAc,EAClB;AACE;AACA;AACA;AACAI,QAAAA,KAAK,EAAE9B,UAAU,CAACgD,UAAU,GAAAD,qBAAA,GAAErB,cAAc,CAACI,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,CAAC/B,KAAK,GAAGmD,OAAO,CAACpB,KAAK,CAAC/B,KAAK,CAAC,CAAA;AACpC,WAAC,MAAM;YACL+B,KAAK,CAAC/B,KAAK,GAAGmD,OAAO,CAAA;AACvB,WAAA;UAEAxB,cAAc,CAACK,aAAa,IAA5BL,IAAAA,IAAAA,cAAc,CAACK,aAAa,CAAGmB,OAAO,CAAC,CAAA;AACzC,SAAA;AACF,OACF,CAAC,CAAA;AACH,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOf,KAAK,CAAA;AACd;;;;"}
@@ -31,25 +31,32 @@ 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
37
38
  onStateChange: () => {},
38
39
  // noop
39
- renderFallbackValue: null
40
- }, getOptionsWithReactiveData(initialOptions));
40
+ renderFallbackValue: null,
41
+ mergeOptions(defaultOptions, options) {
42
+ return IS_REACTIVE ? {
43
+ ...defaultOptions,
44
+ ...options
45
+ } : mergeProxy.mergeProxy(defaultOptions, options);
46
+ }
47
+ }, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
41
48
  const table = tableCore.createTable(resolvedOptions);
42
49
 
43
50
  // Add reactivity support
44
- if (vue.isRef(initialOptions.data)) {
45
- vue.watch(initialOptions.data, () => {
51
+ if (IS_REACTIVE) {
52
+ const dataRef = vue.shallowRef(initialOptions.data);
53
+ vue.watch(dataRef, () => {
46
54
  table.setState(prev => ({
47
55
  ...prev,
48
- data: vue.unref(initialOptions.data)
56
+ data: dataRef.value
49
57
  }));
50
58
  }, {
51
- immediate: true,
52
- deep: true
59
+ immediate: true
53
60
  });
54
61
  }
55
62
 
@@ -61,7 +68,7 @@ function useVueTable(initialOptions) {
61
68
  const stateProxy = new Proxy({}, {
62
69
  get: (_, prop) => state.value[prop]
63
70
  });
64
- return mergeProxy.mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
71
+ return mergeProxy.mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
65
72
  // merge the initialState and `options.state`
66
73
  // create a new proxy on each `setOptions` call
67
74
  // and get the value from state on each property access
@@ -1 +1 @@
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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"}
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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"}
@@ -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, watch, unref, ref, watchEffect } from 'vue';
13
+ import { defineComponent, h, isRef, shallowRef, watch, ref, watchEffect, unref } from 'vue';
14
14
 
15
15
  function trueFn() {
16
16
  return true;
@@ -88,25 +88,32 @@ 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
94
95
  onStateChange: () => {},
95
96
  // noop
96
- renderFallbackValue: null
97
- }, getOptionsWithReactiveData(initialOptions));
97
+ renderFallbackValue: null,
98
+ mergeOptions(defaultOptions, options) {
99
+ return IS_REACTIVE ? {
100
+ ...defaultOptions,
101
+ ...options
102
+ } : mergeProxy(defaultOptions, options);
103
+ }
104
+ }, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
98
105
  const table = createTable(resolvedOptions);
99
106
 
100
107
  // Add reactivity support
101
- if (isRef(initialOptions.data)) {
102
- watch(initialOptions.data, () => {
108
+ if (IS_REACTIVE) {
109
+ const dataRef = shallowRef(initialOptions.data);
110
+ watch(dataRef, () => {
103
111
  table.setState(prev => ({
104
112
  ...prev,
105
- data: unref(initialOptions.data)
113
+ data: dataRef.value
106
114
  }));
107
115
  }, {
108
- immediate: true,
109
- deep: true
116
+ immediate: true
110
117
  });
111
118
  }
112
119
 
@@ -118,7 +125,7 @@ function useVueTable(initialOptions) {
118
125
  const stateProxy = new Proxy({}, {
119
126
  get: (_, prop) => state.value[prop]
120
127
  });
121
- return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
128
+ return mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
122
129
  // merge the initialState and `options.state`
123
130
  // create a new proxy on each `setOptions` call
124
131
  // and get the value from state on each property access
@@ -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\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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"}
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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"}
@@ -614,8 +614,8 @@
614
614
  };
615
615
 
616
616
  const includesString = (row, columnId, filterValue) => {
617
- var _row$getValue;
618
- const search = filterValue.toLowerCase();
617
+ var _filterValue$toString, _row$getValue;
618
+ const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();
619
619
  return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));
620
620
  };
621
621
  includesString.autoRemove = val => testFalsey(val);
@@ -3608,25 +3608,32 @@
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
3614
3615
  onStateChange: () => {},
3615
3616
  // noop
3616
- renderFallbackValue: null
3617
- }, getOptionsWithReactiveData(initialOptions));
3617
+ renderFallbackValue: null,
3618
+ mergeOptions(defaultOptions, options) {
3619
+ return IS_REACTIVE ? {
3620
+ ...defaultOptions,
3621
+ ...options
3622
+ } : mergeProxy(defaultOptions, options);
3623
+ }
3624
+ }, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions);
3618
3625
  const table = createTable(resolvedOptions);
3619
3626
 
3620
3627
  // Add reactivity support
3621
- if (vue.isRef(initialOptions.data)) {
3622
- vue.watch(initialOptions.data, () => {
3628
+ if (IS_REACTIVE) {
3629
+ const dataRef = vue.shallowRef(initialOptions.data);
3630
+ vue.watch(dataRef, () => {
3623
3631
  table.setState(prev => ({
3624
3632
  ...prev,
3625
- data: vue.unref(initialOptions.data)
3633
+ data: dataRef.value
3626
3634
  }));
3627
3635
  }, {
3628
- immediate: true,
3629
- deep: true
3636
+ immediate: true
3630
3637
  });
3631
3638
  }
3632
3639
 
@@ -3638,7 +3645,7 @@
3638
3645
  const stateProxy = new Proxy({}, {
3639
3646
  get: (_, prop) => state.value[prop]
3640
3647
  });
3641
- return mergeProxy(prev, getOptionsWithReactiveData(initialOptions), {
3648
+ return mergeProxy(prev, IS_REACTIVE ? getOptionsWithReactiveData(initialOptions) : initialOptions, {
3642
3649
  // merge the initialState and `options.state`
3643
3650
  // create a new proxy on each `setOptions` call
3644
3651
  // and get the value from state on each property access