solid-js 1.3.0 → 1.3.4
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.
- package/dist/dev.cjs +26 -17
- package/dist/dev.js +26 -18
- package/dist/server.cjs +6 -4
- package/dist/server.js +6 -4
- package/dist/solid.cjs +23 -17
- package/dist/solid.js +23 -18
- package/package.json +5 -5
- package/store/dist/dev.cjs +3 -5
- package/store/dist/dev.js +3 -5
- package/store/dist/store.cjs +2 -4
- package/store/dist/store.js +2 -4
- package/store/package.json +23 -1
- package/store/types/index.d.ts +1 -1
- package/store/types/modifiers.d.ts +3 -3
- package/store/types/mutable.d.ts +3 -3
- package/store/types/server.d.ts +3 -38
- package/store/types/store.d.ts +27 -55
- package/types/index.d.ts +1 -1
- package/types/reactive/signal.d.ts +2 -2
- package/types/render/component.d.ts +2 -1
- package/types/render/flow.d.ts +1 -0
- package/types/server/rendering.d.ts +3 -0
- package/universal/package.json +11 -1
- package/web/dist/dev.cjs +9 -5
- package/web/dist/dev.js +10 -6
- package/web/dist/server.cjs +8 -7
- package/web/dist/server.js +8 -7
- package/web/dist/web.cjs +6 -5
- package/web/dist/web.js +6 -5
- package/web/package.json +23 -1
- package/web/types/client.d.ts +1 -1
package/store/types/server.d.ts
CHANGED
|
@@ -1,50 +1,15 @@
|
|
|
1
|
+
import { SetStoreFunction, Store } from "store";
|
|
1
2
|
export declare const $RAW: unique symbol;
|
|
2
|
-
declare type AddSymbolToPrimitive<T> = T extends {
|
|
3
|
-
[Symbol.toPrimitive]: infer V;
|
|
4
|
-
} ? {
|
|
5
|
-
[Symbol.toPrimitive]: V;
|
|
6
|
-
} : {};
|
|
7
|
-
declare type AddCallable<T> = T extends {
|
|
8
|
-
(...x: any[]): infer V;
|
|
9
|
-
} ? {
|
|
10
|
-
(...x: Parameters<T>): V;
|
|
11
|
-
} : {};
|
|
12
|
-
declare type NotWrappable = string | number | boolean | Function | null;
|
|
13
|
-
export declare type Store<T> = {
|
|
14
|
-
[P in keyof T]: T[P] extends object ? Store<T[P]> : T[P];
|
|
15
|
-
} & {
|
|
16
|
-
[$RAW]?: T;
|
|
17
|
-
} & AddSymbolToPrimitive<T> & AddCallable<T>;
|
|
18
3
|
export declare function isWrappable(obj: any): boolean;
|
|
19
4
|
export declare function unwrap<T>(item: any): T;
|
|
20
5
|
export declare function setProperty(state: any, property: string | number, value: any, force?: boolean): void;
|
|
21
6
|
export declare function updatePath(current: any, path: any[], traversed?: (number | string)[]): void;
|
|
22
|
-
declare type StoreSetter<T> = Partial<T> | ((prevState: T extends NotWrappable ? T : Store<T>, traversed?: (string | number)[]) => Partial<T> | void);
|
|
23
|
-
declare type StorePathRange = {
|
|
24
|
-
from?: number;
|
|
25
|
-
to?: number;
|
|
26
|
-
by?: number;
|
|
27
|
-
};
|
|
28
|
-
declare type ArrayFilterFn<T> = (item: T extends any[] ? T[number] : never, index: number) => boolean;
|
|
29
|
-
declare type Part<T> = keyof T | Array<keyof T> | StorePathRange | ArrayFilterFn<T>;
|
|
30
|
-
declare type Next<T, K> = K extends keyof T ? T[K] : K extends Array<keyof T> ? T[K[number]] : T extends any[] ? K extends StorePathRange ? T[number] : K extends ArrayFilterFn<T> ? T[number] : never : never;
|
|
31
|
-
export interface SetStoreFunction<T> {
|
|
32
|
-
<Setter extends StoreSetter<T>>(...args: [Setter]): void;
|
|
33
|
-
<K1 extends Part<T>, Setter extends StoreSetter<Next<T, K1>>>(...args: [K1, Setter]): void;
|
|
34
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, Setter extends StoreSetter<Next<Next<T, K1>, K2>>>(...args: [K1, K2, Setter]): void;
|
|
35
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, Setter extends StoreSetter<Next<Next<Next<T, K1>, K2>, K3>>>(...args: [K1, K2, K3, Setter]): void;
|
|
36
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, Setter extends StoreSetter<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>>(...args: [K1, K2, K3, K4, Setter]): void;
|
|
37
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>>(...args: [K1, K2, K3, K4, K5, Setter]): void;
|
|
38
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>>(...args: [K1, K2, K3, K4, K5, K6, Setter]): void;
|
|
39
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, Setter]): void;
|
|
40
|
-
<K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, K8 extends Part<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, K8, ...(Part<any> | StoreSetter<any>)[]]): void;
|
|
41
|
-
}
|
|
42
7
|
export declare function createStore<T>(state: T | Store<T>): [Store<T>, SetStoreFunction<T>];
|
|
43
8
|
export declare function createMutable<T>(state: T | Store<T>): Store<T>;
|
|
44
9
|
declare type ReconcileOptions = {
|
|
45
10
|
key?: string | null;
|
|
46
11
|
merge?: boolean;
|
|
47
12
|
};
|
|
48
|
-
export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state:
|
|
49
|
-
export declare function produce<T>(fn: (state: T) => void): (state:
|
|
13
|
+
export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state: Store<T>) => void;
|
|
14
|
+
export declare function produce<T>(fn: (state: T) => void): (state: Store<T>) => Store<T>;
|
|
50
15
|
export {};
|
package/store/types/store.d.ts
CHANGED
|
@@ -1,72 +1,44 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Accessor } from "../..";
|
|
2
2
|
export declare const $RAW: unique symbol, $NODE: unique symbol, $NAME: unique symbol;
|
|
3
|
-
export declare type StoreNode =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
[$NAME]?: string;
|
|
7
|
-
[k: string]: any;
|
|
8
|
-
[k: number]: any;
|
|
9
|
-
};
|
|
10
|
-
declare type AddSymbolToPrimitive<T> = T extends {
|
|
11
|
-
[Symbol.toPrimitive]: infer V;
|
|
12
|
-
} ? {
|
|
13
|
-
[Symbol.toPrimitive]: V;
|
|
14
|
-
} : {};
|
|
15
|
-
declare type AddSymbolIterator<T> = T extends {
|
|
16
|
-
[Symbol.iterator]: infer V;
|
|
17
|
-
} ? {
|
|
18
|
-
[Symbol.iterator]: V;
|
|
19
|
-
} : {};
|
|
20
|
-
declare type AddSymbolToStringTag<T> = T extends {
|
|
21
|
-
[Symbol.toStringTag]: infer V;
|
|
22
|
-
} ? {
|
|
23
|
-
[Symbol.toStringTag]: V;
|
|
24
|
-
} : {};
|
|
25
|
-
declare type AddCallable<T> = T extends {
|
|
26
|
-
(...x: any[]): infer V;
|
|
27
|
-
} ? {
|
|
28
|
-
(...x: Parameters<T>): V;
|
|
29
|
-
} : {};
|
|
30
|
-
export declare type NotWrappable = string | number | boolean | Function | null;
|
|
31
|
-
export declare type Store<T> = {
|
|
32
|
-
[P in keyof T]: T[P] extends object ? Store<T[P]> & T[P] : T[P];
|
|
33
|
-
} & {
|
|
34
|
-
[$RAW]?: T;
|
|
35
|
-
} & AddSymbolToPrimitive<T> & AddSymbolIterator<T> & AddSymbolToStringTag<T> & AddCallable<T>;
|
|
3
|
+
export declare type StoreNode = Record<keyof any, any>;
|
|
4
|
+
export declare type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined;
|
|
5
|
+
export declare type Store<T> = DeepReadonly<T>;
|
|
36
6
|
export declare function isWrappable(obj: any): any;
|
|
37
7
|
export declare function unwrap<T extends StoreNode>(item: any, set?: Set<unknown>): T;
|
|
38
8
|
export declare function getDataNodes(target: StoreNode): any;
|
|
39
|
-
export declare function proxyDescriptor(target: StoreNode, property:
|
|
9
|
+
export declare function proxyDescriptor(target: StoreNode, property: keyof any): PropertyDescriptor | undefined;
|
|
40
10
|
export declare function ownKeys(target: StoreNode): (string | symbol)[];
|
|
41
11
|
export declare function createDataNode(): Accessor<void> & {
|
|
42
12
|
$: () => void;
|
|
43
13
|
};
|
|
44
|
-
export declare function setProperty(state: StoreNode, property:
|
|
45
|
-
export declare function updatePath(current: StoreNode, path: any[], traversed?: (
|
|
46
|
-
export declare type
|
|
47
|
-
readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
14
|
+
export declare function setProperty(state: StoreNode, property: keyof any, value: any): void;
|
|
15
|
+
export declare function updatePath(current: StoreNode, path: any[], traversed?: (keyof any)[]): void;
|
|
16
|
+
export declare type DeepReadonly<T> = {
|
|
17
|
+
readonly [K in keyof T]: T[K] extends NotWrappable ? T[K] : DeepReadonly<T[K]>;
|
|
48
18
|
};
|
|
49
|
-
export declare type
|
|
50
|
-
export declare type StoreSetter<T> = Partial<T> | ((prevState: T extends NotWrappable ? T : Store<DeepReadonly<T>>, traversed?: (string | number)[]) => Partial<T | DeepReadonly<T>> | void);
|
|
19
|
+
export declare type StoreSetter<T> = T | Partial<T> | ((prevState: T, traversed?: (keyof any)[]) => Partial<T> | void);
|
|
51
20
|
export declare type StorePathRange = {
|
|
52
21
|
from?: number;
|
|
53
22
|
to?: number;
|
|
54
23
|
by?: number;
|
|
55
24
|
};
|
|
56
|
-
export declare type ArrayFilterFn<T> = (item: T
|
|
57
|
-
export declare type Part<T> = T extends
|
|
58
|
-
export declare type
|
|
59
|
-
export declare type
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
65
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
66
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
67
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
68
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
69
|
-
<K1 extends Part<T>, K2 extends Part<
|
|
25
|
+
export declare type ArrayFilterFn<T> = (item: T, index: number) => boolean;
|
|
26
|
+
export declare type Part<T> = [T] extends [never] ? never : [keyof T] extends [never] ? never : keyof T | (keyof T)[] | (number extends keyof T ? ArrayFilterFn<T[number]> | StorePathRange : never);
|
|
27
|
+
export declare type Next<T, K extends Part<T>> = [K] extends [never] ? never : K extends keyof T ? T[K] : K extends (keyof T)[] ? T[K[number]] : number extends keyof T ? T[number] : never;
|
|
28
|
+
export declare type WrappableNext<T, K extends Part<T>> = Exclude<Next<T, K>, NotWrappable>;
|
|
29
|
+
declare type DistributeRest<T, K extends Part<T>> = K extends K ? [K, ...Rest<Next<T, K>>] : never;
|
|
30
|
+
export declare type Rest<T> = 0 extends 1 & T ? [...(keyof any)[], any] : [StoreSetter<T>] | (T extends NotWrappable ? never : DistributeRest<T, Part<T>>);
|
|
31
|
+
export declare type SetStoreFunction<T> = _SetStoreFunction<Store<T>>;
|
|
32
|
+
interface _SetStoreFunction<T> {
|
|
33
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, K7 extends Part<T6>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>, T6 extends WrappableNext<T5, K6>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, ...rest: Rest<Next<T6, K7>>): void;
|
|
34
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, K7 extends Part<T6>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>, T6 extends WrappableNext<T5, K6>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, setter: StoreSetter<Next<T6, K7>>): void;
|
|
35
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, setter: StoreSetter<Next<T5, K6>>): void;
|
|
36
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, setter: StoreSetter<Next<T4, K5>>): void;
|
|
37
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>>(k1: K1, k2: K2, k3: K3, k4: K4, setter: StoreSetter<Next<T3, K4>>): void;
|
|
38
|
+
<K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>>(k1: K1, k2: K2, k3: K3, setter: StoreSetter<Next<T2, K3>>): void;
|
|
39
|
+
<K1 extends Part<T>, K2 extends Part<T1>, T1 extends WrappableNext<T, K1>>(k1: K1, k2: K2, setter: StoreSetter<Next<T1, K2>>): void;
|
|
40
|
+
<K extends Part<T>>(k: K, setter: StoreSetter<Next<T, K>>): void;
|
|
41
|
+
(setter: StoreSetter<T>): void;
|
|
70
42
|
}
|
|
71
43
|
/**
|
|
72
44
|
* creates a reactive store that can be read through a proxy object and written with a setter function
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createRoot, createSignal, createEffect, createRenderEffect, createComputed, createReaction, createDeferred, createSelector, createMemo, createResource, onMount, onCleanup, onError, untrack, batch, on, enableScheduling, enableExternalSource, startTransition, useTransition, refetchResources, createContext, useContext, children, getListener, getOwner, runWithOwner, equalFn, $DEVCOMP, $PROXY } from "./reactive/signal";
|
|
2
|
-
export type { Accessor, Setter, Resource, ResourceReturn, ResourceFetcher, ResourceFetcherInfo, Context, ReturnTypes } from "./reactive/signal";
|
|
2
|
+
export type { Accessor, Setter, Signal, Resource, ResourceReturn, ResourceFetcher, ResourceFetcherInfo, Context, ReturnTypes } from "./reactive/signal";
|
|
3
3
|
export * from "./reactive/observable";
|
|
4
4
|
export * from "./reactive/scheduler";
|
|
5
5
|
export * from "./reactive/array";
|
|
@@ -204,13 +204,13 @@ export declare type ResourceActions<T> = {
|
|
|
204
204
|
refetch: (info?: unknown) => void;
|
|
205
205
|
};
|
|
206
206
|
export declare type ResourceReturn<T> = [Resource<T>, ResourceActions<T>];
|
|
207
|
-
export declare type ResourceSource<S> = S | false | null | (() => S | false | null);
|
|
207
|
+
export declare type ResourceSource<S> = S | false | null | undefined | (() => S | false | null | undefined);
|
|
208
208
|
export declare type ResourceFetcher<S, T> = (k: S, info: ResourceFetcherInfo<T>) => T | Promise<T>;
|
|
209
209
|
export declare type ResourceFetcherInfo<T> = {
|
|
210
210
|
value: T | undefined;
|
|
211
211
|
refetching?: unknown;
|
|
212
212
|
};
|
|
213
|
-
export declare type ResourceOptions<T> =
|
|
213
|
+
export declare type ResourceOptions<T> = undefined extends T ? {
|
|
214
214
|
initialValue?: T;
|
|
215
215
|
name?: string;
|
|
216
216
|
globalRefetch?: boolean;
|
|
@@ -13,8 +13,9 @@ export declare type Component<P = {}> = (props: PropsWithChildren<P>) => JSX.Ele
|
|
|
13
13
|
*/
|
|
14
14
|
export declare type ComponentProps<T extends keyof JSX.IntrinsicElements | Component<any>> = T extends Component<infer P> ? P : T extends keyof JSX.IntrinsicElements ? JSX.IntrinsicElements[T] : {};
|
|
15
15
|
export declare function createComponent<T>(Comp: (props: T) => JSX.Element, props: T): JSX.Element;
|
|
16
|
+
declare type UnboxLazy<T> = T extends () => infer U ? U : T;
|
|
16
17
|
declare type BoxedTupleTypes<T extends any[]> = {
|
|
17
|
-
[P in keyof T]: [T[P]];
|
|
18
|
+
[P in keyof T]: [UnboxLazy<T[P]>];
|
|
18
19
|
}[Exclude<keyof T, keyof any[]>];
|
|
19
20
|
declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
20
21
|
declare type UnboxIntersection<T> = T extends {
|
package/types/render/flow.d.ts
CHANGED
|
@@ -77,6 +77,7 @@ export declare type MatchProps<T> = {
|
|
|
77
77
|
* @description https://www.solidjs.com/docs/latest/api#%3Cswitch%3E%2F%3Cmatch%3E
|
|
78
78
|
*/
|
|
79
79
|
export declare function Match<T>(props: MatchProps<T>): JSX.Element;
|
|
80
|
+
export declare function resetErrorBoundaries(): void;
|
|
80
81
|
/**
|
|
81
82
|
* catches uncaught errors inside components and renders a fallback content
|
|
82
83
|
*
|
|
@@ -55,6 +55,7 @@ declare type MatchProps<T> = {
|
|
|
55
55
|
children: string | ((item: T) => string);
|
|
56
56
|
};
|
|
57
57
|
export declare function Match<T>(props: MatchProps<T>): MatchProps<T>;
|
|
58
|
+
export declare function resetErrorBoundaries(): void;
|
|
58
59
|
export declare function ErrorBoundary(props: {
|
|
59
60
|
fallback: string | ((err: any, reset: () => void) => string);
|
|
60
61
|
children: string;
|
|
@@ -62,10 +63,12 @@ export declare function ErrorBoundary(props: {
|
|
|
62
63
|
export interface Resource<T> {
|
|
63
64
|
(): T | undefined;
|
|
64
65
|
loading: boolean;
|
|
66
|
+
error: any;
|
|
65
67
|
}
|
|
66
68
|
declare type SuspenseContextType = {
|
|
67
69
|
resources: Map<string, {
|
|
68
70
|
loading: boolean;
|
|
71
|
+
error: any;
|
|
69
72
|
}>;
|
|
70
73
|
completed: () => void;
|
|
71
74
|
};
|
package/universal/package.json
CHANGED
|
@@ -4,5 +4,15 @@
|
|
|
4
4
|
"module": "./dist/universal.js",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"sideEffects": false
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"development": {
|
|
11
|
+
"import": "./dist/dev.js",
|
|
12
|
+
"require": "./dist/dev.cjs"
|
|
13
|
+
},
|
|
14
|
+
"import": "./dist/universal.js",
|
|
15
|
+
"require": "./dist/universal.cjs"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
8
18
|
}
|
package/web/dist/dev.cjs
CHANGED
|
@@ -59,7 +59,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
59
59
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
60
60
|
} else if (bEnd === bStart) {
|
|
61
61
|
while (aStart < aEnd) {
|
|
62
|
-
if (!map || !map.has(a[aStart]))
|
|
62
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
63
63
|
aStart++;
|
|
64
64
|
}
|
|
65
65
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -88,7 +88,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
88
88
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
89
89
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
90
90
|
} else aStart++;
|
|
91
|
-
} else
|
|
91
|
+
} else a[aStart++].remove();
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -347,6 +347,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
347
347
|
return prevProps;
|
|
348
348
|
}
|
|
349
349
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
350
|
+
if (solidJs.sharedConfig.context && !current) current = [...parent.childNodes];
|
|
350
351
|
while (typeof current === "function") current = current();
|
|
351
352
|
if (value === current) return current;
|
|
352
353
|
const t = typeof value,
|
|
@@ -403,13 +404,13 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
|
403
404
|
}
|
|
404
405
|
current = array;
|
|
405
406
|
} else if (value instanceof Node) {
|
|
406
|
-
if (solidJs.sharedConfig.context) return current = value.parentNode ? value : current;
|
|
407
|
+
if (solidJs.sharedConfig.context) return current = value.parentNode ? multi ? [value] : value : current;
|
|
407
408
|
if (Array.isArray(current)) {
|
|
408
409
|
if (multi) return current = cleanChildren(parent, current, marker, value);
|
|
409
410
|
cleanChildren(parent, current, null, value);
|
|
410
411
|
} else if (current == null || current === "" || !parent.firstChild) {
|
|
411
412
|
parent.appendChild(value);
|
|
412
|
-
} else parent.replaceChild(value,
|
|
413
|
+
} else parent.replaceChild(value, parent.firstChild);
|
|
413
414
|
current = value;
|
|
414
415
|
} else console.warn(`Unrecognized value. Skipped inserting`, value);
|
|
415
416
|
return current;
|
|
@@ -449,7 +450,7 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
449
450
|
const el = current[i];
|
|
450
451
|
if (node !== el) {
|
|
451
452
|
const isParent = el.parentNode === parent;
|
|
452
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
453
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
453
454
|
} else inserted = true;
|
|
454
455
|
}
|
|
455
456
|
} else parent.insertBefore(node, marker);
|
|
@@ -539,6 +540,9 @@ function Dynamic(props) {
|
|
|
539
540
|
const component = p.component;
|
|
540
541
|
switch (typeof component) {
|
|
541
542
|
case "function":
|
|
543
|
+
Object.assign(component, {
|
|
544
|
+
[solidJs.$DEVCOMP]: true
|
|
545
|
+
});
|
|
542
546
|
return solidJs.untrack(() => component(others));
|
|
543
547
|
case "string":
|
|
544
548
|
const isSvg = SVGElements.has(component);
|
package/web/dist/dev.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createMemo, createRoot, createRenderEffect, sharedConfig, enableHydration, createSignal, onCleanup, splitProps, untrack } from 'solid-js';
|
|
1
|
+
import { createMemo, createRoot, createRenderEffect, sharedConfig, enableHydration, createSignal, onCleanup, splitProps, $DEVCOMP, untrack } from 'solid-js';
|
|
2
2
|
export { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, mergeProps } from 'solid-js';
|
|
3
3
|
|
|
4
4
|
const booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"];
|
|
@@ -56,7 +56,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
56
56
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
57
57
|
} else if (bEnd === bStart) {
|
|
58
58
|
while (aStart < aEnd) {
|
|
59
|
-
if (!map || !map.has(a[aStart]))
|
|
59
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
60
60
|
aStart++;
|
|
61
61
|
}
|
|
62
62
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -85,7 +85,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
85
85
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
86
86
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
87
87
|
} else aStart++;
|
|
88
|
-
} else
|
|
88
|
+
} else a[aStart++].remove();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -344,6 +344,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
344
344
|
return prevProps;
|
|
345
345
|
}
|
|
346
346
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
347
|
+
if (sharedConfig.context && !current) current = [...parent.childNodes];
|
|
347
348
|
while (typeof current === "function") current = current();
|
|
348
349
|
if (value === current) return current;
|
|
349
350
|
const t = typeof value,
|
|
@@ -400,13 +401,13 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
|
400
401
|
}
|
|
401
402
|
current = array;
|
|
402
403
|
} else if (value instanceof Node) {
|
|
403
|
-
if (sharedConfig.context) return current = value.parentNode ? value : current;
|
|
404
|
+
if (sharedConfig.context) return current = value.parentNode ? multi ? [value] : value : current;
|
|
404
405
|
if (Array.isArray(current)) {
|
|
405
406
|
if (multi) return current = cleanChildren(parent, current, marker, value);
|
|
406
407
|
cleanChildren(parent, current, null, value);
|
|
407
408
|
} else if (current == null || current === "" || !parent.firstChild) {
|
|
408
409
|
parent.appendChild(value);
|
|
409
|
-
} else parent.replaceChild(value,
|
|
410
|
+
} else parent.replaceChild(value, parent.firstChild);
|
|
410
411
|
current = value;
|
|
411
412
|
} else console.warn(`Unrecognized value. Skipped inserting`, value);
|
|
412
413
|
return current;
|
|
@@ -446,7 +447,7 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
446
447
|
const el = current[i];
|
|
447
448
|
if (node !== el) {
|
|
448
449
|
const isParent = el.parentNode === parent;
|
|
449
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
450
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
450
451
|
} else inserted = true;
|
|
451
452
|
}
|
|
452
453
|
} else parent.insertBefore(node, marker);
|
|
@@ -536,6 +537,9 @@ function Dynamic(props) {
|
|
|
536
537
|
const component = p.component;
|
|
537
538
|
switch (typeof component) {
|
|
538
539
|
case "function":
|
|
540
|
+
Object.assign(component, {
|
|
541
|
+
[$DEVCOMP]: true
|
|
542
|
+
});
|
|
539
543
|
return untrack(() => component(others));
|
|
540
544
|
case "string":
|
|
541
545
|
const isSvg = SVGElements.has(component);
|
package/web/dist/server.cjs
CHANGED
|
@@ -322,12 +322,13 @@ function renderToStream(code, options = {}) {
|
|
|
322
322
|
const dedupe = new WeakMap();
|
|
323
323
|
const checkEnd = () => {
|
|
324
324
|
if (!registry.size && !completed) {
|
|
325
|
+
writeTasks();
|
|
325
326
|
onCompleteAll && onCompleteAll(result);
|
|
326
327
|
writable && writable.end();
|
|
327
328
|
completed = true;
|
|
328
329
|
}
|
|
329
330
|
};
|
|
330
|
-
const
|
|
331
|
+
const writeTasks = () => {
|
|
331
332
|
if (tasks.length && !completed) {
|
|
332
333
|
buffer.write(`<script${nonce ? ` nonce="${nonce}"` : ""}>${tasks.join(";")}</script>`);
|
|
333
334
|
tasks.length = 0;
|
|
@@ -354,7 +355,7 @@ function renderToStream(code, options = {}) {
|
|
|
354
355
|
nonce,
|
|
355
356
|
writeResource(id, p, error) {
|
|
356
357
|
if (!scheduled) {
|
|
357
|
-
Promise.resolve().then(
|
|
358
|
+
Promise.resolve().then(writeTasks);
|
|
358
359
|
scheduled = true;
|
|
359
360
|
}
|
|
360
361
|
if (error) return tasks.push(`_$HY.set("${id}", ${serializeError(p)})`);
|
|
@@ -369,7 +370,7 @@ function renderToStream(code, options = {}) {
|
|
|
369
370
|
registerFragment(key) {
|
|
370
371
|
registry.set(key, []);
|
|
371
372
|
if (!scheduled) {
|
|
372
|
-
Promise.resolve().then(
|
|
373
|
+
Promise.resolve().then(writeTasks);
|
|
373
374
|
scheduled = true;
|
|
374
375
|
}
|
|
375
376
|
tasks.push(`_$HY.init("${key}")`);
|
|
@@ -575,8 +576,8 @@ function getHydrationKey() {
|
|
|
575
576
|
function generateHydrationScript({
|
|
576
577
|
eventNames = ["click", "input"],
|
|
577
578
|
nonce
|
|
578
|
-
}) {
|
|
579
|
-
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script
|
|
579
|
+
} = {}) {
|
|
580
|
+
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script><!--xs-->`;
|
|
580
581
|
}
|
|
581
582
|
function injectAssets(assets, html) {
|
|
582
583
|
for (let i = 0; i < assets.length; i++) {
|
|
@@ -586,7 +587,7 @@ function injectAssets(assets, html) {
|
|
|
586
587
|
}
|
|
587
588
|
function injectScripts(html, scripts, nonce) {
|
|
588
589
|
const tag = `<script${nonce ? ` nonce="${nonce}"` : ""}>${scripts}</script>`;
|
|
589
|
-
const index = html.indexOf("
|
|
590
|
+
const index = html.indexOf("<!--xs-->");
|
|
590
591
|
if (index > -1) {
|
|
591
592
|
return html.slice(0, index) + tag + html.slice(index);
|
|
592
593
|
}
|
|
@@ -607,7 +608,7 @@ function waitForFragments(registry, key) {
|
|
|
607
608
|
function serializeSet(registry, key, value) {
|
|
608
609
|
const exist = registry.get(value);
|
|
609
610
|
if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0]);`;
|
|
610
|
-
registry.set(value, key);
|
|
611
|
+
value !== null && typeof value === "object" && registry.set(value, key);
|
|
611
612
|
return `_$HY.set("${key}", ${devalue(value)});`;
|
|
612
613
|
}
|
|
613
614
|
function pipeToNodeWritable(code, writable, options = {}) {
|
package/web/dist/server.js
CHANGED
|
@@ -319,12 +319,13 @@ function renderToStream(code, options = {}) {
|
|
|
319
319
|
const dedupe = new WeakMap();
|
|
320
320
|
const checkEnd = () => {
|
|
321
321
|
if (!registry.size && !completed) {
|
|
322
|
+
writeTasks();
|
|
322
323
|
onCompleteAll && onCompleteAll(result);
|
|
323
324
|
writable && writable.end();
|
|
324
325
|
completed = true;
|
|
325
326
|
}
|
|
326
327
|
};
|
|
327
|
-
const
|
|
328
|
+
const writeTasks = () => {
|
|
328
329
|
if (tasks.length && !completed) {
|
|
329
330
|
buffer.write(`<script${nonce ? ` nonce="${nonce}"` : ""}>${tasks.join(";")}</script>`);
|
|
330
331
|
tasks.length = 0;
|
|
@@ -351,7 +352,7 @@ function renderToStream(code, options = {}) {
|
|
|
351
352
|
nonce,
|
|
352
353
|
writeResource(id, p, error) {
|
|
353
354
|
if (!scheduled) {
|
|
354
|
-
Promise.resolve().then(
|
|
355
|
+
Promise.resolve().then(writeTasks);
|
|
355
356
|
scheduled = true;
|
|
356
357
|
}
|
|
357
358
|
if (error) return tasks.push(`_$HY.set("${id}", ${serializeError(p)})`);
|
|
@@ -366,7 +367,7 @@ function renderToStream(code, options = {}) {
|
|
|
366
367
|
registerFragment(key) {
|
|
367
368
|
registry.set(key, []);
|
|
368
369
|
if (!scheduled) {
|
|
369
|
-
Promise.resolve().then(
|
|
370
|
+
Promise.resolve().then(writeTasks);
|
|
370
371
|
scheduled = true;
|
|
371
372
|
}
|
|
372
373
|
tasks.push(`_$HY.init("${key}")`);
|
|
@@ -572,8 +573,8 @@ function getHydrationKey() {
|
|
|
572
573
|
function generateHydrationScript({
|
|
573
574
|
eventNames = ["click", "input"],
|
|
574
575
|
nonce
|
|
575
|
-
}) {
|
|
576
|
-
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script
|
|
576
|
+
} = {}) {
|
|
577
|
+
return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=(t,o)=>{if(o=e.r[t])return o[0]};</script><!--xs-->`;
|
|
577
578
|
}
|
|
578
579
|
function injectAssets(assets, html) {
|
|
579
580
|
for (let i = 0; i < assets.length; i++) {
|
|
@@ -583,7 +584,7 @@ function injectAssets(assets, html) {
|
|
|
583
584
|
}
|
|
584
585
|
function injectScripts(html, scripts, nonce) {
|
|
585
586
|
const tag = `<script${nonce ? ` nonce="${nonce}"` : ""}>${scripts}</script>`;
|
|
586
|
-
const index = html.indexOf("
|
|
587
|
+
const index = html.indexOf("<!--xs-->");
|
|
587
588
|
if (index > -1) {
|
|
588
589
|
return html.slice(0, index) + tag + html.slice(index);
|
|
589
590
|
}
|
|
@@ -604,7 +605,7 @@ function waitForFragments(registry, key) {
|
|
|
604
605
|
function serializeSet(registry, key, value) {
|
|
605
606
|
const exist = registry.get(value);
|
|
606
607
|
if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0]);`;
|
|
607
|
-
registry.set(value, key);
|
|
608
|
+
value !== null && typeof value === "object" && registry.set(value, key);
|
|
608
609
|
return `_$HY.set("${key}", ${devalue(value)});`;
|
|
609
610
|
}
|
|
610
611
|
function pipeToNodeWritable(code, writable, options = {}) {
|
package/web/dist/web.cjs
CHANGED
|
@@ -59,7 +59,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
59
59
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
60
60
|
} else if (bEnd === bStart) {
|
|
61
61
|
while (aStart < aEnd) {
|
|
62
|
-
if (!map || !map.has(a[aStart]))
|
|
62
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
63
63
|
aStart++;
|
|
64
64
|
}
|
|
65
65
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -88,7 +88,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
88
88
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
89
89
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
90
90
|
} else aStart++;
|
|
91
|
-
} else
|
|
91
|
+
} else a[aStart++].remove();
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
@@ -346,6 +346,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
346
346
|
return prevProps;
|
|
347
347
|
}
|
|
348
348
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
349
|
+
if (solidJs.sharedConfig.context && !current) current = [...parent.childNodes];
|
|
349
350
|
while (typeof current === "function") current = current();
|
|
350
351
|
if (value === current) return current;
|
|
351
352
|
const t = typeof value,
|
|
@@ -402,13 +403,13 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
|
402
403
|
}
|
|
403
404
|
current = array;
|
|
404
405
|
} else if (value instanceof Node) {
|
|
405
|
-
if (solidJs.sharedConfig.context) return current = value.parentNode ? value : current;
|
|
406
|
+
if (solidJs.sharedConfig.context) return current = value.parentNode ? multi ? [value] : value : current;
|
|
406
407
|
if (Array.isArray(current)) {
|
|
407
408
|
if (multi) return current = cleanChildren(parent, current, marker, value);
|
|
408
409
|
cleanChildren(parent, current, null, value);
|
|
409
410
|
} else if (current == null || current === "" || !parent.firstChild) {
|
|
410
411
|
parent.appendChild(value);
|
|
411
|
-
} else parent.replaceChild(value,
|
|
412
|
+
} else parent.replaceChild(value, parent.firstChild);
|
|
412
413
|
current = value;
|
|
413
414
|
} else ;
|
|
414
415
|
return current;
|
|
@@ -448,7 +449,7 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
448
449
|
const el = current[i];
|
|
449
450
|
if (node !== el) {
|
|
450
451
|
const isParent = el.parentNode === parent;
|
|
451
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
452
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
452
453
|
} else inserted = true;
|
|
453
454
|
}
|
|
454
455
|
} else parent.insertBefore(node, marker);
|
package/web/dist/web.js
CHANGED
|
@@ -56,7 +56,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
56
56
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
57
57
|
} else if (bEnd === bStart) {
|
|
58
58
|
while (aStart < aEnd) {
|
|
59
|
-
if (!map || !map.has(a[aStart]))
|
|
59
|
+
if (!map || !map.has(a[aStart])) a[aStart].remove();
|
|
60
60
|
aStart++;
|
|
61
61
|
}
|
|
62
62
|
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
|
|
@@ -85,7 +85,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
85
85
|
while (bStart < index) parentNode.insertBefore(b[bStart++], node);
|
|
86
86
|
} else parentNode.replaceChild(b[bStart++], a[aStart++]);
|
|
87
87
|
} else aStart++;
|
|
88
|
-
} else
|
|
88
|
+
} else a[aStart++].remove();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -343,6 +343,7 @@ function spreadExpression(node, props, prevProps = {}, isSVG, skipChildren) {
|
|
|
343
343
|
return prevProps;
|
|
344
344
|
}
|
|
345
345
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
346
|
+
if (sharedConfig.context && !current) current = [...parent.childNodes];
|
|
346
347
|
while (typeof current === "function") current = current();
|
|
347
348
|
if (value === current) return current;
|
|
348
349
|
const t = typeof value,
|
|
@@ -399,13 +400,13 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
|
399
400
|
}
|
|
400
401
|
current = array;
|
|
401
402
|
} else if (value instanceof Node) {
|
|
402
|
-
if (sharedConfig.context) return current = value.parentNode ? value : current;
|
|
403
|
+
if (sharedConfig.context) return current = value.parentNode ? multi ? [value] : value : current;
|
|
403
404
|
if (Array.isArray(current)) {
|
|
404
405
|
if (multi) return current = cleanChildren(parent, current, marker, value);
|
|
405
406
|
cleanChildren(parent, current, null, value);
|
|
406
407
|
} else if (current == null || current === "" || !parent.firstChild) {
|
|
407
408
|
parent.appendChild(value);
|
|
408
|
-
} else parent.replaceChild(value,
|
|
409
|
+
} else parent.replaceChild(value, parent.firstChild);
|
|
409
410
|
current = value;
|
|
410
411
|
} else ;
|
|
411
412
|
return current;
|
|
@@ -445,7 +446,7 @@ function cleanChildren(parent, current, marker, replacement) {
|
|
|
445
446
|
const el = current[i];
|
|
446
447
|
if (node !== el) {
|
|
447
448
|
const isParent = el.parentNode === parent;
|
|
448
|
-
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent &&
|
|
449
|
+
if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
|
|
449
450
|
} else inserted = true;
|
|
450
451
|
}
|
|
451
452
|
} else parent.insertBefore(node, marker);
|