@typed/ui 0.3.2 → 0.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/Component/package.json +6 -0
- package/Props/package.json +6 -0
- package/dist/cjs/Anchor.js +3 -85
- package/dist/cjs/Anchor.js.map +1 -1
- package/dist/cjs/Component.js +6 -0
- package/dist/cjs/Component.js.map +1 -0
- package/dist/cjs/Link.js +2 -3
- package/dist/cjs/Link.js.map +1 -1
- package/dist/cjs/Props.js +26 -0
- package/dist/cjs/Props.js.map +1 -0
- package/dist/cjs/dom-properties.js.map +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/useClickAway.js.map +1 -1
- package/dist/dts/Anchor.d.ts +5 -56
- package/dist/dts/Anchor.d.ts.map +1 -1
- package/dist/dts/Component.d.ts +16 -0
- package/dist/dts/Component.d.ts.map +1 -0
- package/dist/dts/Link.d.ts +1 -1
- package/dist/dts/Link.d.ts.map +1 -1
- package/dist/dts/Props.d.ts +60 -0
- package/dist/dts/Props.d.ts.map +1 -0
- package/dist/dts/{internal/dom-properties.d.ts → dom-properties.d.ts} +258 -39
- package/dist/dts/dom-properties.d.ts.map +1 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/Anchor.js +1 -65
- package/dist/esm/Anchor.js.map +1 -1
- package/dist/esm/Component.js +5 -0
- package/dist/esm/Component.js.map +1 -0
- package/dist/esm/Link.js +4 -3
- package/dist/esm/Link.js.map +1 -1
- package/dist/esm/Props.js +19 -0
- package/dist/esm/Props.js.map +1 -0
- package/dist/esm/dom-properties.js +5 -0
- package/dist/esm/dom-properties.js.map +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/useClickAway.js.map +1 -1
- package/dom-properties/package.json +6 -0
- package/package.json +36 -12
- package/src/Anchor.ts +6 -190
- package/src/Component.ts +24 -0
- package/src/Link.ts +12 -39
- package/src/Props.ts +95 -0
- package/src/{internal/dom-properties.ts → dom-properties.ts} +260 -40
- package/src/index.ts +1 -0
- package/src/useClickAway.ts +1 -1
- package/dist/cjs/internal/dom-properties.js.map +0 -1
- package/dist/dts/internal/dom-properties.d.ts.map +0 -1
- package/dist/esm/internal/dom-properties.js +0 -2
- package/dist/esm/internal/dom-properties.js.map +0 -1
- /package/dist/cjs/{internal/dom-properties.js → dom-properties.js} +0 -0
package/src/Props.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { EventWithCurrentTarget } from "@typed/dom/EventTarget"
|
|
6
|
+
import type { ElementRef } from "@typed/template/ElementRef"
|
|
7
|
+
import type { DefaultEventMap } from "@typed/template/ElementSource"
|
|
8
|
+
import * as EventHandler from "@typed/template/EventHandler"
|
|
9
|
+
import type { Placeholder } from "@typed/template/Placeholder"
|
|
10
|
+
import type { Rendered } from "@typed/wire"
|
|
11
|
+
import { Effect } from "effect"
|
|
12
|
+
import type { ReadonlyRecord } from "effect"
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
export type TypedProps<Input extends Record<string, any>, Element extends Rendered> = [
|
|
18
|
+
& AttrsOf<Input>
|
|
19
|
+
& BooleanAttrsOf<Input>
|
|
20
|
+
& PropsOf<Input>
|
|
21
|
+
& EventsOf<Element>
|
|
22
|
+
& RefOf<Element>
|
|
23
|
+
& DataProps
|
|
24
|
+
] extends [infer R] ? { readonly [K in keyof R]: R[K] } : never
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
export type AttrsOf<Props extends Record<string, any>> = {
|
|
30
|
+
readonly [K in keyof Props]?:
|
|
31
|
+
| Props[K]
|
|
32
|
+
| Placeholder.Any<Props[K]>
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
*/
|
|
38
|
+
export type BooleanAttrsOf<Attrs extends Record<string, any>> = {
|
|
39
|
+
readonly [
|
|
40
|
+
K in keyof Attrs as K extends string ? boolean extends Attrs[K] ? `?${K}` : never : never
|
|
41
|
+
]?:
|
|
42
|
+
| Attrs[K]
|
|
43
|
+
| Placeholder.Any<Attrs[K]>
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
*/
|
|
49
|
+
export type PropsOf<Attrs extends Record<string, any>> = {
|
|
50
|
+
readonly [K in keyof Attrs as K extends string ? `.${K}` : never]?: Attrs[K] | Placeholder.Any<Attrs[K]>
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @since 1.0.0
|
|
55
|
+
*/
|
|
56
|
+
export type EventsOf<El, EventMap extends {} = DefaultEventMap<El>> = {
|
|
57
|
+
readonly [K in keyof EventMap as K extends string ? `on${Capitalize<K>}` : never]?:
|
|
58
|
+
| EventHandler.EventHandler<
|
|
59
|
+
any,
|
|
60
|
+
any,
|
|
61
|
+
EventWithCurrentTarget<El, Extract<EventMap[K], Event>>
|
|
62
|
+
>
|
|
63
|
+
| Effect.Effect<any, any, unknown>
|
|
64
|
+
| null
|
|
65
|
+
| undefined
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @since 1.0.0
|
|
70
|
+
*/
|
|
71
|
+
export type RefOf<T extends Rendered> = {
|
|
72
|
+
readonly ref?: ElementRef<T> | undefined
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @since 1.0.0
|
|
77
|
+
*/
|
|
78
|
+
export type DataProps = {
|
|
79
|
+
readonly data?: Placeholder.Any<ReadonlyRecord.ReadonlyRecord<any>> | undefined
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
*/
|
|
85
|
+
export function getEventHandler<R, E, Ev extends Event = Event>(
|
|
86
|
+
handler: EventHandler.EventHandler<R, E, Ev> | Effect.Effect<R, E, unknown> | null | undefined
|
|
87
|
+
): EventHandler.EventHandler<R, E, Ev> | null {
|
|
88
|
+
if (!handler) return null
|
|
89
|
+
|
|
90
|
+
if (Effect.isEffect(handler)) {
|
|
91
|
+
return EventHandler.make(() => handler)
|
|
92
|
+
} else {
|
|
93
|
+
return handler
|
|
94
|
+
}
|
|
95
|
+
}
|