sinho 0.1.0
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/.github/workflows/ci.yml +24 -0
- package/.github/workflows/deploy-docs.yml +47 -0
- package/.prettierrc +3 -0
- package/LICENSE.md +21 -0
- package/README.md +33 -0
- package/ci/check-size.js +8 -0
- package/dist/array_mutation.d.ts +16 -0
- package/dist/array_mutation.js +75 -0
- package/dist/array_mutation.js.map +1 -0
- package/dist/bundle.d.ts +1126 -0
- package/dist/bundle.js +1074 -0
- package/dist/bundle.min.js +1 -0
- package/dist/component.d.ts +253 -0
- package/dist/component.js +256 -0
- package/dist/component.js.map +1 -0
- package/dist/context.d.ts +21 -0
- package/dist/context.js +34 -0
- package/dist/context.js.map +1 -0
- package/dist/create_element.d.ts +43 -0
- package/dist/create_element.js +43 -0
- package/dist/create_element.js.map +1 -0
- package/dist/dom.d.ts +602 -0
- package/dist/dom.js +97 -0
- package/dist/dom.js.map +1 -0
- package/dist/intrinsic/ClassComponent.d.ts +2 -0
- package/dist/intrinsic/ClassComponent.js +10 -0
- package/dist/intrinsic/ClassComponent.js.map +1 -0
- package/dist/intrinsic/Dynamic.d.ts +33 -0
- package/dist/intrinsic/Dynamic.js +53 -0
- package/dist/intrinsic/Dynamic.js.map +1 -0
- package/dist/intrinsic/ErrorBoundary.d.ts +14 -0
- package/dist/intrinsic/ErrorBoundary.js +36 -0
- package/dist/intrinsic/ErrorBoundary.js.map +1 -0
- package/dist/intrinsic/For.d.ts +10 -0
- package/dist/intrinsic/For.js +81 -0
- package/dist/intrinsic/For.js.map +1 -0
- package/dist/intrinsic/Fragment.d.ts +23 -0
- package/dist/intrinsic/Fragment.js +28 -0
- package/dist/intrinsic/Fragment.js.map +1 -0
- package/dist/intrinsic/If.d.ts +24 -0
- package/dist/intrinsic/If.js +47 -0
- package/dist/intrinsic/If.js.map +1 -0
- package/dist/intrinsic/Portal.d.ts +6 -0
- package/dist/intrinsic/Portal.js +15 -0
- package/dist/intrinsic/Portal.js.map +1 -0
- package/dist/intrinsic/Style.d.ts +7 -0
- package/dist/intrinsic/Style.js +70 -0
- package/dist/intrinsic/Style.js.map +1 -0
- package/dist/intrinsic/TagComponent.d.ts +4 -0
- package/dist/intrinsic/TagComponent.js +67 -0
- package/dist/intrinsic/TagComponent.js.map +1 -0
- package/dist/intrinsic/Text.d.ts +6 -0
- package/dist/intrinsic/Text.js +16 -0
- package/dist/intrinsic/Text.js.map +1 -0
- package/dist/intrinsic/mod.d.ts +5 -0
- package/dist/intrinsic/mod.js +6 -0
- package/dist/intrinsic/mod.js.map +1 -0
- package/dist/jsx-runtime/mod.d.ts +23 -0
- package/dist/jsx-runtime/mod.js +11 -0
- package/dist/jsx-runtime/mod.js.map +1 -0
- package/dist/mod.d.ts +8 -0
- package/dist/mod.js +7 -0
- package/dist/mod.js.map +1 -0
- package/dist/renderer.d.ts +13 -0
- package/dist/renderer.js +25 -0
- package/dist/renderer.js.map +1 -0
- package/dist/scope.d.ts +138 -0
- package/dist/scope.js +228 -0
- package/dist/scope.js.map +1 -0
- package/dist/template.d.ts +10 -0
- package/dist/template.js +7 -0
- package/dist/template.js.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/package.json +71 -0
- package/src/array_mutation.ts +118 -0
- package/src/component.ts +624 -0
- package/src/context.ts +70 -0
- package/src/create_element.ts +89 -0
- package/src/dom.ts +819 -0
- package/src/intrinsic/ClassComponent.ts +17 -0
- package/src/intrinsic/For.ts +122 -0
- package/src/intrinsic/Fragment.ts +38 -0
- package/src/intrinsic/If.ts +73 -0
- package/src/intrinsic/Portal.ts +25 -0
- package/src/intrinsic/Style.ts +120 -0
- package/src/intrinsic/TagComponent.ts +102 -0
- package/src/intrinsic/Text.ts +24 -0
- package/src/intrinsic/mod.ts +5 -0
- package/src/jsx-runtime/mod.ts +41 -0
- package/src/mod.ts +37 -0
- package/src/renderer.ts +45 -0
- package/src/scope.ts +404 -0
- package/src/template.ts +16 -0
- package/src/utils.ts +29 -0
- package/terser.config.json +16 -0
- package/tsconfig.json +18 -0
- package/web/README.md +41 -0
- package/web/babel.config.js +3 -0
- package/web/dist/shingo.min.d.ts +1131 -0
- package/web/dist/shingo.min.js +1 -0
- package/web/docusaurus.config.ts +151 -0
- package/web/package-lock.json +14850 -0
- package/web/package.json +54 -0
- package/web/sidebars.ts +31 -0
- package/web/src/components/monacoEditor.tsx +72 -0
- package/web/src/components/playground.tsx +89 -0
- package/web/src/components/playgroundComponent.tsx +168 -0
- package/web/src/css/custom.css +37 -0
- package/web/src/pages/index.module.css +31 -0
- package/web/src/pages/index.tsx +73 -0
- package/web/src/pages/playground.tsx +64 -0
- package/web/static/.nojekyll +0 -0
- package/web/static/dist/bundle.d.ts +1126 -0
- package/web/static/dist/bundle.min.js +1 -0
- package/web/tsconfig.json +8 -0
|
@@ -0,0 +1,1126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a signal-based computation.
|
|
3
|
+
*/
|
|
4
|
+
interface SignalLike<out T> {
|
|
5
|
+
/**
|
|
6
|
+
* Gets the current value of the signal with tracking by default.
|
|
7
|
+
*/
|
|
8
|
+
(): T;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Represents a value that tracks changes over time.
|
|
12
|
+
*/
|
|
13
|
+
interface Signal<out T> extends SignalLike<T> {
|
|
14
|
+
/** @ignore */
|
|
15
|
+
_effects: Set<Effect>;
|
|
16
|
+
/**
|
|
17
|
+
* Accesses the current value of the signal without tracking.
|
|
18
|
+
*/
|
|
19
|
+
peek(): T;
|
|
20
|
+
}
|
|
21
|
+
interface SetSignalOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Whether to force the update of the signal even if the new value has the
|
|
24
|
+
* same reference.
|
|
25
|
+
*/
|
|
26
|
+
force?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Whether to suppress the update of the signal's effects.
|
|
29
|
+
*/
|
|
30
|
+
silent?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Can be used to update a signal with a new value.
|
|
34
|
+
*/
|
|
35
|
+
interface SignalSetter<in T, out U = T> {
|
|
36
|
+
(update: (value: U) => T, opts?: SetSignalOptions): void;
|
|
37
|
+
(value: T extends Function ? never : T, opts?: SetSignalOptions): void;
|
|
38
|
+
}
|
|
39
|
+
interface SubscopeOptions {
|
|
40
|
+
details?: object;
|
|
41
|
+
}
|
|
42
|
+
interface Effect {
|
|
43
|
+
_clean?: Cleanup;
|
|
44
|
+
_deps: Set<Signal<unknown>>;
|
|
45
|
+
_scope: Scope;
|
|
46
|
+
_run(): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Represents the cleanup function of an effect.
|
|
50
|
+
*/
|
|
51
|
+
type Cleanup = (() => void) | void | undefined | null;
|
|
52
|
+
interface Scope<out T = {}> {
|
|
53
|
+
readonly _parent?: Scope;
|
|
54
|
+
_effects: Effect[];
|
|
55
|
+
_subscopes: Scope[];
|
|
56
|
+
_details: T;
|
|
57
|
+
_run<T>(fn: () => T): T;
|
|
58
|
+
_cleanup(): void;
|
|
59
|
+
}
|
|
60
|
+
/** @ignore */
|
|
61
|
+
declare const useScope: <T = {}>() => Scope<T>;
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new signal with the given value.
|
|
64
|
+
* @returns A tuple with the signal and its setter.
|
|
65
|
+
*/
|
|
66
|
+
declare const useSignal: (<T>(value: T, opts?: SetSignalOptions) => readonly [Signal<T>, SignalSetter<T>]) & (<T>(value?: T, opts?: SetSignalOptions) => readonly [Signal<T | undefined>, SignalSetter<T | undefined>]);
|
|
67
|
+
/**
|
|
68
|
+
* Runs the given function in a batch.
|
|
69
|
+
*
|
|
70
|
+
* @param fn Any calls to signal setters inside the function will be batched
|
|
71
|
+
* and updated at the same time.
|
|
72
|
+
*/
|
|
73
|
+
declare const useBatch: <T>(fn: () => T) => T;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a memoized signal.
|
|
76
|
+
*
|
|
77
|
+
* @param fn The computation function.
|
|
78
|
+
*/
|
|
79
|
+
declare const useMemo: <T>(fn: () => T, opts?: SetSignalOptions) => Signal<T>;
|
|
80
|
+
/**
|
|
81
|
+
* Provide write capabilities to a signal.
|
|
82
|
+
*/
|
|
83
|
+
interface RefSignal<in out T> extends Signal<T>, RefSignalSetter<T> {
|
|
84
|
+
/**
|
|
85
|
+
* Sets the value of the signal.
|
|
86
|
+
*/
|
|
87
|
+
set: SignalSetter<T>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A contravariant variant of {@link RefSignal}.
|
|
91
|
+
*/
|
|
92
|
+
interface RefSignalSetter<in T> {
|
|
93
|
+
/**
|
|
94
|
+
* Sets the value of the signal.
|
|
95
|
+
*/
|
|
96
|
+
set: SignalSetter<T, unknown>;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Creates a new signal with write capabilities.
|
|
100
|
+
*/
|
|
101
|
+
declare const useRef: (<T>(value: T, opts?: SetSignalOptions) => RefSignal<T>) & (<T>(value?: T, opts?: SetSignalOptions) => RefSignal<T | undefined>);
|
|
102
|
+
/**
|
|
103
|
+
* Represents a value that can be a signal or a constant value.
|
|
104
|
+
*
|
|
105
|
+
* Note that functions are not allowed as constant values.
|
|
106
|
+
*/
|
|
107
|
+
type MaybeSignal<T> = SignalLike<T> | (T extends Function ? never : T);
|
|
108
|
+
/**
|
|
109
|
+
* @namespace
|
|
110
|
+
*/
|
|
111
|
+
declare const MaybeSignal: {
|
|
112
|
+
/**
|
|
113
|
+
* Transforms the given {@link MaybeSignal} into a {@link Signal}.
|
|
114
|
+
*/
|
|
115
|
+
upgrade: <T>(signal: MaybeSignal<T>) => SignalLike<T>;
|
|
116
|
+
/**
|
|
117
|
+
* Gets the value of the given {@link MaybeSignal}.
|
|
118
|
+
*/
|
|
119
|
+
get: <T_1>(signal: MaybeSignal<T_1>) => T_1;
|
|
120
|
+
/**
|
|
121
|
+
* Accesses the value of the given {@link MaybeSignal} without tracking.
|
|
122
|
+
*/
|
|
123
|
+
peek<T_2>(signal: MaybeSignal<T_2>): T_2;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
interface DomIntrinsicElements {
|
|
127
|
+
a: HtmlProps<HTMLAnchorElement> & DomEventProps<HTMLAnchorElement>;
|
|
128
|
+
abbr: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
129
|
+
address: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
130
|
+
area: HtmlProps<HTMLAreaElement> & DomEventProps<HTMLAreaElement>;
|
|
131
|
+
article: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
132
|
+
aside: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
133
|
+
audio: HtmlProps<HTMLAudioElement> & DomEventProps<HTMLAudioElement>;
|
|
134
|
+
b: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
135
|
+
base: HtmlProps<HTMLBaseElement> & DomEventProps<HTMLBaseElement>;
|
|
136
|
+
bdi: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
137
|
+
bdo: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
138
|
+
big: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
139
|
+
blockquote: HtmlProps<HTMLQuoteElement> & DomEventProps<HTMLQuoteElement>;
|
|
140
|
+
body: HtmlProps<HTMLBodyElement> & DomEventProps<HTMLBodyElement>;
|
|
141
|
+
br: HtmlProps<HTMLBRElement> & DomEventProps<HTMLBRElement>;
|
|
142
|
+
button: HtmlProps<HTMLButtonElement> & DomEventProps<HTMLButtonElement>;
|
|
143
|
+
canvas: HtmlProps<HTMLCanvasElement> & DomEventProps<HTMLCanvasElement>;
|
|
144
|
+
caption: HtmlProps<HTMLTableCaptionElement> & DomEventProps<HTMLTableCaptionElement>;
|
|
145
|
+
cite: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
146
|
+
code: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
147
|
+
col: HtmlProps<HTMLTableColElement> & DomEventProps<HTMLTableColElement>;
|
|
148
|
+
colgroup: HtmlProps<HTMLTableColElement> & DomEventProps<HTMLTableColElement>;
|
|
149
|
+
data: HtmlProps<HTMLDataElement> & DomEventProps<HTMLDataElement>;
|
|
150
|
+
datalist: HtmlProps<HTMLDataListElement> & DomEventProps<HTMLDataListElement>;
|
|
151
|
+
dd: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
152
|
+
del: HtmlProps<HTMLModElement> & DomEventProps<HTMLModElement>;
|
|
153
|
+
details: HtmlProps<HTMLDetailsElement> & DomEventProps<HTMLDetailsElement>;
|
|
154
|
+
dfn: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
155
|
+
dialog: HtmlProps<HTMLDialogElement> & DomEventProps<HTMLDialogElement>;
|
|
156
|
+
div: HtmlProps<HTMLDivElement> & DomEventProps<HTMLDivElement>;
|
|
157
|
+
dl: HtmlProps<HTMLDListElement> & DomEventProps<HTMLDListElement>;
|
|
158
|
+
dt: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
159
|
+
em: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
160
|
+
embed: HtmlProps<HTMLEmbedElement> & DomEventProps<HTMLEmbedElement>;
|
|
161
|
+
fieldset: HtmlProps<HTMLFieldSetElement> & DomEventProps<HTMLFieldSetElement>;
|
|
162
|
+
figcaption: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
163
|
+
figure: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
164
|
+
footer: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
165
|
+
form: HtmlProps<HTMLFormElement> & DomEventProps<HTMLFormElement>;
|
|
166
|
+
h1: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
|
|
167
|
+
h2: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
|
|
168
|
+
h3: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
|
|
169
|
+
h4: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
|
|
170
|
+
h5: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
|
|
171
|
+
h6: HtmlProps<HTMLHeadingElement> & DomEventProps<HTMLHeadingElement>;
|
|
172
|
+
head: HtmlProps<HTMLHeadElement> & DomEventProps<HTMLHeadElement>;
|
|
173
|
+
header: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
174
|
+
hgroup: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
175
|
+
hr: HtmlProps<HTMLHRElement> & DomEventProps<HTMLHRElement>;
|
|
176
|
+
html: HtmlProps<HTMLHtmlElement> & DomEventProps<HTMLHtmlElement>;
|
|
177
|
+
i: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
178
|
+
iframe: HtmlProps<HTMLIFrameElement> & DomEventProps<HTMLIFrameElement>;
|
|
179
|
+
img: HtmlProps<HTMLImageElement> & DomEventProps<HTMLImageElement>;
|
|
180
|
+
input: HtmlProps<HTMLInputElement> & DomEventProps<HTMLInputElement>;
|
|
181
|
+
ins: HtmlProps<HTMLModElement> & DomEventProps<HTMLModElement>;
|
|
182
|
+
kbd: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
183
|
+
keygen: HtmlProps<HTMLUnknownElement> & DomEventProps<HTMLUnknownElement>;
|
|
184
|
+
label: HtmlProps<HTMLLabelElement> & DomEventProps<HTMLLabelElement>;
|
|
185
|
+
legend: HtmlProps<HTMLLegendElement> & DomEventProps<HTMLLegendElement>;
|
|
186
|
+
li: HtmlProps<HTMLLIElement> & DomEventProps<HTMLLIElement>;
|
|
187
|
+
link: HtmlProps<HTMLLinkElement> & DomEventProps<HTMLLinkElement>;
|
|
188
|
+
main: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
189
|
+
map: HtmlProps<HTMLMapElement> & DomEventProps<HTMLMapElement>;
|
|
190
|
+
mark: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
191
|
+
marquee: HtmlProps<HTMLMarqueeElement> & DomEventProps<HTMLMarqueeElement>;
|
|
192
|
+
menu: HtmlProps<HTMLMenuElement> & DomEventProps<HTMLMenuElement>;
|
|
193
|
+
menuitem: HtmlProps<HTMLUnknownElement> & DomEventProps<HTMLUnknownElement>;
|
|
194
|
+
meta: HtmlProps<HTMLMetaElement> & DomEventProps<HTMLMetaElement>;
|
|
195
|
+
meter: HtmlProps<HTMLMeterElement> & DomEventProps<HTMLMeterElement>;
|
|
196
|
+
nav: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
197
|
+
noscript: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
198
|
+
object: HtmlProps<HTMLObjectElement> & DomEventProps<HTMLObjectElement>;
|
|
199
|
+
ol: HtmlProps<HTMLOListElement> & DomEventProps<HTMLOListElement>;
|
|
200
|
+
optgroup: HtmlProps<HTMLOptGroupElement> & DomEventProps<HTMLOptGroupElement>;
|
|
201
|
+
option: HtmlProps<HTMLOptionElement> & DomEventProps<HTMLOptionElement>;
|
|
202
|
+
output: HtmlProps<HTMLOutputElement> & DomEventProps<HTMLOutputElement>;
|
|
203
|
+
p: HtmlProps<HTMLParagraphElement> & DomEventProps<HTMLParagraphElement>;
|
|
204
|
+
param: HtmlProps<HTMLParamElement> & DomEventProps<HTMLParamElement>;
|
|
205
|
+
picture: HtmlProps<HTMLPictureElement> & DomEventProps<HTMLPictureElement>;
|
|
206
|
+
pre: HtmlProps<HTMLPreElement> & DomEventProps<HTMLPreElement>;
|
|
207
|
+
progress: HtmlProps<HTMLProgressElement> & DomEventProps<HTMLProgressElement>;
|
|
208
|
+
q: HtmlProps<HTMLQuoteElement> & DomEventProps<HTMLQuoteElement>;
|
|
209
|
+
rp: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
210
|
+
rt: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
211
|
+
ruby: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
212
|
+
s: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
213
|
+
samp: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
214
|
+
script: HtmlProps<HTMLScriptElement> & DomEventProps<HTMLScriptElement>;
|
|
215
|
+
section: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
216
|
+
select: HtmlProps<HTMLSelectElement> & DomEventProps<HTMLSelectElement>;
|
|
217
|
+
slot: HtmlProps<HTMLSlotElement> & DomEventProps<HTMLSlotElement>;
|
|
218
|
+
small: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
219
|
+
source: HtmlProps<HTMLSourceElement> & DomEventProps<HTMLSourceElement>;
|
|
220
|
+
span: HtmlProps<HTMLSpanElement> & DomEventProps<HTMLSpanElement>;
|
|
221
|
+
strong: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
222
|
+
style: HtmlProps<HTMLStyleElement> & DomEventProps<HTMLStyleElement>;
|
|
223
|
+
sub: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
224
|
+
summary: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
225
|
+
sup: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
226
|
+
table: HtmlProps<HTMLTableElement> & DomEventProps<HTMLTableElement>;
|
|
227
|
+
tbody: HtmlProps<HTMLTableSectionElement> & DomEventProps<HTMLTableSectionElement>;
|
|
228
|
+
td: HtmlProps<HTMLTableCellElement> & DomEventProps<HTMLTableCellElement>;
|
|
229
|
+
textarea: HtmlProps<HTMLTextAreaElement> & DomEventProps<HTMLTextAreaElement>;
|
|
230
|
+
tfoot: HtmlProps<HTMLTableSectionElement> & DomEventProps<HTMLTableSectionElement>;
|
|
231
|
+
th: HtmlProps<HTMLTableCellElement> & DomEventProps<HTMLTableCellElement>;
|
|
232
|
+
thead: HtmlProps<HTMLTableSectionElement> & DomEventProps<HTMLTableSectionElement>;
|
|
233
|
+
time: HtmlProps<HTMLTimeElement> & DomEventProps<HTMLTimeElement>;
|
|
234
|
+
title: HtmlProps<HTMLTitleElement> & DomEventProps<HTMLTitleElement>;
|
|
235
|
+
tr: HtmlProps<HTMLTableRowElement> & DomEventProps<HTMLTableRowElement>;
|
|
236
|
+
track: HtmlProps<HTMLTrackElement> & DomEventProps<HTMLTrackElement>;
|
|
237
|
+
u: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
238
|
+
ul: HtmlProps<HTMLUListElement> & DomEventProps<HTMLUListElement>;
|
|
239
|
+
var: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
240
|
+
video: HtmlProps<HTMLVideoElement> & DomEventProps<HTMLVideoElement>;
|
|
241
|
+
wbr: HtmlProps<HTMLElement> & DomEventProps<HTMLElement>;
|
|
242
|
+
svg: SvgProps<SVGSVGElement> & DomEventProps<SVGSVGElement>;
|
|
243
|
+
animate: SvgProps<SVGAnimateElement> & DomEventProps<SVGAnimateElement>;
|
|
244
|
+
circle: SvgProps<SVGCircleElement> & DomEventProps<SVGCircleElement>;
|
|
245
|
+
animateTransform: SvgProps<SVGAnimateElement> & DomEventProps<SVGAnimateElement>;
|
|
246
|
+
clipPath: SvgProps<SVGClipPathElement> & DomEventProps<SVGClipPathElement>;
|
|
247
|
+
defs: SvgProps<SVGDefsElement> & DomEventProps<SVGDefsElement>;
|
|
248
|
+
desc: SvgProps<SVGDescElement> & DomEventProps<SVGDescElement>;
|
|
249
|
+
ellipse: SvgProps<SVGEllipseElement> & DomEventProps<SVGEllipseElement>;
|
|
250
|
+
feBlend: SvgProps<SVGFEBlendElement> & DomEventProps<SVGFEBlendElement>;
|
|
251
|
+
feColorMatrix: SvgProps<SVGFEColorMatrixElement> & DomEventProps<SVGFEColorMatrixElement>;
|
|
252
|
+
feComponentTransfer: SvgProps<SVGFEComponentTransferElement> & DomEventProps<SVGFEComponentTransferElement>;
|
|
253
|
+
feComposite: SvgProps<SVGFECompositeElement> & DomEventProps<SVGFECompositeElement>;
|
|
254
|
+
feConvolveMatrix: SvgProps<SVGFEConvolveMatrixElement> & DomEventProps<SVGFEConvolveMatrixElement>;
|
|
255
|
+
feDiffuseLighting: SvgProps<SVGFEDiffuseLightingElement> & DomEventProps<SVGFEDiffuseLightingElement>;
|
|
256
|
+
feDisplacementMap: SvgProps<SVGFEDisplacementMapElement> & DomEventProps<SVGFEDisplacementMapElement>;
|
|
257
|
+
feDropShadow: SvgProps<SVGFEDropShadowElement> & DomEventProps<SVGFEDropShadowElement>;
|
|
258
|
+
feFlood: SvgProps<SVGFEFloodElement> & DomEventProps<SVGFEFloodElement>;
|
|
259
|
+
feFuncA: SvgProps<SVGFEFuncAElement> & DomEventProps<SVGFEFuncAElement>;
|
|
260
|
+
feFuncB: SvgProps<SVGFEFuncBElement> & DomEventProps<SVGFEFuncBElement>;
|
|
261
|
+
feFuncG: SvgProps<SVGFEFuncGElement> & DomEventProps<SVGFEFuncGElement>;
|
|
262
|
+
feFuncR: SvgProps<SVGFEFuncRElement> & DomEventProps<SVGFEFuncRElement>;
|
|
263
|
+
feGaussianBlur: SvgProps<SVGFEGaussianBlurElement> & DomEventProps<SVGFEGaussianBlurElement>;
|
|
264
|
+
feImage: SvgProps<SVGFEImageElement> & DomEventProps<SVGFEImageElement>;
|
|
265
|
+
feMerge: SvgProps<SVGFEMergeElement> & DomEventProps<SVGFEMergeElement>;
|
|
266
|
+
feMergeNode: SvgProps<SVGFEMergeNodeElement> & DomEventProps<SVGFEMergeNodeElement>;
|
|
267
|
+
feMorphology: SvgProps<SVGFEMorphologyElement> & DomEventProps<SVGFEMorphologyElement>;
|
|
268
|
+
feOffset: SvgProps<SVGFEOffsetElement> & DomEventProps<SVGFEOffsetElement>;
|
|
269
|
+
feSpecularLighting: SvgProps<SVGFESpecularLightingElement> & DomEventProps<SVGFESpecularLightingElement>;
|
|
270
|
+
feTile: SvgProps<SVGFETileElement> & DomEventProps<SVGFETileElement>;
|
|
271
|
+
feTurbulence: SvgProps<SVGFETurbulenceElement> & DomEventProps<SVGFETurbulenceElement>;
|
|
272
|
+
filter: SvgProps<SVGFilterElement> & DomEventProps<SVGFilterElement>;
|
|
273
|
+
foreignObject: SvgProps<SVGForeignObjectElement> & DomEventProps<SVGForeignObjectElement>;
|
|
274
|
+
g: SvgProps<SVGGElement> & DomEventProps<SVGGElement>;
|
|
275
|
+
image: SvgProps<SVGImageElement> & DomEventProps<SVGImageElement>;
|
|
276
|
+
line: SvgProps<SVGLineElement> & DomEventProps<SVGLineElement>;
|
|
277
|
+
linearGradient: SvgProps<SVGLinearGradientElement> & DomEventProps<SVGLinearGradientElement>;
|
|
278
|
+
marker: SvgProps<SVGMarkerElement> & DomEventProps<SVGMarkerElement>;
|
|
279
|
+
mask: SvgProps<SVGMaskElement> & DomEventProps<SVGMaskElement>;
|
|
280
|
+
path: SvgProps<SVGPathElement> & DomEventProps<SVGPathElement>;
|
|
281
|
+
pattern: SvgProps<SVGPatternElement> & DomEventProps<SVGPatternElement>;
|
|
282
|
+
polygon: SvgProps<SVGPolygonElement> & DomEventProps<SVGPolygonElement>;
|
|
283
|
+
polyline: SvgProps<SVGPolylineElement> & DomEventProps<SVGPolylineElement>;
|
|
284
|
+
radialGradient: SvgProps<SVGRadialGradientElement> & DomEventProps<SVGRadialGradientElement>;
|
|
285
|
+
rect: SvgProps<SVGRectElement> & DomEventProps<SVGRectElement>;
|
|
286
|
+
stop: SvgProps<SVGStopElement> & DomEventProps<SVGStopElement>;
|
|
287
|
+
symbol: SvgProps<SVGSymbolElement> & DomEventProps<SVGSymbolElement>;
|
|
288
|
+
text: SvgProps<SVGTextElement> & DomEventProps<SVGTextElement>;
|
|
289
|
+
textPath: SvgProps<SVGTextPathElement> & DomEventProps<SVGTextPathElement>;
|
|
290
|
+
tspan: SvgProps<SVGTSpanElement> & DomEventProps<SVGTSpanElement>;
|
|
291
|
+
use: SvgProps<SVGUseElement> & DomEventProps<SVGUseElement>;
|
|
292
|
+
[tagName: string]: DomProps<any> & Record<string, any>;
|
|
293
|
+
}
|
|
294
|
+
type Styles = {
|
|
295
|
+
[K in Exclude<keyof CSSStyleDeclaration, "item" | "setProperty" | "removeProperty" | "getPropertyValue" | "getPropertyPriority" | typeof Symbol.iterator | number>]?: MaybeSignal<string | number | null | undefined>;
|
|
296
|
+
} & {
|
|
297
|
+
[key: string]: MaybeSignal<string | number | null | undefined>;
|
|
298
|
+
};
|
|
299
|
+
type ExcludeNeverValues<T> = T[Exclude<keyof T, {
|
|
300
|
+
[K in keyof T]: T[K] extends never ? K : never;
|
|
301
|
+
}[keyof T]>];
|
|
302
|
+
type EventMap = Pick<ElementEventMap & DocumentEventMap & GlobalEventHandlersEventMap, ExcludeNeverValues<{
|
|
303
|
+
[K in keyof (ElementEventMap & DocumentEventMap & GlobalEventHandlersEventMap)]: K extends Lowercase<K> ? K : never;
|
|
304
|
+
}>>;
|
|
305
|
+
type EventHandler<K extends keyof EventMap, E> = (this: E, evt: Omit<EventMap[K], "currentTarget"> & {
|
|
306
|
+
currentTarget: E;
|
|
307
|
+
}) => void;
|
|
308
|
+
type DomEventProps<E> = {
|
|
309
|
+
[K in keyof EventMap as `on${K}`]?: EventHandler<K, E>;
|
|
310
|
+
};
|
|
311
|
+
interface DangerousHtml {
|
|
312
|
+
__html: string;
|
|
313
|
+
}
|
|
314
|
+
interface DomProps<in E> {
|
|
315
|
+
ref?: RefSignalSetter<E | undefined>;
|
|
316
|
+
class?: MaybeSignal<string | undefined>;
|
|
317
|
+
style?: Styles;
|
|
318
|
+
dangerouslySetInnerHTML?: MaybeSignal<DangerousHtml>;
|
|
319
|
+
children?: Children;
|
|
320
|
+
}
|
|
321
|
+
interface HtmlProps<in E> extends DomProps<E> {
|
|
322
|
+
accept?: MaybeSignal<string | undefined>;
|
|
323
|
+
acceptCharset?: MaybeSignal<string | undefined>;
|
|
324
|
+
accessKey?: MaybeSignal<string | undefined>;
|
|
325
|
+
action?: MaybeSignal<string | undefined>;
|
|
326
|
+
allow?: MaybeSignal<string | undefined>;
|
|
327
|
+
allowFullScreen?: MaybeSignal<boolean | undefined>;
|
|
328
|
+
allowTransparency?: MaybeSignal<boolean | undefined>;
|
|
329
|
+
alt?: MaybeSignal<string | undefined>;
|
|
330
|
+
as?: MaybeSignal<string | undefined>;
|
|
331
|
+
async?: MaybeSignal<boolean | undefined>;
|
|
332
|
+
autocomplete?: MaybeSignal<string | undefined>;
|
|
333
|
+
autoComplete?: MaybeSignal<string | undefined>;
|
|
334
|
+
autocorrect?: MaybeSignal<string | undefined>;
|
|
335
|
+
autoCorrect?: MaybeSignal<string | undefined>;
|
|
336
|
+
autofocus?: MaybeSignal<boolean | undefined>;
|
|
337
|
+
autoFocus?: MaybeSignal<boolean | undefined>;
|
|
338
|
+
autoPlay?: MaybeSignal<boolean | undefined>;
|
|
339
|
+
capture?: MaybeSignal<string | undefined>;
|
|
340
|
+
cellPadding?: MaybeSignal<string | undefined>;
|
|
341
|
+
cellSpacing?: MaybeSignal<string | undefined>;
|
|
342
|
+
charSet?: MaybeSignal<string | undefined>;
|
|
343
|
+
challenge?: MaybeSignal<string | undefined>;
|
|
344
|
+
checked?: MaybeSignal<boolean | undefined>;
|
|
345
|
+
cite?: MaybeSignal<string | undefined>;
|
|
346
|
+
cols?: MaybeSignal<number | undefined>;
|
|
347
|
+
colSpan?: MaybeSignal<number | undefined>;
|
|
348
|
+
content?: MaybeSignal<string | undefined>;
|
|
349
|
+
contentEditable?: MaybeSignal<boolean | undefined>;
|
|
350
|
+
contextMenu?: MaybeSignal<string | undefined>;
|
|
351
|
+
controls?: MaybeSignal<boolean | undefined>;
|
|
352
|
+
controlsList?: MaybeSignal<string | undefined>;
|
|
353
|
+
coords?: MaybeSignal<string | undefined>;
|
|
354
|
+
crossOrigin?: MaybeSignal<string | undefined>;
|
|
355
|
+
data?: MaybeSignal<string | undefined>;
|
|
356
|
+
dateTime?: MaybeSignal<string | undefined>;
|
|
357
|
+
default?: MaybeSignal<boolean | undefined>;
|
|
358
|
+
defaultChecked?: MaybeSignal<boolean | undefined>;
|
|
359
|
+
defaultValue?: MaybeSignal<string | string[] | number | undefined>;
|
|
360
|
+
defer?: MaybeSignal<boolean | undefined>;
|
|
361
|
+
dir?: MaybeSignal<"auto" | "rtl" | "ltr" | undefined>;
|
|
362
|
+
disabled?: MaybeSignal<boolean | undefined>;
|
|
363
|
+
disableRemotePlayback?: MaybeSignal<boolean | undefined>;
|
|
364
|
+
download?: MaybeSignal<any | undefined>;
|
|
365
|
+
decoding?: MaybeSignal<"sync" | "async" | "auto" | undefined>;
|
|
366
|
+
draggable?: MaybeSignal<boolean | undefined>;
|
|
367
|
+
encType?: MaybeSignal<string | undefined>;
|
|
368
|
+
enterkeyhint?: MaybeSignal<"enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined>;
|
|
369
|
+
for?: MaybeSignal<string | undefined>;
|
|
370
|
+
form?: MaybeSignal<string | undefined>;
|
|
371
|
+
formAction?: MaybeSignal<string | undefined>;
|
|
372
|
+
formEncType?: MaybeSignal<string | undefined>;
|
|
373
|
+
formMethod?: MaybeSignal<string | undefined>;
|
|
374
|
+
formNoValidate?: MaybeSignal<boolean | undefined>;
|
|
375
|
+
formTarget?: MaybeSignal<string | undefined>;
|
|
376
|
+
frameBorder?: MaybeSignal<number | string | undefined>;
|
|
377
|
+
headers?: MaybeSignal<string | undefined>;
|
|
378
|
+
height?: MaybeSignal<number | string | undefined>;
|
|
379
|
+
hidden?: MaybeSignal<boolean | undefined>;
|
|
380
|
+
high?: MaybeSignal<number | undefined>;
|
|
381
|
+
href?: MaybeSignal<string | undefined>;
|
|
382
|
+
hrefLang?: MaybeSignal<string | undefined>;
|
|
383
|
+
httpEquiv?: MaybeSignal<string | undefined>;
|
|
384
|
+
icon?: MaybeSignal<string | undefined>;
|
|
385
|
+
inputMode?: MaybeSignal<string | undefined>;
|
|
386
|
+
integrity?: MaybeSignal<string | undefined>;
|
|
387
|
+
is?: MaybeSignal<string | undefined>;
|
|
388
|
+
keyParams?: MaybeSignal<string | undefined>;
|
|
389
|
+
keyType?: MaybeSignal<string | undefined>;
|
|
390
|
+
kind?: MaybeSignal<string | undefined>;
|
|
391
|
+
label?: MaybeSignal<string | undefined>;
|
|
392
|
+
lang?: MaybeSignal<string | undefined>;
|
|
393
|
+
list?: MaybeSignal<string | undefined>;
|
|
394
|
+
loading?: MaybeSignal<"eager" | "lazy" | undefined>;
|
|
395
|
+
loop?: MaybeSignal<boolean | undefined>;
|
|
396
|
+
low?: MaybeSignal<number | undefined>;
|
|
397
|
+
manifest?: MaybeSignal<string | undefined>;
|
|
398
|
+
marginHeight?: MaybeSignal<number | undefined>;
|
|
399
|
+
marginWidth?: MaybeSignal<number | undefined>;
|
|
400
|
+
max?: MaybeSignal<string | undefined>;
|
|
401
|
+
maxLength?: MaybeSignal<number | undefined>;
|
|
402
|
+
media?: MaybeSignal<string | undefined>;
|
|
403
|
+
mediaGroup?: MaybeSignal<string | undefined>;
|
|
404
|
+
method?: MaybeSignal<string | undefined>;
|
|
405
|
+
min?: MaybeSignal<string | undefined>;
|
|
406
|
+
minLength?: MaybeSignal<number | undefined>;
|
|
407
|
+
multiple?: MaybeSignal<boolean | undefined>;
|
|
408
|
+
muted?: MaybeSignal<boolean | undefined>;
|
|
409
|
+
name?: MaybeSignal<string | undefined>;
|
|
410
|
+
nomodule?: MaybeSignal<boolean | undefined>;
|
|
411
|
+
nonce?: MaybeSignal<string | undefined>;
|
|
412
|
+
noValidate?: MaybeSignal<boolean | undefined>;
|
|
413
|
+
open?: MaybeSignal<boolean | undefined>;
|
|
414
|
+
optimum?: MaybeSignal<number | undefined>;
|
|
415
|
+
part?: MaybeSignal<string | undefined>;
|
|
416
|
+
pattern?: MaybeSignal<string | undefined>;
|
|
417
|
+
ping?: MaybeSignal<string | undefined>;
|
|
418
|
+
placeholder?: MaybeSignal<string | undefined>;
|
|
419
|
+
playsInline?: MaybeSignal<boolean | undefined>;
|
|
420
|
+
poster?: MaybeSignal<string | undefined>;
|
|
421
|
+
preload?: MaybeSignal<string | undefined>;
|
|
422
|
+
radioGroup?: MaybeSignal<string | undefined>;
|
|
423
|
+
readonly?: MaybeSignal<boolean | undefined>;
|
|
424
|
+
readOnly?: MaybeSignal<boolean | undefined>;
|
|
425
|
+
referrerpolicy?: MaybeSignal<"no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | undefined>;
|
|
426
|
+
rel?: MaybeSignal<string | undefined>;
|
|
427
|
+
required?: MaybeSignal<boolean | undefined>;
|
|
428
|
+
reversed?: MaybeSignal<boolean | undefined>;
|
|
429
|
+
role?: MaybeSignal<string | undefined>;
|
|
430
|
+
rows?: MaybeSignal<number | undefined>;
|
|
431
|
+
rowSpan?: MaybeSignal<number | undefined>;
|
|
432
|
+
sandbox?: MaybeSignal<string | undefined>;
|
|
433
|
+
scope?: MaybeSignal<string | undefined>;
|
|
434
|
+
scoped?: MaybeSignal<boolean | undefined>;
|
|
435
|
+
scrolling?: MaybeSignal<string | undefined>;
|
|
436
|
+
seamless?: MaybeSignal<boolean | undefined>;
|
|
437
|
+
selected?: MaybeSignal<boolean | undefined>;
|
|
438
|
+
shape?: MaybeSignal<string | undefined>;
|
|
439
|
+
size?: MaybeSignal<number | undefined>;
|
|
440
|
+
sizes?: MaybeSignal<string | undefined>;
|
|
441
|
+
slot?: MaybeSignal<string | undefined>;
|
|
442
|
+
span?: MaybeSignal<number | undefined>;
|
|
443
|
+
spellcheck?: MaybeSignal<boolean | undefined>;
|
|
444
|
+
spellCheck?: MaybeSignal<boolean | undefined>;
|
|
445
|
+
src?: MaybeSignal<string | undefined>;
|
|
446
|
+
srcset?: MaybeSignal<string | undefined>;
|
|
447
|
+
srcDoc?: MaybeSignal<string | undefined>;
|
|
448
|
+
srcLang?: MaybeSignal<string | undefined>;
|
|
449
|
+
srcSet?: MaybeSignal<string | undefined>;
|
|
450
|
+
start?: MaybeSignal<number | undefined>;
|
|
451
|
+
step?: MaybeSignal<number | string | undefined>;
|
|
452
|
+
summary?: MaybeSignal<string | undefined>;
|
|
453
|
+
tabIndex?: MaybeSignal<number | undefined>;
|
|
454
|
+
target?: MaybeSignal<string | undefined>;
|
|
455
|
+
title?: MaybeSignal<string | undefined>;
|
|
456
|
+
type?: MaybeSignal<string | undefined>;
|
|
457
|
+
useMap?: MaybeSignal<string | undefined>;
|
|
458
|
+
value?: MaybeSignal<string | string[] | number | undefined>;
|
|
459
|
+
volume?: MaybeSignal<string | number | undefined>;
|
|
460
|
+
width?: MaybeSignal<number | string | undefined>;
|
|
461
|
+
wmode?: MaybeSignal<string | undefined>;
|
|
462
|
+
wrap?: MaybeSignal<string | undefined>;
|
|
463
|
+
autocapitalize?: MaybeSignal<"off" | "none" | "on" | "sentences" | "words" | "characters" | undefined>;
|
|
464
|
+
autoCapitalize?: MaybeSignal<"off" | "none" | "on" | "sentences" | "words" | "characters" | undefined>;
|
|
465
|
+
disablePictureInPicture?: MaybeSignal<boolean | undefined>;
|
|
466
|
+
results?: MaybeSignal<number | undefined>;
|
|
467
|
+
translate?: MaybeSignal<"yes" | "no" | undefined>;
|
|
468
|
+
about?: MaybeSignal<string | undefined>;
|
|
469
|
+
datatype?: MaybeSignal<string | undefined>;
|
|
470
|
+
inlist?: MaybeSignal<any | undefined>;
|
|
471
|
+
prefix?: MaybeSignal<string | undefined>;
|
|
472
|
+
property?: MaybeSignal<string | undefined>;
|
|
473
|
+
resource?: MaybeSignal<string | undefined>;
|
|
474
|
+
typeof?: MaybeSignal<string | undefined>;
|
|
475
|
+
vocab?: MaybeSignal<string | undefined>;
|
|
476
|
+
itemProp?: MaybeSignal<string | undefined>;
|
|
477
|
+
itemScope?: MaybeSignal<boolean | undefined>;
|
|
478
|
+
itemType?: MaybeSignal<string | undefined>;
|
|
479
|
+
itemID?: MaybeSignal<string | undefined>;
|
|
480
|
+
itemRef?: MaybeSignal<string | undefined>;
|
|
481
|
+
[name: string]: any;
|
|
482
|
+
}
|
|
483
|
+
interface SvgProps<in E> extends HtmlProps<E> {
|
|
484
|
+
accentHeight?: MaybeSignal<number | string | undefined>;
|
|
485
|
+
accumulate?: MaybeSignal<"none" | "sum" | undefined>;
|
|
486
|
+
additive?: MaybeSignal<"replace" | "sum" | undefined>;
|
|
487
|
+
alignmentBaseline?: MaybeSignal<"auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" | undefined>;
|
|
488
|
+
allowReorder?: MaybeSignal<"no" | "yes" | undefined>;
|
|
489
|
+
alphabetic?: MaybeSignal<number | string | undefined>;
|
|
490
|
+
amplitude?: MaybeSignal<number | string | undefined>;
|
|
491
|
+
arabicForm?: MaybeSignal<"initial" | "medial" | "terminal" | "isolated" | undefined>;
|
|
492
|
+
ascent?: MaybeSignal<number | string | undefined>;
|
|
493
|
+
attributeName?: MaybeSignal<string | undefined>;
|
|
494
|
+
attributeType?: MaybeSignal<string | undefined>;
|
|
495
|
+
autoReverse?: MaybeSignal<number | string | undefined>;
|
|
496
|
+
azimuth?: MaybeSignal<number | string | undefined>;
|
|
497
|
+
baseFrequency?: MaybeSignal<number | string | undefined>;
|
|
498
|
+
baselineShift?: MaybeSignal<number | string | undefined>;
|
|
499
|
+
baseProfile?: MaybeSignal<number | string | undefined>;
|
|
500
|
+
bbox?: MaybeSignal<number | string | undefined>;
|
|
501
|
+
begin?: MaybeSignal<number | string | undefined>;
|
|
502
|
+
bias?: MaybeSignal<number | string | undefined>;
|
|
503
|
+
by?: MaybeSignal<number | string | undefined>;
|
|
504
|
+
calcMode?: MaybeSignal<number | string | undefined>;
|
|
505
|
+
capHeight?: MaybeSignal<number | string | undefined>;
|
|
506
|
+
clip?: MaybeSignal<number | string | undefined>;
|
|
507
|
+
clipPath?: MaybeSignal<string | undefined>;
|
|
508
|
+
clipPathUnits?: MaybeSignal<number | string | undefined>;
|
|
509
|
+
clipRule?: MaybeSignal<number | string | undefined>;
|
|
510
|
+
colorInterpolation?: MaybeSignal<number | string | undefined>;
|
|
511
|
+
colorInterpolationFilters?: MaybeSignal<"auto" | "sRGB" | "linearRGB" | "inherit" | undefined>;
|
|
512
|
+
colorProfile?: MaybeSignal<number | string | undefined>;
|
|
513
|
+
colorRendering?: MaybeSignal<number | string | undefined>;
|
|
514
|
+
contentScriptType?: MaybeSignal<number | string | undefined>;
|
|
515
|
+
contentStyleType?: MaybeSignal<number | string | undefined>;
|
|
516
|
+
cursor?: MaybeSignal<number | string | undefined>;
|
|
517
|
+
cx?: MaybeSignal<number | string | undefined>;
|
|
518
|
+
cy?: MaybeSignal<number | string | undefined>;
|
|
519
|
+
d?: MaybeSignal<string | undefined>;
|
|
520
|
+
decelerate?: MaybeSignal<number | string | undefined>;
|
|
521
|
+
descent?: MaybeSignal<number | string | undefined>;
|
|
522
|
+
diffuseConstant?: MaybeSignal<number | string | undefined>;
|
|
523
|
+
direction?: MaybeSignal<number | string | undefined>;
|
|
524
|
+
display?: MaybeSignal<number | string | undefined>;
|
|
525
|
+
divisor?: MaybeSignal<number | string | undefined>;
|
|
526
|
+
dominantBaseline?: MaybeSignal<number | string | undefined>;
|
|
527
|
+
dur?: MaybeSignal<number | string | undefined>;
|
|
528
|
+
dx?: MaybeSignal<number | string | undefined>;
|
|
529
|
+
dy?: MaybeSignal<number | string | undefined>;
|
|
530
|
+
edgeMode?: MaybeSignal<number | string | undefined>;
|
|
531
|
+
elevation?: MaybeSignal<number | string | undefined>;
|
|
532
|
+
enableBackground?: MaybeSignal<number | string | undefined>;
|
|
533
|
+
end?: MaybeSignal<number | string | undefined>;
|
|
534
|
+
exponent?: MaybeSignal<number | string | undefined>;
|
|
535
|
+
externalResourcesRequired?: MaybeSignal<number | string | undefined>;
|
|
536
|
+
fill?: MaybeSignal<string | undefined>;
|
|
537
|
+
fillOpacity?: MaybeSignal<number | string | undefined>;
|
|
538
|
+
fillRule?: MaybeSignal<"nonzero" | "evenodd" | "inherit" | undefined>;
|
|
539
|
+
filter?: MaybeSignal<string | undefined>;
|
|
540
|
+
filterRes?: MaybeSignal<number | string | undefined>;
|
|
541
|
+
filterUnits?: MaybeSignal<number | string | undefined>;
|
|
542
|
+
floodColor?: MaybeSignal<number | string | undefined>;
|
|
543
|
+
floodOpacity?: MaybeSignal<number | string | undefined>;
|
|
544
|
+
focusable?: MaybeSignal<number | string | undefined>;
|
|
545
|
+
fontFamily?: MaybeSignal<string | undefined>;
|
|
546
|
+
fontSize?: MaybeSignal<number | string | undefined>;
|
|
547
|
+
fontSizeAdjust?: MaybeSignal<number | string | undefined>;
|
|
548
|
+
fontStretch?: MaybeSignal<number | string | undefined>;
|
|
549
|
+
fontStyle?: MaybeSignal<number | string | undefined>;
|
|
550
|
+
fontVariant?: MaybeSignal<number | string | undefined>;
|
|
551
|
+
fontWeight?: MaybeSignal<number | string | undefined>;
|
|
552
|
+
format?: MaybeSignal<number | string | undefined>;
|
|
553
|
+
from?: MaybeSignal<number | string | undefined>;
|
|
554
|
+
fx?: MaybeSignal<number | string | undefined>;
|
|
555
|
+
fy?: MaybeSignal<number | string | undefined>;
|
|
556
|
+
g1?: MaybeSignal<number | string | undefined>;
|
|
557
|
+
g2?: MaybeSignal<number | string | undefined>;
|
|
558
|
+
glyphName?: MaybeSignal<number | string | undefined>;
|
|
559
|
+
glyphOrientationHorizontal?: MaybeSignal<number | string | undefined>;
|
|
560
|
+
glyphOrientationVertical?: MaybeSignal<number | string | undefined>;
|
|
561
|
+
glyphRef?: MaybeSignal<number | string | undefined>;
|
|
562
|
+
gradientTransform?: MaybeSignal<string | undefined>;
|
|
563
|
+
gradientUnits?: MaybeSignal<string | undefined>;
|
|
564
|
+
hanging?: MaybeSignal<number | string | undefined>;
|
|
565
|
+
horizAdvX?: MaybeSignal<number | string | undefined>;
|
|
566
|
+
horizOriginX?: MaybeSignal<number | string | undefined>;
|
|
567
|
+
ideographic?: MaybeSignal<number | string | undefined>;
|
|
568
|
+
imageRendering?: MaybeSignal<number | string | undefined>;
|
|
569
|
+
in2?: MaybeSignal<number | string | undefined>;
|
|
570
|
+
in?: MaybeSignal<string | undefined>;
|
|
571
|
+
intercept?: MaybeSignal<number | string | undefined>;
|
|
572
|
+
k1?: MaybeSignal<number | string | undefined>;
|
|
573
|
+
k2?: MaybeSignal<number | string | undefined>;
|
|
574
|
+
k3?: MaybeSignal<number | string | undefined>;
|
|
575
|
+
k4?: MaybeSignal<number | string | undefined>;
|
|
576
|
+
k?: MaybeSignal<number | string | undefined>;
|
|
577
|
+
kernelMatrix?: MaybeSignal<number | string | undefined>;
|
|
578
|
+
kernelUnitLength?: MaybeSignal<number | string | undefined>;
|
|
579
|
+
kerning?: MaybeSignal<number | string | undefined>;
|
|
580
|
+
keyPoints?: MaybeSignal<number | string | undefined>;
|
|
581
|
+
keySplines?: MaybeSignal<number | string | undefined>;
|
|
582
|
+
keyTimes?: MaybeSignal<number | string | undefined>;
|
|
583
|
+
lengthAdjust?: MaybeSignal<number | string | undefined>;
|
|
584
|
+
letterSpacing?: MaybeSignal<number | string | undefined>;
|
|
585
|
+
lightingColor?: MaybeSignal<number | string | undefined>;
|
|
586
|
+
limitingConeAngle?: MaybeSignal<number | string | undefined>;
|
|
587
|
+
local?: MaybeSignal<number | string | undefined>;
|
|
588
|
+
markerEnd?: MaybeSignal<string | undefined>;
|
|
589
|
+
markerHeight?: MaybeSignal<number | string | undefined>;
|
|
590
|
+
markerMid?: MaybeSignal<string | undefined>;
|
|
591
|
+
markerStart?: MaybeSignal<string | undefined>;
|
|
592
|
+
markerUnits?: MaybeSignal<number | string | undefined>;
|
|
593
|
+
markerWidth?: MaybeSignal<number | string | undefined>;
|
|
594
|
+
mask?: MaybeSignal<string | undefined>;
|
|
595
|
+
maskContentUnits?: MaybeSignal<number | string | undefined>;
|
|
596
|
+
maskUnits?: MaybeSignal<number | string | undefined>;
|
|
597
|
+
mathematical?: MaybeSignal<number | string | undefined>;
|
|
598
|
+
mode?: MaybeSignal<number | string | undefined>;
|
|
599
|
+
numOctaves?: MaybeSignal<number | string | undefined>;
|
|
600
|
+
offset?: MaybeSignal<number | string | undefined>;
|
|
601
|
+
opacity?: MaybeSignal<number | string | undefined>;
|
|
602
|
+
operator?: MaybeSignal<number | string | undefined>;
|
|
603
|
+
order?: MaybeSignal<number | string | undefined>;
|
|
604
|
+
orient?: MaybeSignal<number | string | undefined>;
|
|
605
|
+
orientation?: MaybeSignal<number | string | undefined>;
|
|
606
|
+
origin?: MaybeSignal<number | string | undefined>;
|
|
607
|
+
overflow?: MaybeSignal<number | string | undefined>;
|
|
608
|
+
overlinePosition?: MaybeSignal<number | string | undefined>;
|
|
609
|
+
overlineThickness?: MaybeSignal<number | string | undefined>;
|
|
610
|
+
paintOrder?: MaybeSignal<number | string | undefined>;
|
|
611
|
+
panose1?: MaybeSignal<number | string | undefined>;
|
|
612
|
+
pathLength?: MaybeSignal<number | string | undefined>;
|
|
613
|
+
patternContentUnits?: MaybeSignal<string | undefined>;
|
|
614
|
+
patternTransform?: MaybeSignal<number | string | undefined>;
|
|
615
|
+
patternUnits?: MaybeSignal<string | undefined>;
|
|
616
|
+
pointerEvents?: MaybeSignal<number | string | undefined>;
|
|
617
|
+
points?: MaybeSignal<string | undefined>;
|
|
618
|
+
pointsAtX?: MaybeSignal<number | string | undefined>;
|
|
619
|
+
pointsAtY?: MaybeSignal<number | string | undefined>;
|
|
620
|
+
pointsAtZ?: MaybeSignal<number | string | undefined>;
|
|
621
|
+
preserveAlpha?: MaybeSignal<number | string | undefined>;
|
|
622
|
+
preserveAspectRatio?: MaybeSignal<string | undefined>;
|
|
623
|
+
primitiveUnits?: MaybeSignal<number | string | undefined>;
|
|
624
|
+
r?: MaybeSignal<number | string | undefined>;
|
|
625
|
+
radius?: MaybeSignal<number | string | undefined>;
|
|
626
|
+
refX?: MaybeSignal<number | string | undefined>;
|
|
627
|
+
refY?: MaybeSignal<number | string | undefined>;
|
|
628
|
+
renderingIntent?: MaybeSignal<number | string | undefined>;
|
|
629
|
+
repeatCount?: MaybeSignal<number | string | undefined>;
|
|
630
|
+
repeatDur?: MaybeSignal<number | string | undefined>;
|
|
631
|
+
requiredExtensions?: MaybeSignal<number | string | undefined>;
|
|
632
|
+
requiredFeatures?: MaybeSignal<number | string | undefined>;
|
|
633
|
+
restart?: MaybeSignal<number | string | undefined>;
|
|
634
|
+
result?: MaybeSignal<string | undefined>;
|
|
635
|
+
rotate?: MaybeSignal<number | string | undefined>;
|
|
636
|
+
rx?: MaybeSignal<number | string | undefined>;
|
|
637
|
+
ry?: MaybeSignal<number | string | undefined>;
|
|
638
|
+
scale?: MaybeSignal<number | string | undefined>;
|
|
639
|
+
seed?: MaybeSignal<number | string | undefined>;
|
|
640
|
+
shapeRendering?: MaybeSignal<number | string | undefined>;
|
|
641
|
+
slope?: MaybeSignal<number | string | undefined>;
|
|
642
|
+
spacing?: MaybeSignal<number | string | undefined>;
|
|
643
|
+
specularConstant?: MaybeSignal<number | string | undefined>;
|
|
644
|
+
specularExponent?: MaybeSignal<number | string | undefined>;
|
|
645
|
+
speed?: MaybeSignal<number | string | undefined>;
|
|
646
|
+
spreadMethod?: MaybeSignal<string | undefined>;
|
|
647
|
+
startOffset?: MaybeSignal<number | string | undefined>;
|
|
648
|
+
stdDeviation?: MaybeSignal<number | string | undefined>;
|
|
649
|
+
stemh?: MaybeSignal<number | string | undefined>;
|
|
650
|
+
stemv?: MaybeSignal<number | string | undefined>;
|
|
651
|
+
stitchTiles?: MaybeSignal<number | string | undefined>;
|
|
652
|
+
stopColor?: MaybeSignal<string | undefined>;
|
|
653
|
+
stopOpacity?: MaybeSignal<number | string | undefined>;
|
|
654
|
+
strikethroughPosition?: MaybeSignal<number | string | undefined>;
|
|
655
|
+
strikethroughThickness?: MaybeSignal<number | string | undefined>;
|
|
656
|
+
string?: MaybeSignal<number | string | undefined>;
|
|
657
|
+
stroke?: MaybeSignal<string | undefined>;
|
|
658
|
+
strokeDasharray?: MaybeSignal<number | string | undefined>;
|
|
659
|
+
strokeDashoffset?: MaybeSignal<number | string | undefined>;
|
|
660
|
+
strokeLinecap?: MaybeSignal<"butt" | "round" | "square" | "inherit" | undefined>;
|
|
661
|
+
strokeLinejoin?: MaybeSignal<"miter" | "round" | "bevel" | "inherit" | undefined>;
|
|
662
|
+
strokeMiterlimit?: MaybeSignal<number | string | undefined>;
|
|
663
|
+
strokeOpacity?: MaybeSignal<number | string | undefined>;
|
|
664
|
+
strokeWidth?: MaybeSignal<number | string | undefined>;
|
|
665
|
+
surfaceScale?: MaybeSignal<number | string | undefined>;
|
|
666
|
+
systemLanguage?: MaybeSignal<number | string | undefined>;
|
|
667
|
+
tableValues?: MaybeSignal<number | string | undefined>;
|
|
668
|
+
targetX?: MaybeSignal<number | string | undefined>;
|
|
669
|
+
targetY?: MaybeSignal<number | string | undefined>;
|
|
670
|
+
textAnchor?: MaybeSignal<string | undefined>;
|
|
671
|
+
textDecoration?: MaybeSignal<number | string | undefined>;
|
|
672
|
+
textLength?: MaybeSignal<number | string | undefined>;
|
|
673
|
+
textRendering?: MaybeSignal<number | string | undefined>;
|
|
674
|
+
to?: MaybeSignal<number | string | undefined>;
|
|
675
|
+
transform?: MaybeSignal<string | undefined>;
|
|
676
|
+
u1?: MaybeSignal<number | string | undefined>;
|
|
677
|
+
u2?: MaybeSignal<number | string | undefined>;
|
|
678
|
+
underlinePosition?: MaybeSignal<number | string | undefined>;
|
|
679
|
+
underlineThickness?: MaybeSignal<number | string | undefined>;
|
|
680
|
+
unicode?: MaybeSignal<number | string | undefined>;
|
|
681
|
+
unicodeBidi?: MaybeSignal<number | string | undefined>;
|
|
682
|
+
unicodeRange?: MaybeSignal<number | string | undefined>;
|
|
683
|
+
unitsPerEm?: MaybeSignal<number | string | undefined>;
|
|
684
|
+
vAlphabetic?: MaybeSignal<number | string | undefined>;
|
|
685
|
+
values?: MaybeSignal<string | undefined>;
|
|
686
|
+
vectorEffect?: MaybeSignal<number | string | undefined>;
|
|
687
|
+
version?: MaybeSignal<string | undefined>;
|
|
688
|
+
vertAdvY?: MaybeSignal<number | string | undefined>;
|
|
689
|
+
vertOriginX?: MaybeSignal<number | string | undefined>;
|
|
690
|
+
vertOriginY?: MaybeSignal<number | string | undefined>;
|
|
691
|
+
vHanging?: MaybeSignal<number | string | undefined>;
|
|
692
|
+
vIdeographic?: MaybeSignal<number | string | undefined>;
|
|
693
|
+
viewBox?: MaybeSignal<string | undefined>;
|
|
694
|
+
viewTarget?: MaybeSignal<number | string | undefined>;
|
|
695
|
+
visibility?: MaybeSignal<number | string | undefined>;
|
|
696
|
+
vMathematical?: MaybeSignal<number | string | undefined>;
|
|
697
|
+
widths?: MaybeSignal<number | string | undefined>;
|
|
698
|
+
wordSpacing?: MaybeSignal<number | string | undefined>;
|
|
699
|
+
writingMode?: MaybeSignal<number | string | undefined>;
|
|
700
|
+
x1?: MaybeSignal<number | string | undefined>;
|
|
701
|
+
x2?: MaybeSignal<number | string | undefined>;
|
|
702
|
+
x?: MaybeSignal<number | string | undefined>;
|
|
703
|
+
xChannelSelector?: MaybeSignal<string | undefined>;
|
|
704
|
+
xHeight?: MaybeSignal<number | string | undefined>;
|
|
705
|
+
xlinkActuate?: MaybeSignal<string | undefined>;
|
|
706
|
+
xlinkArcrole?: MaybeSignal<string | undefined>;
|
|
707
|
+
xlinkHref?: MaybeSignal<string | undefined>;
|
|
708
|
+
xlinkRole?: MaybeSignal<string | undefined>;
|
|
709
|
+
xlinkShow?: MaybeSignal<string | undefined>;
|
|
710
|
+
xlinkTitle?: MaybeSignal<string | undefined>;
|
|
711
|
+
xlinkType?: MaybeSignal<string | undefined>;
|
|
712
|
+
xmlBase?: MaybeSignal<string | undefined>;
|
|
713
|
+
xmlLang?: MaybeSignal<string | undefined>;
|
|
714
|
+
xmlns?: MaybeSignal<string | undefined>;
|
|
715
|
+
xmlnsXlink?: MaybeSignal<string | undefined>;
|
|
716
|
+
xmlSpace?: MaybeSignal<string | undefined>;
|
|
717
|
+
y1?: MaybeSignal<number | string | undefined>;
|
|
718
|
+
y2?: MaybeSignal<number | string | undefined>;
|
|
719
|
+
y?: MaybeSignal<number | string | undefined>;
|
|
720
|
+
yChannelSelector?: MaybeSignal<string | undefined>;
|
|
721
|
+
z?: MaybeSignal<number | string | undefined>;
|
|
722
|
+
zoomAndPan?: MaybeSignal<string | undefined>;
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
type RemoveOn<S extends string> = S extends `on${infer R}` ? Uncapitalize<R> : never;
|
|
726
|
+
type CamelCaseToKebabCase<S extends string> = S extends `${infer F}${infer R}` ? F extends Lowercase<F> ? `${F}${CamelCaseToKebabCase<R>}` : `-${Lowercase<F>}${CamelCaseToKebabCase<R>}` : Lowercase<S>;
|
|
727
|
+
type JsxPropNameToEventName<S extends string> = CamelCaseToKebabCase<RemoveOn<S>>;
|
|
728
|
+
|
|
729
|
+
declare const contextSym: unique symbol;
|
|
730
|
+
/**
|
|
731
|
+
* A value that can be passed through the component tree without having to be
|
|
732
|
+
* explicitly passed as a prop.
|
|
733
|
+
*/
|
|
734
|
+
interface Context<in out T> {
|
|
735
|
+
readonly [contextSym]: string;
|
|
736
|
+
/** @ignore */
|
|
737
|
+
readonly _init: T;
|
|
738
|
+
/** @ignore */
|
|
739
|
+
readonly _opts?: SetSignalOptions;
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* Creates a new context with the given value.
|
|
743
|
+
*/
|
|
744
|
+
declare const createContext: (<T>(value: T, opts?: SetSignalOptions) => Context<T>) & (<T>(value?: T, opts?: SetSignalOptions) => Context<T | undefined>);
|
|
745
|
+
declare const useContext: <T>(context: Context<T>) => Signal<T>;
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* Represents a render result of a component.
|
|
749
|
+
*/
|
|
750
|
+
interface Template {
|
|
751
|
+
/**
|
|
752
|
+
* Build the DOM elements represented by this template.
|
|
753
|
+
*/
|
|
754
|
+
build(): Node[];
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
interface Tagged<in out T> {
|
|
758
|
+
_tag: T;
|
|
759
|
+
}
|
|
760
|
+
type OmitNever<T> = Omit<T, {
|
|
761
|
+
[K in keyof T]: T[K] extends never ? K : never;
|
|
762
|
+
}[keyof T]>;
|
|
763
|
+
type PartialRequire<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
764
|
+
/** @ignore */
|
|
765
|
+
interface PropMeta<T> extends PropOptions<T>, Tagged<"p"> {
|
|
766
|
+
_type?: [T];
|
|
767
|
+
_defaultOrContext: T;
|
|
768
|
+
}
|
|
769
|
+
interface AttributeOptions<T> {
|
|
770
|
+
/**
|
|
771
|
+
* The name of the attribute to observe.
|
|
772
|
+
*
|
|
773
|
+
* Defaults to the kebab-case version of the prop.
|
|
774
|
+
*/
|
|
775
|
+
name?: string;
|
|
776
|
+
/**
|
|
777
|
+
* A function to transform the attribute value to the prop value.
|
|
778
|
+
*/
|
|
779
|
+
transform: (value: string) => T;
|
|
780
|
+
/**
|
|
781
|
+
* Set to `true` to not observe the attribute for changes.
|
|
782
|
+
*
|
|
783
|
+
* @default false
|
|
784
|
+
*/
|
|
785
|
+
static?: boolean;
|
|
786
|
+
}
|
|
787
|
+
type PartialPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
788
|
+
interface PropOptions<T> {
|
|
789
|
+
attribute?: ((value: string) => T) | (string extends T ? PartialPartial<AttributeOptions<T>, "transform"> : AttributeOptions<T>);
|
|
790
|
+
}
|
|
791
|
+
type Props<M> = OmitNever<{
|
|
792
|
+
readonly [K in keyof M]: M[K] extends PropMeta<infer T> ? Signal<T> : never;
|
|
793
|
+
}>;
|
|
794
|
+
type EventConstructor<T = any, E = Event> = new (name: string, arg: T) => E;
|
|
795
|
+
/** @ignore */
|
|
796
|
+
interface EventMeta<out E extends EventConstructor> extends Tagged<"e"> {
|
|
797
|
+
_event: E;
|
|
798
|
+
}
|
|
799
|
+
type Events<M> = OmitNever<Omit<{
|
|
800
|
+
readonly [K in keyof M]: K extends `on${string}` ? M[K] extends EventMeta<infer E> ? E : never : never;
|
|
801
|
+
}, `on${Lowercase<keyof HTMLElementEventMap>}`>>;
|
|
802
|
+
type GeneralJsxProps<T> = Partial<OmitNever<{
|
|
803
|
+
[K in keyof T]: K extends typeof jsxPropsSym | keyof DomProps<any> | `on${string}` | `${Uppercase<infer _>}${string}` | "accessKeyLabel" | "offsetHeight" | "offsetLeft" | "offsetParent" | "offsetTop" | "offsetWidth" | "attributes" | "classList" | "clientHeight" | "clientLeft" | "clientTop" | "clientWidth" | "localName" | "namespaceURI" | "ownerDocument" | "part" | "prefix" | "scrollHeight" | "scrollWidth" | "shadowRoot" | "tagName" | "baseURI" | "childNodes" | "firstChild" | "isConnected" | "lastChild" | "nextSibling" | "nodeName" | "nodeType" | "parentElement" | "parentNode" | "previousSibling" | "nextElementSibling" | "previousElementSibling" | "childElementCount" | "firstElementChild" | "lastElementChild" | "assignedSlot" | "attributeStyleMap" | "isContentEditable" | "dataset" ? never : T[K] extends Function ? never : MaybeSignal<T[K]>;
|
|
804
|
+
}>> & DomProps<any> & DomEventProps<never> & Record<string, any>;
|
|
805
|
+
type JsxProps<T extends HTMLElement> = typeof jsxPropsSym extends keyof T ? NonNullable<T[typeof jsxPropsSym]> : any;
|
|
806
|
+
type ComponentJsxProps<M> = Partial<OmitNever<{
|
|
807
|
+
[K in keyof Props<M>]: Props<M>[K] extends Signal<infer T> ? MaybeSignal<T> : never;
|
|
808
|
+
}> & {
|
|
809
|
+
[K in keyof Events<M>]: (evt: InstanceType<Events<M>[K]>) => void;
|
|
810
|
+
}> & GeneralJsxProps<HTMLElement>;
|
|
811
|
+
type EventEmitters<M> = OmitNever<Omit<{
|
|
812
|
+
[K in keyof Events<M>]: Events<M>[K] extends EventConstructor<infer E> ? undefined extends E ? (arg?: E) => boolean : (arg: E) => boolean : never;
|
|
813
|
+
}, `on${Lowercase<keyof HTMLElementEventMap>}`>>;
|
|
814
|
+
/**
|
|
815
|
+
* Defines a property in your component metadata that can be set from outside
|
|
816
|
+
* of the component.
|
|
817
|
+
*
|
|
818
|
+
* Make sure to avoid conflicts with native `HTMLElement` properties.
|
|
819
|
+
*
|
|
820
|
+
* You can get properties by accessing the {@link Signal} in `this.props`.
|
|
821
|
+
* It's also possible to set the properties directly on the component instance.
|
|
822
|
+
*
|
|
823
|
+
* It's also possible to define an attribute for the property by setting the
|
|
824
|
+
* `attribute` option. By default, the attribute name is the kebab-case version
|
|
825
|
+
* of the property name. The attribute will be observed and the signal updated
|
|
826
|
+
* on changes. You can also provide a custom name and a transform function to
|
|
827
|
+
* convert the attribute value to the property value.
|
|
828
|
+
*
|
|
829
|
+
* @example
|
|
830
|
+
* ```tsx
|
|
831
|
+
* class App extends Component("x-app", {
|
|
832
|
+
* greetingMessage: prop<string>("Hello, world!", {
|
|
833
|
+
* attribute: {
|
|
834
|
+
* name: "greeting",
|
|
835
|
+
* }
|
|
836
|
+
* }),
|
|
837
|
+
* }) {
|
|
838
|
+
* render() {
|
|
839
|
+
* return <h1>{this.props.greetingMessage}</h1>;
|
|
840
|
+
* }
|
|
841
|
+
* }
|
|
842
|
+
*
|
|
843
|
+
* defineComponents(App);
|
|
844
|
+
*
|
|
845
|
+
* const app = new App();
|
|
846
|
+
* app.greetingMessage = "Hello, universe!";
|
|
847
|
+
* ```
|
|
848
|
+
*/
|
|
849
|
+
declare const prop: (<T>(context: Context<T>, opts?: PropOptions<T>) => PropMeta<T | undefined>) & (<T>(defaultValue: T, opts?: PropOptions<T>) => PropMeta<T>) & (<T>(defaultValue?: T, opts?: PropOptions<T | undefined>) => PropMeta<T | undefined>);
|
|
850
|
+
type _CustomEventContructor<T> = undefined extends T ? typeof CustomEvent<T> : EventConstructor<PartialRequire<CustomEventInit<T>, "detail">, CustomEvent<T>>;
|
|
851
|
+
/**
|
|
852
|
+
* Defines an event in your component metadata that can be dispatched by
|
|
853
|
+
* the component.
|
|
854
|
+
*
|
|
855
|
+
* Make sure your event name starts with `on` and to avoid conflicts with
|
|
856
|
+
* native `HTMLElement` events. The event name will be converted to kebab-case.
|
|
857
|
+
*
|
|
858
|
+
* You can dispatch events either using `HTMLElement.dispatchEvent` or by
|
|
859
|
+
* calling the event emitter function in `this.events` inside the `render`
|
|
860
|
+
* function of a component.
|
|
861
|
+
*
|
|
862
|
+
* @example
|
|
863
|
+
* ```tsx
|
|
864
|
+
* class App extends Component("x-app", {
|
|
865
|
+
* onSomethingHappen: event<string>(),
|
|
866
|
+
* // Event name will be `something-happen`
|
|
867
|
+
* }) {
|
|
868
|
+
* render() {
|
|
869
|
+
* // …
|
|
870
|
+
* this.events.onSomethingHappen({ detail: "Something happened! "});
|
|
871
|
+
* }
|
|
872
|
+
* }
|
|
873
|
+
*
|
|
874
|
+
* const app = new App();
|
|
875
|
+
* app.addEventListener("something-happen", (evt) => {
|
|
876
|
+
* // `evt` is `CustomEvent<string>`
|
|
877
|
+
* console.log(evt.detail);
|
|
878
|
+
* });
|
|
879
|
+
* ```
|
|
880
|
+
*
|
|
881
|
+
* You can also provide a custom event constructor:
|
|
882
|
+
*
|
|
883
|
+
* @example
|
|
884
|
+
* ```tsx
|
|
885
|
+
* class App extends Component("x-app", {
|
|
886
|
+
* onSomethingClick: event(() => MouseEvent),
|
|
887
|
+
* }) {
|
|
888
|
+
* render() {
|
|
889
|
+
* return (
|
|
890
|
+
* <button onclick={evt => this.events.onSomethingClick(evt)}>
|
|
891
|
+
* Click me!
|
|
892
|
+
* </button>
|
|
893
|
+
* );
|
|
894
|
+
* }
|
|
895
|
+
* }
|
|
896
|
+
* ```
|
|
897
|
+
*/
|
|
898
|
+
declare const event: (() => EventMeta<_CustomEventContructor<undefined>>) & (<T>() => EventMeta<_CustomEventContructor<T>>) & (<E extends EventConstructor>(eventConstructor: E) => EventMeta<E>);
|
|
899
|
+
type Metadata = {
|
|
900
|
+
[K in keyof ComponentInner<any> | "props" | "events"]?: never;
|
|
901
|
+
} & {
|
|
902
|
+
[K in keyof DomProps<any>]?: never;
|
|
903
|
+
} & {
|
|
904
|
+
[K in keyof HTMLElement]?: never;
|
|
905
|
+
} & {
|
|
906
|
+
[name: string]: PropMeta<any> | EventMeta<any>;
|
|
907
|
+
};
|
|
908
|
+
declare const componentSym: unique symbol;
|
|
909
|
+
declare const jsxPropsSym: unique symbol;
|
|
910
|
+
declare abstract class ComponentInner<M extends Metadata> {
|
|
911
|
+
protected props: Props<M>;
|
|
912
|
+
protected events: EventEmitters<M>;
|
|
913
|
+
readonly [jsxPropsSym]?: ComponentJsxProps<M>;
|
|
914
|
+
readonly [componentSym]: {
|
|
915
|
+
_scope?: ReturnType<typeof useScope>;
|
|
916
|
+
_destroy?: (() => void) | void;
|
|
917
|
+
};
|
|
918
|
+
connectedCallback(): void;
|
|
919
|
+
disconnectedCallback(): void;
|
|
920
|
+
attributeChangedCallback(name: string, oldValue: string | null, value: string | null): void;
|
|
921
|
+
addEventListener<K extends keyof Events<M> & string>(type: JsxPropNameToEventName<K>, listener: (event: InstanceType<Events<M>[K]>) => void, options?: boolean | AddEventListenerOptions): void;
|
|
922
|
+
removeEventListener<K extends keyof Events<M> & string>(type: JsxPropNameToEventName<K>, listener: (event: InstanceType<Events<M>[K]>) => void, options?: boolean | EventListenerOptions): void;
|
|
923
|
+
abstract render(): Template;
|
|
924
|
+
}
|
|
925
|
+
interface ComponentConstructor<M extends Metadata = {}> {
|
|
926
|
+
/** @ignore */
|
|
927
|
+
readonly [componentSym]: {
|
|
928
|
+
readonly _tagName: string;
|
|
929
|
+
};
|
|
930
|
+
readonly observedAttributes: readonly string[];
|
|
931
|
+
new (): Component<M>;
|
|
932
|
+
}
|
|
933
|
+
interface ComponentOptions {
|
|
934
|
+
/**
|
|
935
|
+
* Shadow DOM options. Set to `false` to disable shadow DOM.
|
|
936
|
+
*
|
|
937
|
+
* @default { mode: "open" }
|
|
938
|
+
*/
|
|
939
|
+
shadow?: ShadowRootInit | false;
|
|
940
|
+
}
|
|
941
|
+
/**
|
|
942
|
+
* Creates an effect which will rerun when any accessed signal changes.
|
|
943
|
+
*
|
|
944
|
+
* If used inside of a component and the component is not yet mounted, the
|
|
945
|
+
* effect will run only after the component is mounted. Otherwise, the effect
|
|
946
|
+
* will run immediately.
|
|
947
|
+
*
|
|
948
|
+
* @param fn The function to run; it may return a cleanup function.
|
|
949
|
+
*/
|
|
950
|
+
declare const useMountEffect: (fn: () => Cleanup, deps?: Signal<unknown>[]) => void;
|
|
951
|
+
type Component<M extends Metadata = {}> = {
|
|
952
|
+
-readonly [K in keyof Props<M>]: Props<M>[K] extends Signal<infer T> ? T : never;
|
|
953
|
+
} & ComponentInner<M> & HTMLElement;
|
|
954
|
+
/**
|
|
955
|
+
* Creates a new web component class.
|
|
956
|
+
*
|
|
957
|
+
* Specify props and events using the `metadata` parameter.
|
|
958
|
+
*
|
|
959
|
+
* @example
|
|
960
|
+
* ```tsx
|
|
961
|
+
* class MyComponent extends Component("my-component", {
|
|
962
|
+
* myProp: prop<string>("Hello, world!"),
|
|
963
|
+
* onMyEvent: event(),
|
|
964
|
+
* }) {
|
|
965
|
+
* render() {
|
|
966
|
+
* return (
|
|
967
|
+
* <>
|
|
968
|
+
* <h1>{this.props.myProp}</h1>
|
|
969
|
+
* <button onclick={() => this.events.onMyEvent()}>Click me</button>
|
|
970
|
+
* </>
|
|
971
|
+
* );
|
|
972
|
+
* },
|
|
973
|
+
* }
|
|
974
|
+
*
|
|
975
|
+
* customElements.define("my-component", MyComponent);
|
|
976
|
+
* ```
|
|
977
|
+
*/
|
|
978
|
+
declare const Component: ((tagName: string) => ComponentConstructor<{}>) & (<const M extends Metadata>(tagName: string, metadata: M, opts?: ComponentOptions) => ComponentConstructor<M>);
|
|
979
|
+
/**
|
|
980
|
+
* Determines whether the given value is a component created by
|
|
981
|
+
* extending {@link ComponentConstructor}.
|
|
982
|
+
*/
|
|
983
|
+
declare const isComponent: (value: any) => value is ComponentConstructor<{}> | Component<{}>;
|
|
984
|
+
/**
|
|
985
|
+
* Represents a functional component.
|
|
986
|
+
*
|
|
987
|
+
* @example
|
|
988
|
+
* ```tsx
|
|
989
|
+
* const MyComponent: FunctionalComponent<{
|
|
990
|
+
* name: MaybeSignal<string>;
|
|
991
|
+
* }> = ({ name }) => {
|
|
992
|
+
* return <h1>Hello, {name}!</h1>;
|
|
993
|
+
* };
|
|
994
|
+
* ```
|
|
995
|
+
*/
|
|
996
|
+
interface FunctionalComponent<in P extends object = {}> {
|
|
997
|
+
(props: P): Template;
|
|
998
|
+
}
|
|
999
|
+
/**
|
|
1000
|
+
* Defines a set of components with the given prefix.
|
|
1001
|
+
*/
|
|
1002
|
+
declare const defineComponents: ((...components: ComponentConstructor[]) => void) & ((prefix: string, ...components: ComponentConstructor[]) => void);
|
|
1003
|
+
|
|
1004
|
+
type Children = Template | MaybeSignal<string | number | null | undefined> | Children[];
|
|
1005
|
+
/**
|
|
1006
|
+
* Fragment is a component that can be used to wrap multiple children without
|
|
1007
|
+
* introducing an extra DOM element.
|
|
1008
|
+
*
|
|
1009
|
+
* @example
|
|
1010
|
+
* ```tsx
|
|
1011
|
+
* render() {
|
|
1012
|
+
* return (
|
|
1013
|
+
* <>
|
|
1014
|
+
* <h1>Hello World</h1>
|
|
1015
|
+
* <p>This is a paragraph.</p>
|
|
1016
|
+
* </>
|
|
1017
|
+
* );
|
|
1018
|
+
* }
|
|
1019
|
+
* ```
|
|
1020
|
+
*/
|
|
1021
|
+
declare const Fragment: FunctionalComponent<{
|
|
1022
|
+
children?: Children;
|
|
1023
|
+
}>;
|
|
1024
|
+
|
|
1025
|
+
/**
|
|
1026
|
+
* Creates a template based on the given component type.
|
|
1027
|
+
*
|
|
1028
|
+
* @example
|
|
1029
|
+
* ```tsx
|
|
1030
|
+
* render() {
|
|
1031
|
+
* return createElement("div", { id: "app" }, [
|
|
1032
|
+
* createElement("h1", {}, "Hello, World!"),
|
|
1033
|
+
* ]);
|
|
1034
|
+
* }
|
|
1035
|
+
* ```
|
|
1036
|
+
*/
|
|
1037
|
+
declare const createElement: (<K extends keyof DomIntrinsicElements & string>(type: K, props?: DomIntrinsicElements[K], children?: Children) => Template) & (<T extends HTMLElement>(...args: [
|
|
1038
|
+
type: new () => T,
|
|
1039
|
+
...({} extends JsxProps<T> ? [props?: JsxProps<T>] : [props: JsxProps<T>]),
|
|
1040
|
+
children?: DomProps<T>["children"]
|
|
1041
|
+
]) => Template) & (<P extends object>(...args: [
|
|
1042
|
+
type: FunctionalComponent<P>,
|
|
1043
|
+
...({} extends P ? [props?: P] : [props: P]),
|
|
1044
|
+
...(P extends {
|
|
1045
|
+
children?: unknown;
|
|
1046
|
+
} ? undefined extends P["children"] ? [children?: P["children"]] : [children: P["children"]] : [])
|
|
1047
|
+
]) => Template);
|
|
1048
|
+
/**
|
|
1049
|
+
* Shorthand for {@link createElement} with convenience methods for intrinsic
|
|
1050
|
+
* elements.
|
|
1051
|
+
*
|
|
1052
|
+
* @example
|
|
1053
|
+
* ```tsx
|
|
1054
|
+
* render() {
|
|
1055
|
+
* return h.div({ id: "app" }, [
|
|
1056
|
+
* h.h1({}, "Hello, World!"),
|
|
1057
|
+
* ]);
|
|
1058
|
+
* }
|
|
1059
|
+
* ```
|
|
1060
|
+
*/
|
|
1061
|
+
declare const h: typeof createElement & {
|
|
1062
|
+
[K in keyof DomIntrinsicElements]: (props?: DomIntrinsicElements[K], children?: Children) => Template;
|
|
1063
|
+
};
|
|
1064
|
+
|
|
1065
|
+
/**
|
|
1066
|
+
* `For` is a component that can be used to render a list of items.
|
|
1067
|
+
*/
|
|
1068
|
+
declare const For: <T>(props: {
|
|
1069
|
+
each?: MaybeSignal<readonly T[]> | undefined;
|
|
1070
|
+
key?: ((item: T, index: number) => string | number) | undefined;
|
|
1071
|
+
children?: ((item: Signal<T>, index: Signal<number>, arr: SignalLike<readonly T[]>) => Template) | undefined;
|
|
1072
|
+
}) => Template;
|
|
1073
|
+
|
|
1074
|
+
/**
|
|
1075
|
+
* `If` is a component that can be used to render conditionally.
|
|
1076
|
+
*/
|
|
1077
|
+
declare const If: FunctionalComponent<{
|
|
1078
|
+
condition?: MaybeSignal<boolean>;
|
|
1079
|
+
children?: Children;
|
|
1080
|
+
}>;
|
|
1081
|
+
/**
|
|
1082
|
+
* `ElseIf` serves as an `else if` block for {@link If}. It can also be chained
|
|
1083
|
+
* multiple times.
|
|
1084
|
+
*/
|
|
1085
|
+
declare const ElseIf: FunctionalComponent<{
|
|
1086
|
+
condition?: MaybeSignal<boolean>;
|
|
1087
|
+
children?: Children;
|
|
1088
|
+
}>;
|
|
1089
|
+
/**
|
|
1090
|
+
* `Else` indicates the `else` block for {@link If} and {@link ElseIf}.
|
|
1091
|
+
*/
|
|
1092
|
+
declare const Else: FunctionalComponent<{
|
|
1093
|
+
children?: Children;
|
|
1094
|
+
}>;
|
|
1095
|
+
|
|
1096
|
+
declare const Portal: FunctionalComponent<{
|
|
1097
|
+
mount: Node;
|
|
1098
|
+
children?: Children;
|
|
1099
|
+
}>;
|
|
1100
|
+
|
|
1101
|
+
declare const Style: FunctionalComponent<{
|
|
1102
|
+
light?: boolean;
|
|
1103
|
+
children?: MaybeSignal<string>;
|
|
1104
|
+
}>;
|
|
1105
|
+
declare const css: (strings: TemplateStringsArray, ...values: MaybeSignal<string | number>[]) => MaybeSignal<string>;
|
|
1106
|
+
|
|
1107
|
+
/** @ignore */
|
|
1108
|
+
declare const jsx: (type: any, props?: (object & {
|
|
1109
|
+
key?: unknown;
|
|
1110
|
+
}) | undefined, key?: unknown) => Template;
|
|
1111
|
+
/** @ignore */
|
|
1112
|
+
declare namespace JSX {
|
|
1113
|
+
type Element = Template;
|
|
1114
|
+
type ElementClass = Omit<HTMLElement, typeof jsxPropsSym>;
|
|
1115
|
+
interface ElementAttributesProperty {
|
|
1116
|
+
[jsxPropsSym]: {};
|
|
1117
|
+
}
|
|
1118
|
+
interface ElementChildrenAttribute {
|
|
1119
|
+
children: {};
|
|
1120
|
+
}
|
|
1121
|
+
type IntrinsicElements = DomIntrinsicElements;
|
|
1122
|
+
interface IntrinsicClassAttributes<T> extends DomProps<T>, DomEventProps<T> {
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
export { type AttributeOptions, type Children, type Cleanup, Component, type ComponentConstructor, type ComponentOptions, type Context, type DangerousHtml, Else, ElseIf, type EventConstructor, For, Fragment, type FunctionalComponent, If, JSX, MaybeSignal, type Metadata, Portal, type PropOptions, type RefSignal, type RefSignalSetter, type SetSignalOptions, type Signal, type SignalLike, type SignalSetter, Style, type Styles, type SubscopeOptions, type Template, createContext, createElement, css, defineComponents, event, h, isComponent, jsx, jsx as jsxDEV, jsx as jsxs, prop, useBatch, useContext, useMountEffect as useEffect, useMemo, useRef, useSignal };
|