🔧
This commit is contained in:
20
node_modules/@inertiajs/inertia-vue3/src/useRemember.js
generated
vendored
Normal file
20
node_modules/@inertiajs/inertia-vue3/src/useRemember.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
import cloneDeep from 'lodash.clonedeep'
|
||||
import { Inertia } from '@inertiajs/inertia'
|
||||
import { isReactive, reactive, ref, watch } from 'vue'
|
||||
|
||||
export default function useRemember(data, key) {
|
||||
if (typeof data === 'object' && data !== null && data.__rememberable === false) {
|
||||
return data
|
||||
}
|
||||
|
||||
const restored = Inertia.restore(key)
|
||||
const type = isReactive(data) ? reactive : ref
|
||||
const hasCallbacks = typeof data.__remember === 'function' && typeof data.__restore === 'function'
|
||||
const remembered = restored === undefined ? data : type(hasCallbacks ? data.__restore(restored) : restored)
|
||||
|
||||
watch(remembered, (newValue) => {
|
||||
Inertia.remember(cloneDeep(hasCallbacks ? data.__remember() : newValue), key)
|
||||
}, { immediate: true, deep: true })
|
||||
|
||||
return remembered
|
||||
}
|
||||
Reference in New Issue
Block a user