File tree Expand file tree Collapse file tree 3 files changed +12
-47
lines changed
Expand file tree Collapse file tree 3 files changed +12
-47
lines changed Original file line number Diff line number Diff line change 11import { Signal , createSignal , onCleanup } from "solid-js" ;
22import type { LocationChange , RouterContext , RouterUtils } from "../types.ts" ;
33import { createRouterComponent } from "./components.jsx" ;
4- import { equalObjects } from "../utils.js" ;
54
65function intercept < T > (
76 [ value , setValue ] : [ ( ) => T , ( v : T ) => void ] ,
@@ -34,7 +33,7 @@ export function createRouter(config: {
3433 const wrap = ( value : string | LocationChange ) => ( typeof value === "string" ? { value } : value ) ;
3534 const signal = intercept < LocationChange > (
3635 createSignal ( wrap ( config . get ( ) ) , {
37- equals : ( a , b ) => a . value === b . value && equalObjects ( a . state , b . state )
36+ equals : ( a , b ) => a . value === b . value && a . state === b . state
3837 } ) ,
3938 undefined ,
4039 next => {
Original file line number Diff line number Diff line change @@ -44,8 +44,7 @@ import {
4444 joinPaths ,
4545 scoreRoute ,
4646 mergeSearchString ,
47- expandOptionals ,
48- equalObjects
47+ expandOptionals
4948} from "./utils.js" ;
5049
5150const MAX_REDIRECTS = 100 ;
@@ -328,20 +327,18 @@ export function createRouterContext(
328327 } ;
329328
330329 createRenderEffect ( ( ) => {
331- const { value, state : nextState } = source ( ) ;
330+ const { value, state } = source ( ) ;
332331 // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved
333332 untrack ( ( ) => {
334- if ( value !== reference ( ) || ! equalObjects ( nextState , state ( ) ) ) {
335- start ( ( ) => {
336- intent = "native" ;
337- setReference ( value ) ;
338- setState ( nextState ) ;
339- resetErrorBoundaries ( ) ;
340- submissions [ 1 ] ( [ ] ) ;
341- } ) . then ( ( ) => {
342- intent = undefined ;
343- } ) ;
344- }
333+ start ( ( ) => {
334+ intent = "native" ;
335+ if ( value !== reference ( ) ) setReference ( value ) ;
336+ setState ( state ) ;
337+ resetErrorBoundaries ( ) ;
338+ submissions [ 1 ] ( [ ] ) ;
339+ } ) . then ( ( ) => {
340+ intent = undefined ;
341+ } ) ;
345342 } ) ;
346343 } ) ;
347344
Original file line number Diff line number Diff line change @@ -186,34 +186,3 @@ export function expandOptionals(pattern: string): string[] {
186186 [ ]
187187 ) ;
188188}
189-
190- // Modified from fast-deep-equal for objects only (MIT)
191- // https://github.com/epoberezkin/fast-deep-equal
192- export function equalObjects ( a : any , b : any ) {
193- if ( a === b ) return true ;
194-
195- if ( a && b && typeof a == "object" && typeof b == "object" ) {
196- if ( a . constructor !== b . constructor ) return false ;
197- if ( a . valueOf !== Object . prototype . valueOf ) return a . valueOf ( ) === b . valueOf ( ) ;
198- if ( a . toString !== Object . prototype . toString ) return a . toString ( ) === b . toString ( ) ;
199-
200- var length , i , keys ;
201- keys = Object . keys ( a ) ;
202- length = keys . length ;
203-
204- if ( length !== Object . keys ( b ) . length ) return false ;
205-
206- for ( i = length ; i -- !== 0 ; ) {
207- if ( ! Object . prototype . hasOwnProperty . call ( b , keys [ i ] ) ) return false ;
208- }
209-
210- for ( i = length ; i -- !== 0 ; ) {
211- var key = keys [ i ] ;
212- if ( ! equalObjects ( a [ key ] , b [ key ] ) ) return false ;
213- }
214-
215- return true ;
216- }
217-
218- return false ;
219- }
You can’t perform that action at this time.
0 commit comments