2023-01-06 04:21:27 -05:00
|
|
|
import { isReactive, isRef, toRaw, unref } from 'vue'
|
|
|
|
|
|
|
|
/**
|
|
|
|
* get raw data from reactive or ref
|
|
|
|
*/
|
2023-01-07 07:45:01 -05:00
|
|
|
export const getRawData = (args: any): any => {
|
2023-05-18 01:22:34 -04:00
|
|
|
if (isRef(args)) {
|
|
|
|
return unref(args)
|
|
|
|
}
|
|
|
|
if (isReactive(args)) {
|
|
|
|
return toRaw(args)
|
|
|
|
}
|
2023-01-06 04:21:27 -05:00
|
|
|
if (Array.isArray(args)) {
|
2023-05-18 01:22:34 -04:00
|
|
|
return args.map(getRawData)
|
2023-01-06 04:21:27 -05:00
|
|
|
}
|
2023-02-17 02:42:49 -05:00
|
|
|
if (typeof args === 'object' && args !== null) {
|
2023-05-18 01:22:34 -04:00
|
|
|
const data = {} as Record<string, any>
|
|
|
|
for (const key in args) {
|
|
|
|
data[key] = getRawData(args[key])
|
|
|
|
}
|
2023-01-06 04:21:27 -05:00
|
|
|
return data
|
|
|
|
}
|
|
|
|
return args
|
|
|
|
}
|