deno.land / x / solid_signals@solid-signals@1.3.7 / src / signals / composable / createMap / createMap.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { createSignal } from "solid-js";import { Signal, SignalOptions } from "solid-js/types/reactive/signal";import { getNativeExtensions, NativeMutators, signalExtender,} from "../../../utils/signal.js";
const mapMutators = ["set", "delete", "clear"] as const;
type AnyMap = Map<any, any>;
declare namespace createMap { export type Extensions<T extends AnyMap> = [ {}, NativeMutators<T, typeof mapMutators[number]> ]; export type Type< T extends AnyMap, Base extends [{}, {}] = [{}, {}] > = createSignal.Extended<T, Base & Extensions<T>>;
export type Result< T extends AnyMap, Base extends [{}, {}] = [{}, {}] > = ReturnType<Type<T, Base>>;}
function createMap<K = any, V = any>( value?: Map<K, V> | [K, V][], options?: SignalOptions<Map<K, V>>) { return createMap.wrap(createSignal(new Map(value), options));}
createMap.wrap = <Sig extends Signal<AnyMap>>(signal: Sig) => { type T = Sig extends Signal<infer T> ? T : never;
return signalExtender(signal).extend<createMap.Extensions<T>>( ([state, setState]) => [ {}, { ...getNativeExtensions( () => new Map(state()) as T, setState, mapMutators ), // Optimization: `clear` does not need state copy clear() { setState(new Map()); }, }, ] );};
export default createMap;
solid_signals

Version Info

Tagged at
2 years ago