Skip to content

Commit

Permalink
refactor(vue): replace structuredClone with @visulima/deep-clone
Browse files Browse the repository at this point in the history
  • Loading branch information
jrson83 committed Jun 28, 2024
1 parent d11d0e1 commit 1cedc4e
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 33 deletions.
1 change: 1 addition & 0 deletions packages/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
"dependencies": {
"@inertiajs-revamped/core": "workspace:*",
"@inertiajs-revamped/vite": "workspace:*",
"@visulima/deep-clone": "^2.1.3",
"fast-equals": "^5.0.1",
"vue": "^3.4.30"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/vue/src/remember.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { router } from '@inertiajs-revamped/core'
import { deepClone } from '@visulima/deep-clone'
import type { ComponentOptions } from 'vue'
import { getStructuredClone } from './structuredClone'

export const remember: ComponentOptions = {
created() {
Expand Down Expand Up @@ -66,7 +66,7 @@ export const remember: ComponentOptions = {
// @ts-expect-error
(data, key) => ({
...data,
[key]: getStructuredClone(
[key]: deepClone(
hasCallbacks(key) ? this[key].__remember() : this[key]
),
}),
Expand Down
16 changes: 0 additions & 16 deletions packages/vue/src/structuredClone.ts

This file was deleted.

21 changes: 8 additions & 13 deletions packages/vue/src/useForm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import {
type VisitOptions,
router,
} from '@inertiajs-revamped/core'
import { deepClone } from '@visulima/deep-clone'
import { deepEqual } from 'fast-equals'
import { reactive, watch } from 'vue'
import { getStructuredClone } from './structuredClone'

export type FormDataType = object

Expand Down Expand Up @@ -62,16 +62,13 @@ export function useForm<TForm extends FormDataType>(
errors: Record<keyof TForm, string>
})
: null
let defaults =
typeof data === 'object'
? getStructuredClone(data)
: getStructuredClone(data())
let defaults = typeof data === 'object' ? deepClone(data) : deepClone(data())
let cancelToken = null
let recentlySuccessfulTimeoutId = null
let transform = (data) => data

const form = reactive({
...(restored ? restored.data : getStructuredClone(defaults)),
...(restored ? restored.data : deepClone(defaults)),
isDirty: false,
errors: restored ? restored.errors : {},
hasErrors: false,
Expand Down Expand Up @@ -108,7 +105,7 @@ export function useForm<TForm extends FormDataType>(
} else {
defaults = Object.assign(
{},
getStructuredClone(defaults),
deepClone(defaults),
typeof fieldOrFields === 'string'
? { [fieldOrFields]: maybeValue }
: fieldOrFields
Expand All @@ -121,10 +118,8 @@ export function useForm<TForm extends FormDataType>(
},
reset(...fields) {
const resolvedData =
typeof data === 'object'
? getStructuredClone(defaults)
: getStructuredClone(data())
const clonedData = getStructuredClone(resolvedData)
typeof data === 'object' ? deepClone(defaults) : deepClone(data())
const clonedData = deepClone(resolvedData)
if (fields.length === 0) {
defaults = clonedData
Object.assign(this, resolvedData)
Expand Down Expand Up @@ -217,7 +212,7 @@ export function useForm<TForm extends FormDataType>(
const onSuccess = options.onSuccess
? await options.onSuccess(page)
: null
defaults = getStructuredClone(this.data())
defaults = deepClone(this.data())
this.isDirty = false
return onSuccess
},
Expand Down Expand Up @@ -290,7 +285,7 @@ export function useForm<TForm extends FormDataType>(
(newValue) => {
form.isDirty = !deepEqual(form.data(), defaults)
if (rememberKey) {
router.remember(getStructuredClone(newValue.__remember()), rememberKey)
router.remember(deepClone(newValue.__remember()), rememberKey)
}
},
{ immediate: true, deep: true }
Expand Down
4 changes: 2 additions & 2 deletions packages/vue/src/useRemember.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { router } from '@inertiajs-revamped/core'
import { deepClone } from '@visulima/deep-clone'
import { type Ref, isReactive, reactive, ref, watch } from 'vue'
import { getStructuredClone } from './structuredClone'

export function useRemember<T extends object>(
data: T & {
Expand Down Expand Up @@ -35,7 +35,7 @@ export function useRemember<T extends object>(
remembered,
(newValue) => {
router.remember(
getStructuredClone(hasCallbacks ? data.__remember?.() : newValue),
deepClone(hasCallbacks ? data.__remember?.() : newValue),
key
)
},
Expand Down
10 changes: 10 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1cedc4e

Please sign in to comment.