vasille 2.0.4 → 2.2.1

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.
Files changed (79) hide show
  1. package/README.md +7 -3
  2. package/cdn/es2015.js +947 -1006
  3. package/cdn/es5.js +1053 -1023
  4. package/flow-typed/vasille.js +2646 -838
  5. package/lib/binding/attribute.js +11 -12
  6. package/lib/binding/binding.js +9 -19
  7. package/lib/binding/class.js +34 -42
  8. package/lib/binding/style.js +5 -11
  9. package/lib/core/core.js +84 -32
  10. package/lib/core/destroyable.js +2 -2
  11. package/lib/core/ivalue.js +15 -13
  12. package/lib/functional/components.js +17 -0
  13. package/lib/functional/merge.js +41 -0
  14. package/lib/functional/models.js +26 -0
  15. package/lib/functional/options.js +1 -0
  16. package/lib/functional/reactivity.js +33 -0
  17. package/lib/functional/stack.js +127 -0
  18. package/lib/index.js +2 -7
  19. package/lib/models/array-model.js +9 -0
  20. package/lib/models/object-model.js +28 -14
  21. package/lib/node/app.js +23 -14
  22. package/lib/node/interceptor.js +3 -3
  23. package/lib/node/node.js +340 -681
  24. package/lib/node/watch.js +9 -17
  25. package/lib/spec/html.js +1 -0
  26. package/lib/spec/react.js +1 -0
  27. package/lib/spec/svg.js +1 -0
  28. package/lib/v/index.js +23 -0
  29. package/lib/value/expression.js +11 -8
  30. package/lib/value/mirror.js +6 -8
  31. package/lib/value/reference.js +3 -7
  32. package/lib/views/array-view.js +6 -10
  33. package/lib/views/base-view.js +12 -23
  34. package/lib/views/map-view.js +4 -9
  35. package/lib/views/object-view.js +5 -8
  36. package/lib/views/repeat-node.js +20 -60
  37. package/lib/views/repeater.js +7 -7
  38. package/lib/views/set-view.js +4 -11
  39. package/package.json +3 -1
  40. package/types/binding/attribute.d.ts +2 -8
  41. package/types/binding/binding.d.ts +4 -13
  42. package/types/binding/class.d.ts +7 -19
  43. package/types/binding/style.d.ts +0 -6
  44. package/types/core/core.d.ts +42 -54
  45. package/types/core/destroyable.d.ts +2 -2
  46. package/types/core/ivalue.d.ts +13 -11
  47. package/types/functional/components.d.ts +4 -0
  48. package/types/functional/merge.d.ts +1 -0
  49. package/types/functional/models.d.ts +10 -0
  50. package/types/functional/options.d.ts +23 -0
  51. package/types/functional/reactivity.d.ts +11 -0
  52. package/types/functional/stack.d.ts +24 -0
  53. package/types/index.d.ts +3 -7
  54. package/types/models/array-model.d.ts +3 -2
  55. package/types/models/map-model.d.ts +2 -2
  56. package/types/models/model.d.ts +3 -1
  57. package/types/models/object-model.d.ts +4 -2
  58. package/types/models/set-model.d.ts +2 -2
  59. package/types/node/app.d.ts +21 -19
  60. package/types/node/node.d.ts +99 -423
  61. package/types/node/watch.d.ts +9 -15
  62. package/types/spec/html.d.ts +975 -0
  63. package/types/spec/react.d.ts +4 -0
  64. package/types/spec/svg.d.ts +314 -0
  65. package/types/v/index.d.ts +32 -0
  66. package/types/value/expression.d.ts +7 -20
  67. package/types/value/mirror.d.ts +3 -3
  68. package/types/value/reference.d.ts +5 -5
  69. package/types/views/array-view.d.ts +3 -4
  70. package/types/views/base-view.d.ts +9 -17
  71. package/types/views/map-view.d.ts +2 -3
  72. package/types/views/object-view.d.ts +2 -3
  73. package/types/views/repeat-node.d.ts +8 -9
  74. package/types/views/set-view.d.ts +2 -3
  75. package/types/core/executor.d.ts +0 -87
  76. package/types/core/signal.d.ts +0 -35
  77. package/types/core/slot.d.ts +0 -45
  78. package/types/node/interceptor.d.ts +0 -50
  79. package/types/views/repeater.d.ts +0 -38
@@ -1,844 +1,2652 @@
1
- // @flow
1
+ declare module "vasille" {
2
+ declare type Record<K, T> = {[k : K] : T};
3
+ /**
4
+ * Declares a notifiable bind to a value
5
+ * @class Mirror
6
+ * @extends IValue
7
+ * @version 2
8
+ */
9
+ declare class Mirror<T> extends Reference<T> {
10
+ /**
11
+ * pointed value
12
+ * @type IValue
13
+ */
14
+ pointedValue: IValue<T>;
15
+ /**
16
+ * Collection of handlers
17
+ * @type Set
18
+ */
19
+ handler: any;
20
+ /**
21
+ * Ensure forward only synchronization
22
+ */
23
+ forwardOnly: boolean;
24
+ /**
25
+ * Constructs a notifiable bind to a value
26
+ * @param value {IValue} is initial value
27
+ * @param forwardOnly {boolean} ensure forward only synchronization
28
+ */
29
+ constructor(value: IValue<T>, forwardOnly?: boolean): void;
30
+ get $(): T;
31
+ set $(v: T): void;
32
+ enable(): void;
33
+ disable(): void;
34
+ destroy(): void;
35
+ }
36
+
37
+
38
+ declare type KindOfIValue<T> = any[];
39
+ /**
40
+ * Bind some values to one expression
41
+ * @class Expression
42
+ * @extends IValue
43
+ */
44
+ declare class Expression<T,Args> extends IValue<T> {
45
+ /**
46
+ * The array of value which will trigger recalculation
47
+ * @type {Array}
48
+ */
49
+ values: any;
50
+ /**
51
+ * Cache the values of expression variables
52
+ * @type {Array}
53
+ */
54
+ valuesCache: any;
55
+ /**
56
+ * The function which will be executed on recalculation
57
+ */
58
+ func: any;
59
+ /**
60
+ * Expression will link different handler for each value of list
61
+ */
62
+ linkedFunc: any;
63
+ /**
64
+ * The buffer to keep the last calculated value
65
+ */
66
+ sync: any;
67
+ /**
68
+ * Creates a function bounded to N values
69
+ * @param func {Function} the function to bound
70
+ * @param values
71
+ * @param link {Boolean} links immediately if true
72
+ */
73
+ constructor(func: (...args: Args) => T, link: boolean, ...values: KindOfIValue<Args>): void;
74
+ get $(): T;
75
+ set $(value: T): void;
76
+ on(handler: (value: T) => void): this;
77
+ off(handler: (value: T) => void): this;
78
+ enable(): this;
79
+ disable(): this;
80
+ destroy(): void;
81
+ }
82
+
2
83
 
84
+ /**
85
+ * Declares a notifiable value
86
+ * @class Reference
87
+ * @extends IValue
88
+ */
89
+ declare class Reference<T> extends IValue<T> {
90
+ /**
91
+ * The encapsulated value
92
+ * @type {*}
93
+ */
94
+ value: any;
95
+ /**
96
+ * Array of handlers
97
+ * @type {Set}
98
+ * @readonly
99
+ */
100
+ onchange: any;
101
+ /**
102
+ * @param value {any} the initial value
103
+ */
104
+ constructor(value: T): void;
105
+ get $(): T;
106
+ set $(value: T): void;
107
+ enable(): void;
108
+ disable(): void;
109
+ on(handler: (value: T) => void): void;
110
+ off(handler: (value: T) => void): void;
111
+ destroy(): void;
112
+ }
3
113
 
4
114
 
5
- interface IModel {
6
- enableReactivity () : void;
7
- disableReactivity () : void;
115
+ /**
116
+ * r/w pointer to a value
117
+ * @class Pointer
118
+ * @extends Mirror
119
+ */
120
+ declare class Pointer<T> extends Mirror<T> {
121
+ /**
122
+ * @param value {IValue} value to point
123
+ * @param forwardOnly {boolean} forward only data flow
124
+ */
125
+ constructor(value: IValue<T>, forwardOnly?: boolean): void;
126
+ /**
127
+ * Point a new ivalue
128
+ * @param value {IValue} value to point
129
+ */
130
+ point(value: IValue<T>): void;
8
131
  }
9
- declare module "vasille" {
10
132
 
11
- declare type AppOptions = ?{
12
- debugUi?: boolean,
13
- freezeUi ?: boolean,
14
- executor ?: Executor
15
- }
16
-
17
- declare export class Destroyable {
18
- $seal () : void;
19
- $destroy () : void;
20
- }
21
- declare export class ReactivePrivate extends Destroyable {
22
- watch : Set<IValue<any>>;
23
- bindings : Set<Destroyable>;
24
- models: Set<IModel<any, any>>;
25
- enabled : boolean;
26
- frozen : boolean;
27
- freezeExpr : Expression<void, boolean>;
28
-
29
- constructor () : void;
30
-
31
- $destroy () : void;
32
- }
33
- declare export class Reactive extends Destroyable {
34
- $ : ReactivePrivate;
35
-
36
- constructor ($ : ?ReactivePrivate) : void;
37
-
38
- $ref<T> (value : T) : IValue<T>;
39
- $mirror<T> (value : IValue<T>) : Mirror<T>;
40
- $forward<T> (value : IValue<T>) : Mirror<T>;
41
- $point<T>(value: T | IValue<T>, forwardOnly?: boolean): Pointer<T>;
42
- $register<T>(model: T): T;
43
-
44
- $watch<T1> (
45
- func : (a1 : T1) => void,
46
- v1: IValue<T1>,
47
- ) : void;
48
- $watch<T1, T2> (
49
- func : (a1 : T1, a2 : T2) => void,
50
- v1: IValue<T1>, v2: IValue<T2>,
51
- ) : void;
52
- $watch<T1, T2, T3> (
53
- func : (a1 : T1, a2 : T2, a3 : T3) => void,
54
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
55
- ) : void;
56
- $watch<T1, T2, T3, T4> (
57
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4) => void,
58
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
59
- v4: IValue<T4>,
60
- ) : void;
61
- $watch<T1, T2, T3, T4, T5> (
62
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5) => void,
63
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
64
- v4: IValue<T4>, v5: IValue<T5>,
65
- ) : void;
66
- $watch<T1, T2, T3, T4, T5, T6> (
67
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6) => void,
68
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
69
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
70
- ) : void;
71
- $watch<T1, T2, T3, T4, T5, T6, T7> (
72
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7) => void,
73
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
74
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
75
- v7: IValue<T7>,
76
- ) : void;
77
- $watch<T1, T2, T3, T4, T5, T6, T7, T8> (
78
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8) => void,
79
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
80
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
81
- v7: IValue<T7>, v8: IValue<T8>,
82
- ) : void;
83
- $watch<T1, T2, T3, T4, T5, T6, T7, T8, T9> (
84
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => void,
85
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
86
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
87
- v7: IValue<T7>, v8: IValue<T8>, v9: IValue<T9>,
88
- ) : void;
89
-
90
- $bind<T, T1> (
91
- func : (a1 : T1) => T,
92
- v1: IValue<T1>,
93
- ) : IValue<T>;
94
- $bind<T, T1, T2> (
95
- func : (a1 : T1, a2 : T2) => T,
96
- v1: IValue<T1>, v2: IValue<T2>,
97
- ) : IValue<T>;
98
- $bind<T, T1, T2, T3> (
99
- func : (a1 : T1, a2 : T2, a3 : T3) => T,
100
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
101
- ) : IValue<T>;
102
- $bind<T, T1, T2, T3, T4> (
103
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4) => T,
104
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
105
- v4: IValue<T4>,
106
- ) : IValue<T>;
107
- $bind<T, T1, T2, T3, T4, T5> (
108
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5) => T,
109
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
110
- v4: IValue<T4>, v5: IValue<T5>,
111
- ) : IValue<T>;
112
- $bind<T, T1, T2, T3, T4, T5, T6> (
113
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6) => T,
114
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
115
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
116
- ) : IValue<T>;
117
- $bind<T, T1, T2, T3, T4, T5, T6, T7> (
118
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7) => T,
119
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
120
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
121
- v7: IValue<T7>,
122
- ) : IValue<T>;
123
- $bind<T, T1, T2, T3, T4, T5, T6, T7, T8> (
124
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8) => T,
125
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
126
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
127
- v7: IValue<T7>, v8: IValue<T8>,
128
- ) : IValue<T>;
129
- $bind<T, T1, T2, T3, T4, T5, T6, T7, T8, T9> (
130
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => T,
131
- v1: IValue<T1>, v2: IValue<T2>, v3: IValue<T3>,
132
- v4: IValue<T4>, v5: IValue<T5>, v6: IValue<T6>,
133
- v7: IValue<T7>, v8: IValue<T8>, v9: IValue<T9>,
134
- ) : IValue<T>;
135
-
136
- $enable () : void;
137
- $disable () : void;
138
- $bindAlive(cond: IValue<boolean>, onOff?: () => void, onOn?: () => void): this;
139
- $destroy () : void;
140
- }
141
- declare export class Executor {
142
- addClass (el : Element, cl : string) : void;
143
- removeClass (el : Element, cl : string) : void;
144
- setAttribute (el : Element, name : string, value : string) : void;
145
- removeAttribute (el : Element, name : string) : void;
146
- setStyle (el : HTMLElement, prop : string, value : string) : void;
147
- insertBefore (target : Node, child : Node) : void;
148
- appendChild (el : Element, child : Node) : void;
149
- callCallback (cb : () => void) : void;
150
- }
151
- declare export class InstantExecutor extends Executor {
152
- }
153
- declare export class TimeoutExecutor extends InstantExecutor {
154
- }
155
- declare export class IValue<T> extends Destroyable {
156
- isEnabled : boolean;
157
-
158
- constructor (isEnabled ?: boolean) : void;
159
- get $ () : T;
160
- set $ (value : T) : this;
161
- on (handler : (value : T) => void) : this;
162
- off (handler : (value : T) => void) : this;
163
- enable () : this;
164
- disable () : this;
165
- }
166
- declare export class Signal<
167
- T = Fragment, T1 = void, T2 = void, T3 = void, T4 = void, T5 = void, T6 = void, T7 = void, T8 = void, T9 = void
168
- > {
169
- handlers : Set<
170
- (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => void
171
- >;
172
-
173
- emit (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) : void;
174
- subscribe (
175
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => void
176
- ) : void;
177
- unsubscribe (
178
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => void
179
- ) : void;
180
- }
181
- declare export class Slot<
182
- T = Fragment, t1 = void, t2 = void, t3 = void, t4 = void, t5 = void, t6 = void, t7 = void, t8 = void, t9 = void
183
- > {
184
- runner : ?(a0 : T, a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9) => void;
185
-
186
- insert (
187
- func : (a0 : T, a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9) => void
188
- ) : void;
189
- release (
190
- a0 : T, a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9
191
- ) : void;
192
- predefine (
193
- func : (a0 : T, a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9) => void,
194
- a0 : T, a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9
195
- ) : void;
196
- }
197
- declare export class Listener<ValueT, IndexT = string | number> {
198
- onAdded : Set<(index : IndexT, value : ValueT) => void>;
199
- onRemoved : Set<(index : IndexT, value : ValueT) => void>;
200
- frozen : boolean;
201
- queue : { sign: boolean, index: IndexT, value: ValueT }[];
202
-
203
- constructor () : void;
204
- excludeRepeat (index : IndexT) : boolean;
205
- emitAdded (index : IndexT, value : ValueT) : void;
206
- emitRemoved (index : IndexT, value : ValueT) : void;
207
- onAdd (handler : (index : IndexT, value : ValueT) => void) : void;
208
- onRemove (handler : (index : IndexT, value : ValueT) => void) : void;
209
- offAdd (handler : (index : IndexT, value : ValueT) => void) : void;
210
- offRemove (handler : (index : IndexT, value : ValueT) => void) : void;
211
- enableReactivity () : void;
212
- disableReactivity () : void;
213
- }
214
- declare export class ArrayModel<T> extends Array<T> implements IModel {
215
- listener : Listener<T, ?T>;
216
- constructor (data ?: Array<T>) : void;
217
- get last () : ?T;
218
- fill (value : T, start : ?number, end : ?number) : this;
219
- pop () : T;
220
- push (...items : Array<T>) : number;
221
- shift () : T;
222
- splice (
223
- start : number,
224
- deleteCount : ?number,
225
- ...items : Array<T>
226
- ) : ArrayModel<T>;
227
- unshift (...items : Array<T>) : number;
228
- append (v : T) : this;
229
- clear () : this;
230
- insert (index : number, v : T) : this;
231
- prepend (v : T) : this;
232
- removeAt (index : number) : this;
233
- removeFirst () : this;
234
- removeLast () : this;
235
- removeOne (v : T) : this;
236
- enableReactivity () : void;
237
- disableReactivity () : void;
238
- }
239
- declare export class MapModel<K, T> extends Map<K, T> implements IModel {
240
- listener : Listener<T, K>;
241
-
242
- constructor (map ?: [K, T][]) : void;
243
- clear () : void;
244
- delete (key : any) : boolean;
245
- set (key : K, value : T) : this;
246
- enableReactivity () : void;
247
- disableReactivity () : void;
248
- }
249
- declare export class ObjectModel<T> extends Object implements IModel {
250
- listener : Listener<T, string>;
251
-
252
- constructor (obj ?: { [p : string] : T }) : void;
253
- get (key : string) : T;
254
- set (key : string, v : T) : this;
255
- delete (key : string) : void;
256
- enableReactivity () : void;
257
- disableReactivity () : void;
258
- }
259
- declare export class SetModel<T> extends Set<T> implements IModel {
260
- listener : Listener<T, T>;
261
-
262
- constructor (set ?: T[]) : void;
263
- add (value : T) : this;
264
- clear () : void;
265
- delete (value : T) : boolean;
266
- enableReactivity () : void;
267
- disableReactivity () : void;
268
- }
269
- declare export class AppNode extends INode {
270
- $run : Executor;
271
-
272
- constructor (options : AppOptions) : void;
273
- $$appendNode(node: Node): void;
274
- }
275
- declare export class App extends AppNode {
276
- constructor (node : HTMLElement, options : AppOptions) : void;
277
- }
278
- declare export class Interceptor<
279
- t1 = void, t2 = void, t3 = void, t4 = void, t5 = void, t6 = void, t7 = void, t8 = void, t9 = void
280
- > extends Destroyable {
281
-
282
- signals : Set<Signal<t1, t2, t3, t4, t5, t6, t7, t8, t9>>;
283
- handlers : Set<(a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9) => void>;
284
-
285
- connect (
286
- thing : Signal<t1, t2, t3, t4, t5, t6, t7, t8, t9> |
287
- (a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9) => void
288
- ) : void;
289
- disconnect (
290
- handler : (a1 : t1, a2 : t2, a3 : t3, a4 : t4, a5 : t5, a6 : t6, a7 : t7, a8 : t8, a9 : t9) => void
291
- ) : void;
292
- }
293
- declare export class InterceptorNode<
294
- t1 = void, t2 = void, t3 = void, t4 = void, t5 = void, t6 = void, t7 = void, t8 = void, t9 = void
295
- > extends Fragment {
296
- interceptor : Interceptor<t1, t2, t3, t4, t5, t6, t7, t8, t9>;
297
- slot : Slot<Fragment, Interceptor<t1, t2, t3, t4, t5, t6, t7, t8, t9>>;
298
- }
299
- declare export class FragmentPrivate extends ReactivePrivate {
300
-
301
- app : AppNode;
302
- parent : Fragment;
303
- next : ?Fragment;
304
- prev : ?Fragment;
305
-
306
- constructor () : void;
307
- preinit (app : AppNode, parent: Fragment) : void;
308
- }
309
- declare export class Fragment extends Reactive {
310
- $children : Array<Fragment>;
311
-
312
- constructor ($ : ?FragmentPrivate) : void;
313
-
314
- $preinit (app: AppNode, parent : Fragment, data ?: any) : void;
315
- $init () : this;
316
- $created () : void;
317
- $mounted () : void;
318
- $ready () : void;
319
- $createSignals () : void;
320
- $createWatchers () : void;
321
- $compose () : void;
322
- $$pushNode (node : Fragment) : void;
323
- $$findFirstChild () : ?Node;
324
- $$appendNode (node : Node) : void ;
325
- $$insertAdjacent (node : Node) : void;
326
- $text (
327
- text : string | IValue<string>,
328
- cb : ?(text : TextNode) => void
329
- ) : this;
330
- $debug(text : IValue<string>) : this;
331
- $tag<T = Element> (
332
- tagName : string,
333
- cb ?: (node : Tag, element : T) => void
334
- ) : this;
335
- $create<T> (
336
- node : T,
337
- callback ?: ($ : T) => void,
338
- callback1 ?: ($ : T) => void
339
- ) : this;
340
- $if (
341
- cond : IValue<boolean>,
342
- cb : (node : Fragment) => void
343
- ) : this ;
344
- $if_else (
345
- ifCond : IValue<boolean>,
346
- ifCb : (node : Fragment) => void,
347
- elseCb : (node : Fragment) => void
348
- ) : this;
349
- $switch (
350
- ...cases : Array<{ cond : IValue<boolean>, cb : (node : Fragment) => void }>
351
- ) : this;
352
- $case (cond : IValue<boolean>, cb : (node : Fragment) => void)
353
- : {cond : IValue<boolean>, cb : (node : Fragment) => void};
354
- $default (cb: (node : Fragment) => void)
355
- : {cond : IValue<boolean>, cb : (node : Fragment) => void};
356
- }
357
- declare export class TextNodePrivate extends FragmentPrivate {
358
- node : Text;
359
-
360
- constructor () : void;
361
- preinitText (app : AppNode, parent: Fragment, text : IValue<string>) : void;
362
- }
363
- declare export class TextNode extends Fragment {
364
- constructor () : void;
365
-
366
- $preinit (app : AppNode, parent : Fragment, text : ?IValue<string>) : void;
367
- }
368
- declare export class INodePrivate extends FragmentPrivate {
369
-
370
- unmounted : boolean;
371
- node : Element;
372
-
373
- constructor () : void;
374
- }
375
- declare export class INode extends Fragment {
376
-
377
- constructor ($ : ?INodePrivate) : void;
378
- $init () : this;
379
- $createAttrs () : void;
380
- $createStyle () : void;
381
- $attr (name : string, value : IValue<?string>) : this;
382
- $bindAttr<T1> (
383
- name : string,
384
- calculator : (a1 : T1) => string,
385
- v1 : IValue<T1>,
386
- ) : this;
387
- $bindAttr<T1, T2> (
388
- name : string,
389
- calculator : (a1 : T1, a2 : T2) => string,
390
- v1 : IValue<T1>, v2 : IValue<T2>,
391
- ) : this;
392
- $bindAttr<T1, T2, T3> (
393
- name : string,
394
- calculator : (a1 : T1, a2 : T2, a3 : T3) => string,
395
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
396
- ) : this;
397
- $bindAttr<T1, T2, T3, T4> (
398
- name : string,
399
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4) => string,
400
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
401
- v4 : IValue<T4>,
402
- ) : this;
403
- $bindAttr<T1, T2, T3, T4, T5> (
404
- name : string,
405
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5) => string,
406
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
407
- v4 : IValue<T4>, v5 : IValue<T5>,
408
- ) : this;
409
- $bindAttr<T1, T2, T3, T4, T5, T6> (
410
- name : string,
411
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6) => string,
412
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
413
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
414
- ) : this;
415
- $bindAttr<T1, T2, T3, T4, T5, T6, T7> (
416
- name : string,
417
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7) => string,
418
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
419
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
420
- v7 : IValue<T7>,
421
- ) : this;
422
- $bindAttr<T1, T2, T3, T4, T5, T6, T7, T8> (
423
- name : string,
424
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8) => string,
425
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
426
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
427
- v7 : IValue<T7>, v8 : IValue<T8>,
428
- ) : this;
429
- $bindAttr<T1, T2, T3, T4, T5, T6, T7, T8, T9> (
430
- name : string,
431
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => string,
432
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
433
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
434
- v7 : IValue<T7>, v8 : IValue<T8>, v9 : IValue<T9>,
435
- ) : this;
436
- $setAttr (
437
- name : string,
438
- value : string
439
- ) : this;
440
- $addClass (cl : string) : this;
441
- $addClasses (...cl : Array<string>) : this;
442
- $bindClass (
443
- className : IValue<string>
444
- ) : this;
445
- $floatingClass (cond : IValue<boolean>, className : string) : this;
446
- $style (name : string, value : IValue<string>) : this;
447
- $bindStyle<T1> (
448
- name : string,
449
- calculator : (a1 : T1) => string,
450
- v1 : IValue<T1>,
451
- ) : this;
452
- $bindStyle<T1, T2> (
453
- name : string,
454
- calculator : (a1 : T1, a2 : T2) => string,
455
- v1 : IValue<T1>, v2 : IValue<T2>,
456
- ) : this;
457
- $bindStyle<T1, T2, T3> (
458
- name : string,
459
- calculator : (a1 : T1, a2 : T2, a3 : T3) => string,
460
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
461
- ) : this;
462
- $bindStyle<T1, T2, T3, T4> (
463
- name : string,
464
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4) => string,
465
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
466
- v4 : IValue<T4>,
467
- ) : this;
468
- $bindStyle<T1, T2, T3, T4, T5> (
469
- name : string,
470
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5) => string,
471
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
472
- v4 : IValue<T4>, v5 : IValue<T5>,
473
- ) : this;
474
- $bindStyle<T1, T2, T3, T4, T5, T6> (
475
- name : string,
476
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6) => string,
477
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
478
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
479
- ) : this;
480
- $bindStyle<T1, T2, T3, T4, T5, T6, T7> (
481
- name : string,
482
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7) => string,
483
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
484
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
485
- v7 : IValue<T7>,
486
- ) : this;
487
- $bindStyle<T1, T2, T3, T4, T5, T6, T7, T8> (
488
- name : string,
489
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8) => string,
490
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
491
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
492
- v7 : IValue<T7>, v8 : IValue<T8>,
493
- ) : this;
494
- $bindStyle<T1, T2, T3, T4, T5, T6, T7, T8, T9> (
495
- name : string,
496
- calculator : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => string,
497
- v1 : IValue<T1>, v2 : IValue<T2>, v3 : IValue<T3>,
498
- v4 : IValue<T4>, v5 : IValue<T5>, v6 : IValue<T6>,
499
- v7 : IValue<T7>, v8 : IValue<T8>, v9 : IValue<T9>,
500
- ) : this;
501
- $setStyle (
502
- prop : string,
503
- value : string
504
- ) : this;
505
- $listen (name : string, handler : (ev : any) => void, options : ?EventListenerOptionsOrUseCapture) : this;
506
- $oncontextmenu (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
507
- $onmousedown (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
508
- $onmouseenter (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
509
- $onmouseleave (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
510
- $onmousemove (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
511
- $onmouseout (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
512
- $onmouseover (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
513
- $onmouseup (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
514
- $onclick (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
515
- $ondblclick (handler : (ev : MouseEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
516
- $onblur (handler : (ev : FocusEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
517
- $onfocus (handler : (ev : FocusEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
518
- $onfocusin (handler : (ev : FocusEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
519
- $onfocusout (handler : (ev : FocusEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
520
- $onkeydown (handler : (ev : KeyboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
521
- $onkeyup (handler : (ev : KeyboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
522
- $onkeypress (handler : (ev : KeyboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
523
- $ontouchstart (handler : (ev : TouchEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
524
- $ontouchmove (handler : (ev : TouchEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
525
- $ontouchend (handler : (ev : TouchEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
526
- $ontouchcancel (handler : (ev : TouchEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
527
- $onwheel (handler : (ev : WheelEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
528
- $onabort (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
529
- $onerror (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
530
- $onload (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
531
- $onloadend (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
532
- $onloadstart (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
533
- $onprogress (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
534
- $ontimeout (handler : (ev : ProgressEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
535
- $ondrag (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
536
- $ondragend (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
537
- $ondragenter (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
538
- $ondragexit (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
539
- $ondragleave (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
540
- $ondragover (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
541
- $ondragstart (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
542
- $ondrop (handler : (ev : DragEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
543
- $onpointerover (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
544
- $onpointerenter (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
545
- $onpointerdown (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
546
- $onpointermove (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
547
- $onpointerup (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
548
- $onpointercancel (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
549
- $onpointerout (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
550
- $onpointerleave (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
551
- $ongotpointercapture (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
552
- $onlostpointercapture (handler : (ev : PointerEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
553
- $onanimationstart (handler : (ev : AnimationEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
554
- $onanimationend (handler : (ev : AnimationEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
555
- $onanimationiteraton (handler : (ev : AnimationEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
556
- $onclipboardchange (handler : (ev : ClipboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
557
- $oncut (handler : (ev : ClipboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
558
- $oncopy (handler : (ev : ClipboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
559
- $onpaste (handler : (ev : ClipboardEvent) => void, options : ?EventListenerOptionsOrUseCapture) : this;
560
- $$insertAdjacent (node : Node) : void;
561
- $bindShow (cond : IValue<boolean>) : this;
562
- $html (value : IValue<string>) : void;
563
- }
564
- declare export class Tag extends INode {
565
-
566
- constructor () : void;
567
-
568
- $preinit (app : AppNode, parent : Fragment, tagName : ?string) : void;
569
- $$appendNode(node: Node): void;
570
- $bindMount(cond: IValue<boolean>): this;
571
- }
572
- declare export class Extension extends INode {
573
- $preinit (app : AppNode, parent : Fragment) : void;
574
-
575
- constructor ($ : ?INodePrivate) : void;
576
- }
577
- declare export class Component extends Extension {
578
- constructor () : void;
579
-
580
- $mounted () : void;
581
- }
582
- declare export class SwitchedNodePrivate extends INodePrivate {
583
- index : number;
584
- extension : ?Extension;
585
- cases : { cond : IValue<boolean>, cb : (node : Fragment) => void }[];
586
- sync : () => void;
587
-
588
- constructor () : void;
589
- }
590
- declare class SwitchedNode extends Extension {
591
- constructor ($ : ?SwitchedNodePrivate) : void;
592
- setCases (cases : Array<{ cond : IValue<boolean>, cb : (node : Fragment) => void }>) : void;
593
- createChild (cb : (node : Fragment) => void) : void;
594
- $ready () : void;
595
- }
596
- declare export class DebugPrivate extends FragmentPrivate {
597
- node : Comment;
598
-
599
- constructor () : void;
600
-
601
- preinitComment (app : AppNode, parent: Fragment, text : IValue<string>) : void;
602
- }
603
- declare export class DebugNode extends Fragment {
604
-
605
- constructor () : void;
606
-
607
- $preinit (app : AppNode, parent : Fragment, text : ?IValue<string>) : void;
608
- }
609
- declare export class Watch<T> extends Fragment {
610
- slot : Slot<Fragment, T>;
611
- model : IValue<T>;
612
-
613
- constructor () : void;
614
-
615
- $createWatchers () : void;
616
- }
617
- declare export class Expression<
618
- T, T1 = void, T2 = void, T3 = void, T4 = void, T5 = void, T6 = void, T7 = void, T8 = void, T9 = void
619
- > extends IValue<T> {
620
- values : [
621
- IValue<T1>,
622
- IValue<T2>,
623
- IValue<T3>,
624
- IValue<T4>,
625
- IValue<T5>,
626
- IValue<T6>,
627
- IValue<T7>,
628
- IValue<T8>,
629
- IValue<T9>
630
- ];
631
- valuesCache : [T1, T2, T3, T4, T5, T6, T7, T8, T9];
632
- func : (i ? : number) => void;
633
- linkedFunc : Array<() => void>;
634
- sync : Reference<T>;
635
-
636
- constructor (
637
- func : (a1 : T1) => T,
638
- link : boolean,
639
- v1: IValue<T1>,
640
- ) : void;
641
- constructor (
642
- func : (a1 : T1, a2 : T2) => T,
643
- link : boolean,
644
- v1: IValue<T1>,
645
- v2: IValue<T2>,
646
- ) : void;
647
- constructor (
648
- func : (a1 : T1, a2 : T2, a3 : T3) => T,
649
- link : boolean,
650
- v1: IValue<T1>,
651
- v2: IValue<T2>,
652
- v3: IValue<T3>,
653
- ) : void;
654
- constructor (
655
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4) => T,
656
- link : boolean,
657
- v1: IValue<T1>,
658
- v2: IValue<T2>,
659
- v3: IValue<T3>,
660
- v4: IValue<T4>,
661
- ) : void;
662
- constructor (
663
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5) => T,
664
- link : boolean,
665
- v1: IValue<T1>,
666
- v2: IValue<T2>,
667
- v3: IValue<T3>,
668
- v4: IValue<T4>,
669
- v5: IValue<T5>,
670
- ) : void;
671
- constructor (
672
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6) => T,
673
- link : boolean,
674
- v1: IValue<T1>,
675
- v2: IValue<T2>,
676
- v3: IValue<T3>,
677
- v4: IValue<T4>,
678
- v5: IValue<T5>,
679
- v6: IValue<T6>,
680
- ) : void;
681
- constructor (
682
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7) => T,
683
- link : boolean,
684
- v1: IValue<T1>,
685
- v2: IValue<T2>,
686
- v3: IValue<T3>,
687
- v4: IValue<T4>,
688
- v5: IValue<T5>,
689
- v6: IValue<T6>,
690
- v7: IValue<T7>,
691
- ) : void;
692
- constructor (
693
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8) => T,
694
- link : boolean,
695
- v1: IValue<T1>,
696
- v2: IValue<T2>,
697
- v3: IValue<T3>,
698
- v4: IValue<T4>,
699
- v5: IValue<T5>,
700
- v6: IValue<T6>,
701
- v7: IValue<T7>,
702
- v8: IValue<T8>,
703
- ) : void;
704
- constructor (
705
- func : (a1 : T1, a2 : T2, a3 : T3, a4 : T4, a5 : T5, a6 : T6, a7 : T7, a8 : T8, a9 : T9) => T,
706
- link : boolean,
707
- v1: IValue<T1>,
708
- v2: IValue<T2>,
709
- v3: IValue<T3>,
710
- v4: IValue<T4>,
711
- v5: IValue<T5>,
712
- v6: IValue<T6>,
713
- v7: IValue<T7>,
714
- v8: IValue<T8>,
715
- v9: IValue<T9>,
716
- ) : void;
717
-
718
- get $ () : T;
719
- set $ (value : T) : this;
720
- on (handler : (value : T) => void) : this;
721
- off (handler : (value : T) => void) : this;
722
- enable () : this;
723
- disable () : this;
724
- }
725
- declare export class Reference<T> extends IValue<T> {
726
- value : T;
727
- onchange : Set<(value : T) => void>;
728
-
729
- constructor (value : T) : void;
730
-
731
- get $ () : T;
732
- set $ (value : T) : this;
733
-
734
- enable () : this;
735
- disable () : this;
736
- on (handler : (value : T) => void) : this;
737
- off (handler : (value : T) => void) : this;
738
- }
739
- declare export class Mirror<T> extends Reference<T> {
740
- pointedValue : IValue<T>;
741
- handler : (value : T) => void;
742
- forwardOnly : boolean;
743
-
744
- constructor (value : IValue<T>, forwardOnly : boolean) : void;
745
- }
746
- declare export class Pointer<T> extends Mirror<T> {
747
-
748
- constructor (value : IValue<T>, forwardOnly : boolean) : void;
749
-
750
- point (value : IValue<T>) : void;
751
- }
752
- declare export class BaseViewPrivate<K, T> extends RepeatNodePrivate<K> {
753
- addHandler : (index : K, value : T) => void;
754
- removeHandler : (index : K, value : T) => void;
755
-
756
- constructor () : void;
757
- }
758
- declare export class BaseView<K, T, Model> extends RepeatNode<K, T> {
759
- model : Model;
760
-
761
- constructor ($1 : ?BaseViewPrivate<K, T>) : void;
762
- }
763
- declare export class ArrayView<T> extends BaseView<?T, T, ArrayModel<T>> {
764
- constructor (model : ArrayModel<T>) : void;
765
- createChild (id : ?T, item : T, before : ?Fragment) : any;
766
- }
767
- declare export class MapView<K, T> extends BaseView<K, T, MapModel<K, T>> {
768
- constructor (model : MapModel<K, T>) : void;
769
- }
770
- declare export class ObjectView<T> extends BaseView<string, T, ObjectModel<T>> {
771
- constructor (model : ObjectModel<T>) : void;
772
- }
773
- declare export class RepeatNodePrivate<IdT> extends INodePrivate {
774
- nodes : Map<IdT, Fragment>;
775
-
776
- constructor () : void;
777
- }
778
- declare export class RepeatNode<IdT, T> extends Fragment {
779
- slot : Slot<Fragment, T, IdT>;
780
- freezeUi : boolean;
781
-
782
- constructor ($ : ?RepeatNodePrivate<IdT>) : void;
783
-
784
- createChild (id : IdT, item : T, before : ?Fragment) : any;
785
- destroyChild (id : IdT, item : T) : void;
786
- }
787
- declare export class RepeaterPrivate<IdT> extends RepeatNodePrivate<IdT> {
788
- updateHandler : (value: number) => void;
789
- currentCount : number;
790
-
791
- constructor () : void;
792
- }
793
- declare export class Repeater extends RepeatNode<number, number> {
794
- count : IValue<number>;
795
-
796
- constructor ($ : ?RepeaterPrivate<number>) : void;
797
-
798
- changeCount (number : number) : void;
799
- }
800
- declare export class SetView<T> extends BaseView<T, T, SetModel<T>> {
801
- constructor (model : SetModel<T>) : void;
802
- }
803
- declare export class AttributeBinding extends Binding<?string> {
804
- constructor (
805
- node : INode,
806
- name : string,
807
- value : IValue<?string>
808
- ) : void;
809
-
810
- bound (name : string) : (rt : INode, ts : INode, value : ?string) => void;
811
- }
812
- declare export class Binding<T> extends Destroyable {
813
- binding : IValue<T>;
814
- updateFunc : (value: T) => void;
815
-
816
- constructor (
817
- node : INode,
818
- name : string,
819
- value : IValue<T>
820
- ) : void;
821
-
822
- bound (name : string) : (rt : INode, ts : INode, value : T) => void;
823
- $destroy () : void;
824
- }
825
- declare export class ClassBinding extends Binding<string | boolean> {
826
-
827
- constructor (
828
- node : INode,
829
- name : string,
830
- value : IValue<string | boolean>
831
- ) : void;
832
-
833
- bound (name : string) : (rt : INode, ts : INode, value : string | boolean) => void;
834
- }
835
- declare export class StyleBinding extends Binding<string> {
836
- constructor (
837
- node : INode,
838
- name : string,
839
- value : IValue<string>
840
- ) : void;
841
-
842
- bound (name : string) : (rt : INode, ts : INode, value : string) => void;
843
- }
133
+
134
+ /**
135
+ * Create a children pack for each object field
136
+ * @class ObjectView
137
+ * @extends BaseView
138
+ */
139
+ declare class ObjectView<T> extends BaseView<string, T, ObjectModel<T>> {
140
+ compose(input: BSO<string, T, ObjectModel<T>>): void;
141
+ }
142
+
143
+
144
+ /**
145
+ * Create a children pack for each map value
146
+ * @class MapView
147
+ * @extends BaseView
148
+ */
149
+ declare class MapView<K, T> extends BaseView<K, T, MapModel<K, T>> {
150
+ compose(input: BSO<K, T, MapModel<K, T>>): void;
151
+ }
152
+
153
+
154
+ /**
155
+ * Private part of repeat node
156
+ * @class RepeatNodePrivate
157
+ * @extends INodePrivate
158
+ */
159
+ declare class RepeatNodePrivate<IdT> extends INodePrivate {
160
+ /**
161
+ * Children node hash
162
+ * @type {Map}
163
+ */
164
+ nodes: Map<IdT, Fragment>;
165
+ constructor(): void;
166
+ destroy(): void;
167
+ }
168
+ declare interface RNO<T, IdT> extends Options {
169
+ slot?: (node: Fragment, value: T, index: IdT) => void;
170
+ }
171
+ /**
172
+ * Repeat node repeats its children
173
+ * @class RepeatNode
174
+ * @extends Fragment
175
+ */
176
+ declare class RepeatNode<IdT, T,Opts> extends Fragment<Opts> {
177
+ $: RepeatNodePrivate<IdT>;
178
+ /**
179
+ * If false will use timeout executor, otherwise the app executor
180
+ */
181
+ freezeUi: boolean;
182
+ constructor(input: Opts, $: RepeatNodePrivate<IdT>): void;
183
+ createChild(opts: Opts, id: IdT, item: T, before?: Fragment): any;
184
+ destroyChild(id: IdT, item: T): void;
185
+ }
186
+
187
+
188
+ /**
189
+ * Represents a view of an array model
190
+ * @class ArrayView
191
+ * @extends BaseView
192
+ */
193
+ declare class ArrayView<T> extends BaseView<T, T, ArrayModel<T>> {
194
+ createChild(input: BSO<T, T, ArrayModel<T>>, id: T, item: T, before?: Fragment): any;
195
+ compose(input: BSO<T, T, ArrayModel<T>>): void;
196
+ }
197
+
198
+
199
+ /**
200
+ * Create a children pack for each set value
201
+ * @class SetView
202
+ * @extends BaseView
203
+ */
204
+ declare class SetView<T> extends BaseView<T, T, SetModel<T>> {
205
+ compose(input: BSO<T, T, SetModel<T>>): void;
206
+ }
207
+
208
+
209
+ /**
210
+ * Private part of BaseView
211
+ * @class BaseViewPrivate
212
+ * @extends RepeatNodePrivate
213
+ */
214
+ declare class BaseViewPrivate<K, T> extends RepeatNodePrivate<K> {
215
+ /**
216
+ * Handler to catch values addition
217
+ * @type {Function}
218
+ */
219
+ addHandler: (index: K, value: T) => void;
220
+ /**
221
+ * Handler to catch values removes
222
+ * @type {Function}
223
+ */
224
+ removeHandler: (index: K, value: T) => void;
225
+ constructor(): void;
226
+ }
227
+ declare interface BSO<K, T,Model> extends RNO<T, K> {
228
+ model: Model;
229
+ }
230
+ /**
231
+ * Base class of default views
232
+ * @class BaseView
233
+ * @extends RepeatNode
234
+ * @implements IModel
235
+ */
236
+ declare class BaseView<K, T,Model> extends RepeatNode<K, T, BSO<K, T, Model>> {
237
+ $: BaseViewPrivate<K, T>;
238
+ input: BSO<K, T, Model>;
239
+ constructor(input: BSO<K, T, Model>, $?: BaseViewPrivate<K, T>): void;
240
+ compose(input: BSO<K, T, Model>): void;
241
+ }
242
+
243
+
244
+ /**
245
+ * Object based model
246
+ * @extends Object
247
+ */
248
+ declare class ObjectModel<T> extends Object implements ListenableModel<string, T> {
249
+ listener: Listener<T, string>;
250
+ container: any;
251
+ /**
252
+ * Constructs a object model
253
+ * @param obj {Object} input data
254
+ */
255
+ constructor(obj?: {
256
+ [p: string]: T;
257
+ }) : void;
258
+ /**
259
+ * Gets a value of a field
260
+ * @param key {string}
261
+ * @return {*}
262
+ */
263
+ get(key: string): T;
264
+ /**
265
+ * Sets an object property value
266
+ * @param key {string} property name
267
+ * @param v {*} property value
268
+ * @return {ObjectModel} a pointer to this
269
+ */
270
+ set(key: string, v: T): this;
271
+ /**
272
+ * Deletes an object property
273
+ * @param key {string} property name
274
+ */
275
+ delete(key: string): void;
276
+ proxy(): Record<string, T>;
277
+ enableReactivity(): void;
278
+ disableReactivity(): void;
279
+ }
280
+
281
+
282
+ /**
283
+ * A Map based memory
284
+ * @class MapModel
285
+ * @extends Map
286
+ * @implements IModel
287
+ */
288
+ declare class MapModel<K, T> extends Map<K, T> implements ListenableModel<K, T> {
289
+ listener: Listener<T, K>;
290
+ /**
291
+ * Constructs a map model
292
+ * @param map {[*, *][]} input data
293
+ */
294
+ constructor(map?: [K, T][]): void;
295
+ /**
296
+ * Calls Map.clear and notify abut changes
297
+ */
298
+ clear(): void;
299
+ /**
300
+ * Calls Map.delete and notify abut changes
301
+ * @param key {*} key
302
+ * @return {boolean} true if removed something, otherwise false
303
+ */
304
+ delete(key: any): boolean;
305
+ /**
306
+ * Calls Map.set and notify abut changes
307
+ * @param key {*} key
308
+ * @param value {*} value
309
+ * @return {MapModel} a pointer to this
310
+ */
311
+ set(key: K, value: T): this;
312
+ enableReactivity(): void;
313
+ disableReactivity(): void;
314
+ }
315
+
316
+
317
+ /**
318
+ * Model based on Array class
319
+ * @extends Array
320
+ * @implements IModel
321
+ */
322
+ declare class ArrayModel<T> extends Array<T> implements ListenableModel<T, T> {
323
+ listener: Listener<T, T>;
324
+ /**
325
+ * @param data {Array} input data
326
+ */
327
+ constructor(data?: Array<T>): void;
328
+ proxy(): ArrayModel<T>;
329
+ /**
330
+ * Gets the last item of array
331
+ * @return {*} the last item of array
332
+ */
333
+ get last(): T;
334
+ /**
335
+ * Calls Array.fill and notify about changes
336
+ * @param value {*} value to fill with
337
+ * @param start {?number} begin index
338
+ * @param end {?number} end index
339
+ */
340
+ fill(value: T, start?: number, end?: number): this;
341
+ /**
342
+ * Calls Array.pop and notify about changes
343
+ * @return {*} removed value
344
+ */
345
+ pop(): T;
346
+ /**
347
+ * Calls Array.push and notify about changes
348
+ * @param items {...*} values to push
349
+ * @return {number} new length of array
350
+ */
351
+ push(...items: Array<T>): number;
352
+ /**
353
+ * Calls Array.shift and notify about changed
354
+ * @return {*} the shifted value
355
+ */
356
+ shift(): T;
357
+ /**
358
+ * Calls Array.splice and notify about changed
359
+ * @param start {number} start index
360
+ * @param deleteCount {?number} delete count
361
+ * @param items {...*}
362
+ * @return {ArrayModel} a pointer to this
363
+ */
364
+ splice(start: number, deleteCount?: number, ...items: Array<T>): ArrayModel<T>;
365
+ /**
366
+ * Calls Array.unshift and notify about changed
367
+ * @param items {...*} values to insert
368
+ * @return {number} the length after prepend
369
+ */
370
+ unshift(...items: Array<T>): number;
371
+ /**
372
+ * Inserts a value to the end of array
373
+ * @param v {*} value to insert
374
+ */
375
+ append(v: T): this;
376
+ /**
377
+ * Clears array
378
+ * @return {this} a pointer to this
379
+ */
380
+ clear(): this;
381
+ /**
382
+ * Inserts a value to position `index`
383
+ * @param index {number} index to insert value
384
+ * @param v {*} value to insert
385
+ * @return {this} a pointer to this
386
+ */
387
+ insert(index: number, v: T): this;
388
+ /**
389
+ * Inserts a value to the beginning of array
390
+ * @param v {*} value to insert
391
+ * @return {this} a pointer to this
392
+ */
393
+ prepend(v: T): this;
394
+ /**
395
+ * Removes a value from an index
396
+ * @param index {number} index of value to remove
397
+ * @return {this} a pointer to this
398
+ */
399
+ removeAt(index: number): this;
400
+ /**
401
+ * Removes the first value of array
402
+ * @return {this} a pointer to this
403
+ */
404
+ removeFirst(): this;
405
+ /**
406
+ * Removes the ast value of array
407
+ * @return {this} a pointer to this
408
+ */
409
+ removeLast(): this;
410
+ /**
411
+ * Remove the first occurrence of value
412
+ * @param v {*} value to remove
413
+ * @return {this}
414
+ */
415
+ removeOne(v: T): this;
416
+ enableReactivity(): void;
417
+ disableReactivity(): void;
418
+ }
419
+
420
+
421
+ /**
422
+ * A Set based model
423
+ * @class SetModel
424
+ * @extends Set
425
+ * @implements IModel
426
+ */
427
+ declare class SetModel<T> extends Set<T> implements ListenableModel<T, T> {
428
+ listener: Listener<T, T>;
429
+ /**
430
+ * Constructs a set model based on a set
431
+ * @param set {Set} input data
432
+ */
433
+ constructor(set?: T[]): void;
434
+ /**
435
+ * Calls Set.add and notify abut changes
436
+ * @param value {*} value
437
+ * @return {this} a pointer to this
438
+ */
439
+ add(value: T): this;
440
+ /**
441
+ * Calls Set.clear and notify abut changes
442
+ */
443
+ clear(): void;
444
+ /**
445
+ * Calls Set.delete and notify abut changes
446
+ * @param value {*}
447
+ * @return {boolean} true if a value was deleted, otherwise false
448
+ */
449
+ delete(value: T): boolean;
450
+ enableReactivity(): void;
451
+ disableReactivity(): void;
452
+ }
453
+
454
+
455
+ /**
456
+ * Represent a listener for a model
457
+ * @class Listener
458
+ */
459
+ declare class Listener<ValueT, IndexT = string | number> {
460
+ /**
461
+ * Functions to run on adding new items
462
+ * @type Set
463
+ */
464
+ onAdded: any;
465
+ /**
466
+ * Functions to run on item removing
467
+ * @type Set
468
+ */
469
+ onRemoved: any;
470
+ /**
471
+ * Describe the frozen state of model
472
+ * @type boolean
473
+ * @private
474
+ */
475
+ frozen: any;
476
+ /**
477
+ * The queue of operations in frozen state
478
+ * @type Object[]
479
+ * @private
480
+ */
481
+ queue: any;
482
+ constructor(): void;
483
+ /**
484
+ * Exclude the repeated operation in queue
485
+ * @private
486
+ */
487
+ excludeRepeat: any;
488
+ /**
489
+ * Emits added event to listeners
490
+ * @param index {*} index of value
491
+ * @param value {*} value of added item
492
+ */
493
+ emitAdded(index: IndexT, value: ValueT): void;
494
+ /**
495
+ * Emits removed event to listeners
496
+ * @param index {*} index of removed value
497
+ * @param value {*} value of removed item
498
+ */
499
+ emitRemoved(index: IndexT, value: ValueT): void;
500
+ /**
501
+ * Adds a handler to added event
502
+ * @param handler {function} function to run on event emitting
503
+ */
504
+ onAdd(handler: (index: IndexT, value: ValueT) => void): void;
505
+ /**
506
+ * Adds a handler to removed event
507
+ * @param handler {function} function to run on event emitting
508
+ */
509
+ onRemove(handler: (index: IndexT, value: ValueT) => void): void;
510
+ /**
511
+ * Removes an handler from added event
512
+ * @param handler {function} handler to remove
513
+ */
514
+ offAdd(handler: (index: IndexT, value: ValueT) => void): void;
515
+ /**
516
+ * Removes an handler form removed event
517
+ * @param handler {function} handler to remove
518
+ */
519
+ offRemove(handler: (index: IndexT, value: ValueT) => void): void;
520
+ /**
521
+ * Run all queued operation and enable reactivity
522
+ */
523
+ enableReactivity(): void;
524
+ /**
525
+ * Disable the reactivity and enable the queue
526
+ */
527
+ disableReactivity(): void;
528
+ }
529
+
530
+
531
+ /**
532
+ * @declare interface IModel
533
+ */
534
+ declare interface IModel {
535
+ /**
536
+ * Enable the reactivity of model
537
+ */
538
+ enableReactivity(): void;
539
+ /**
540
+ * Disable the reactivity of model
541
+ */
542
+ disableReactivity(): void;
543
+ }
544
+ declare interface ListenableModel<K, T> extends IModel {
545
+ /**
546
+ * The listener of model
547
+ * @type Listener
548
+ */
549
+ listener: Listener<T, K>;
550
+ }
551
+
552
+
553
+ declare interface WatchOptions<T> extends Options {
554
+ model: IValue<T>;
555
+ slot?: (node: Fragment, value: T) => void;
556
+ }
557
+ /**
558
+ * Watch Node
559
+ * @class Watch
560
+ * @extends Fragment
561
+ */
562
+ declare class Watch<T> extends Fragment<WatchOptions<T>> {
563
+ input: WatchOptions<T>;
564
+ compose(input: WatchOptions<T>): void;
565
+ }
566
+
567
+
568
+
569
+ /**
570
+ * Represents a Vasille.js node
571
+ * @class FragmentPrivate
572
+ * @extends ReactivePrivate
573
+ */
574
+ declare class FragmentPrivate extends ReactivePrivate {
575
+ /**
576
+ * The app node
577
+ * @type {AppNode}
578
+ */
579
+ app: AppNode;
580
+ /**
581
+ * Parent node
582
+ * @type {Fragment}
583
+ */
584
+ parent: Fragment;
585
+ /**
586
+ * Next node
587
+ * @type {?Fragment}
588
+ */
589
+ next?: Fragment;
590
+ /**
591
+ * Previous node
592
+ * @type {?Fragment}
593
+ */
594
+ prev?: Fragment;
595
+ constructor(): void;
596
+ /**
597
+ * Pre-initializes the base of a fragment
598
+ * @param app {App} the app node
599
+ * @param parent {Fragment} the parent node
600
+ */
601
+ preinit(app: AppNode, parent: Fragment): void;
602
+ /**
603
+ * Unlinks all bindings
604
+ */
605
+ destroy(): void;
606
+ }
607
+ /**
608
+ * This class is symbolic
609
+ * @extends Reactive
610
+ */
611
+ declare class Fragment<T> extends Reactive {
612
+ /**
613
+ * Private part
614
+ * @protected
615
+ */
616
+ $: FragmentPrivate;
617
+ /**
618
+ * The children list
619
+ * @type Array
620
+ */
621
+ children: Set<Fragment>;
622
+ lastChild: Fragment | null;
623
+ /**
624
+ * Constructs a Vasille Node
625
+ * @param input
626
+ * @param $ {FragmentPrivate}
627
+ */
628
+ constructor(input: T, $?: FragmentPrivate): void;
629
+ /**
630
+ * Gets the app of node
631
+ */
632
+ get app(): AppNode;
633
+ /**
634
+ * Prepare to init fragment
635
+ * @param app {AppNode} app of node
636
+ * @param parent {Fragment} parent of node
637
+ * @param data {*} additional data
638
+ */
639
+ preinit(app: AppNode, parent: Fragment, data?: any): void;
640
+ init(): void;
641
+ compose(input: T): void;
642
+ /** To be overloaded: ready event handler */
643
+ ready(): void;
644
+ /**
645
+ * Pushes a node to children immediately
646
+ * @param node {Fragment} A node to push
647
+ * @protected
648
+ */
649
+ pushNode(node: Fragment): void;
650
+ /**
651
+ * Find first node in element if so exists
652
+ * @return {?Element}
653
+ * @protected
654
+ */
655
+ findFirstChild(): Node;
656
+ /**
657
+ * Append a node to end of element
658
+ * @param node {Node} node to insert
659
+ */
660
+ appendNode(node: Node): void;
661
+ /**
662
+ * Insert a node as a sibling of this
663
+ * @param node {Node} node to insert
664
+ */
665
+ insertAdjacent(node: Node): void;
666
+ /**
667
+ * Defines a text fragment
668
+ * @param text {String | IValue} A text fragment string
669
+ * @param cb {function (TextNode)} Callback if previous is slot name
670
+ */
671
+ text(text: string | IValue<string>, cb?: (text: TextNode) => void): void;
672
+ debug(text: IValue<string>): void;
673
+ /**
674
+ * Defines a tag element
675
+ * @param tagName {String} the tag name
676
+ * @param input
677
+ * @param cb {function(Tag, *)} callback
678
+ */
679
+ tag<K>(tagName: K, input: TagOptionsWithSlot<K>, cb?: (node: Tag<K>) => void): (HTMLElementTagNameMap & SVGElementTagNameMap)[K];
680
+ /**
681
+ * Defines a custom element
682
+ * @param node {Fragment} vasille element to insert
683
+ * @param callback {function($ : *)}
684
+ */
685
+ create<T>(node: T, callback?: T['input']['slot']): void;
686
+ /**
687
+ * Defines an if node
688
+ * @param cond {IValue} condition
689
+ * @param cb {function(Fragment)} callback to run on true
690
+ * @return {this}
691
+ */
692
+ if(cond: IValue<boolean>, cb: (node: Fragment) => void): void;
693
+ else(cb: (node: Fragment) => void): void;
694
+ elif(cond: IValue<boolean>, cb: (node: Fragment) => void): void;
695
+ /**
696
+ * Create a case for switch
697
+ * @param cond {IValue<boolean>}
698
+ * @param cb {function(Fragment) : void}
699
+ * @return {{cond : IValue, cb : (function(Fragment) : void)}}
700
+ */
701
+ case(cond: IValue<boolean>, cb: (node: Fragment) => void): {
702
+ cond: IValue<boolean>;
703
+ cb: (node: Fragment) => void;
704
+ };
705
+ /**
706
+ * @param cb {(function(Fragment) : void)}
707
+ * @return {{cond : IValue, cb : (function(Fragment) : void)}}
708
+ */
709
+ default(cb: (node: Fragment) => void): {
710
+ cond: IValue<boolean>;
711
+ cb: (node: Fragment) => void;
712
+ };
713
+ insertBefore(node: Fragment): void;
714
+ insertAfter(node: Fragment): void;
715
+ remove(): void;
716
+ destroy(): void;
717
+ }
718
+ /**
719
+ * The part of a text node
720
+ * @class TextNodePrivate
721
+ * @extends FragmentPrivate
722
+ */
723
+ declare class TextNodePrivate extends FragmentPrivate {
724
+ node: Text;
725
+ constructor(): void;
726
+ /**
727
+ * Pre-initializes a text node
728
+ * @param app {AppNode} the app node
729
+ * @param parent
730
+ * @param text {IValue}
731
+ */
732
+ preinitText(app: AppNode, parent: Fragment, text: IValue<string> | string): void;
733
+ /**
734
+ * Clear node data
735
+ */
736
+ destroy(): void;
737
+ }
738
+ /**
739
+ * Represents a text node
740
+ * @class TextNode
741
+ * @extends Fragment
742
+ */
743
+ declare class TextNode extends Fragment {
744
+ $: TextNodePrivate;
745
+ constructor($?: TextNodePrivate): void;
746
+ preinit(app: AppNode, parent: Fragment, text?: IValue<string> | string): void;
747
+ findFirstChild(): Node;
748
+ destroy(): void;
749
+ }
750
+ /**
751
+ * The part of a base node
752
+ * @class INodePrivate
753
+ * @extends FragmentPrivate
754
+ */
755
+ declare class INodePrivate extends FragmentPrivate {
756
+ /**
757
+ * Defines if node is unmounted
758
+ * @type {boolean}
759
+ */
760
+ unmounted: boolean;
761
+ /**
762
+ * The element of vasille node
763
+ * @type Element
764
+ */
765
+ node: Element;
766
+ constructor(): void;
767
+ destroy(): void;
768
+ }
769
+ /**
770
+ * Vasille node which can manipulate an element node
771
+ * @class INode
772
+ * @extends Fragment
773
+ */
774
+ declare class INode<T> extends Fragment<T> {
775
+ $: INodePrivate;
776
+ /**
777
+ * Constructs a base node
778
+ * @param input
779
+ * @param $ {?INodePrivate}
780
+ */
781
+ constructor(input: T, $?: INodePrivate): void;
782
+ /**
783
+ * Get the bound node
784
+ */
785
+ get node(): Element;
786
+ /**
787
+ * Bind attribute value
788
+ * @param name {String} name of attribute
789
+ * @param value {IValue} value
790
+ */
791
+ attr(name: string, value: IValue<string | number | boolean>): void;
792
+ /**
793
+ * Set attribute value
794
+ * @param name {string} name of attribute
795
+ * @param value {string} value
796
+ */
797
+ setAttr(name: string, value: string | number | boolean): this;
798
+ /**
799
+ * Adds a CSS class
800
+ * @param cl {string} Class name
801
+ */
802
+ addClass(cl: string): this;
803
+ /**
804
+ * Adds some CSS classes
805
+ * @param cls {...string} classes names
806
+ */
807
+ removeClasse(cl: string): this;
808
+ /**
809
+ * Bind a CSS class
810
+ * @param className {IValue}
811
+ */
812
+ bindClass(className: IValue<string>): this;
813
+ /**
814
+ * Bind a floating class name
815
+ * @param cond {IValue} condition
816
+ * @param className {string} class name
817
+ */
818
+ floatingClass(cond: IValue<boolean>, className: string): this;
819
+ /**
820
+ * Defines a style attribute
821
+ * @param name {String} name of style attribute
822
+ * @param value {IValue} value
823
+ */
824
+ style(name: string, value: IValue<string>): this;
825
+ /**
826
+ * Sets a style property value
827
+ * @param prop {string} Property name
828
+ * @param value {string} Property value
829
+ */
830
+ setStyle(prop: string, value: string): this;
831
+ /**
832
+ * Add a listener for an event
833
+ * @param name {string} Event name
834
+ * @param handler {function (Event)} Event handler
835
+ * @param options {Object | boolean} addEventListener options
836
+ */
837
+ listen(name: string, handler: (ev: Event) => void, options?: boolean | AddEventListenerOptions): this;
838
+ insertAdjacent(node: Node): void;
839
+ /**
840
+ * A v-show & ngShow alternative
841
+ * @param cond {IValue} show condition
842
+ */
843
+ bindShow(cond: IValue<boolean>): this;
844
+ /**
845
+ * bind HTML
846
+ * @param value {IValue}
847
+ */
848
+ bindDomApi(name: string, value: IValue<string>): void;
849
+ applyOptions(options: T): void;
850
+ }
851
+ declare interface TagOptionsWithSlot<K> extends TagOptions<K> {
852
+ slot?: (tag: Tag<K>) => void;
853
+ }
854
+ /**
855
+ * Represents an Vasille.js HTML element node
856
+ * @class Tag
857
+ * @extends INode
858
+ */
859
+ declare class Tag<K> extends INode<TagOptionsWithSlot<K>> {
860
+ constructor(input: TagOptionsWithSlot<K>): void;
861
+ preinit(app: AppNode, parent: Fragment, tagName?: string): void;
862
+ compose(input: TagOptionsWithSlot<K>): void;
863
+ findFirstChild(): Node;
864
+ insertAdjacent(node: Node): void;
865
+ appendNode(node: Node): void;
866
+ /**
867
+ * Mount/Unmount a node
868
+ * @param cond {IValue} show condition
869
+ */
870
+ bindMount(cond: IValue<boolean>): void;
871
+ /**
872
+ * Runs GC
873
+ */
874
+ destroy(): void;
875
+ }
876
+ /**
877
+ * Represents a vasille extension node
878
+ * @class Extension
879
+ * @extends INode
880
+ */
881
+ declare class Extension<T> extends INode<T> {
882
+ preinit(app: AppNode, parent: Fragment): void;
883
+ destroy(): void;
884
+ }
885
+ /**
886
+ * Node which cas has just a child
887
+ * @class Component
888
+ * @extends Extension
889
+ */
890
+ declare class Component<T> extends Extension<T> {
891
+ init(): void;
892
+ ready(): void;
893
+ preinit(app: AppNode, parent: Fragment): void;
894
+ }
895
+ /**
896
+ * Private part of switch node
897
+ * @class SwitchedNodePrivate
898
+ * @extends INodePrivate
899
+ */
900
+ declare class SwitchedNodePrivate extends FragmentPrivate {
901
+ /**
902
+ * Index of current true condition
903
+ * @type number
904
+ */
905
+ index: number;
906
+ /**
907
+ * Array of possible cases
908
+ * @type {Array<{cond : IValue<boolean>, cb : function(Fragment)}>}
909
+ */
910
+ cases: {
911
+ cond: IValue<boolean>;
912
+ cb: (node: Fragment) => void;
913
+ }[];
914
+ /**
915
+ * A function which sync index and content, will be bounded to each condition
916
+ * @type {Function}
917
+ */
918
+ sync: () => void;
919
+ constructor(): void;
920
+ /**
921
+ * Runs GC
922
+ */
923
+ destroy(): void;
924
+ }
925
+ /**
926
+ * Defines a node witch can switch its children conditionally
927
+ */
928
+ declare class SwitchedNode extends Fragment {
929
+ $: SwitchedNodePrivate;
930
+ /**
931
+ * Constructs a switch node and define a sync function
932
+ */
933
+ constructor(): void;
934
+ addCase(case_: {
935
+ cond: IValue<boolean>;
936
+ cb: (node: Fragment) => void;
937
+ }): void;
938
+ /**
939
+ * Creates a child node
940
+ * @param cb {function(Fragment)} Call-back
941
+ */
942
+ createChild(cb: (node: Fragment) => void): void;
943
+ ready(): void;
944
+ destroy(): void;
945
+ }
946
+ /**
947
+ * The part of a text node
948
+ */
949
+ declare class DebugPrivate extends FragmentPrivate {
950
+ node: Comment;
951
+ constructor(): void;
952
+ /**
953
+ * Pre-initializes a text node
954
+ * @param app {App} the app node
955
+ * @param parent {Fragment} parent node
956
+ * @param text {String | IValue}
957
+ */
958
+ preinitComment(app: AppNode, parent: Fragment, text: IValue<string>): void;
959
+ /**
960
+ * Clear node data
961
+ */
962
+ destroy(): void;
963
+ }
964
+ /**
965
+ * Represents a debug node
966
+ * @class DebugNode
967
+ * @extends Fragment
968
+ */
969
+ declare class DebugNode extends Fragment {
970
+ /**
971
+ * data
972
+ * @type {DebugNode}
973
+ */
974
+ $: DebugPrivate;
975
+ constructor(): void;
976
+ preinit(app: AppNode, parent: Fragment, text?: IValue<string>): void;
977
+ /**
978
+ * Runs garbage collector
979
+ */
980
+ destroy(): void;
981
+ }
982
+
983
+
984
+ declare interface AppOptions<K> extends TagOptions<K> {
985
+ debugUi?: boolean;
986
+ }
987
+ /**
988
+ * Application Node
989
+ * @class AppNode
990
+ * @extends INode
991
+ */
992
+ declare class AppNode<T> extends INode<T> {
993
+ /**
994
+ * Enables debug comments
995
+ */
996
+ debugUi: boolean;
997
+ /**
998
+ * @param input
999
+ */
1000
+ constructor(input: T): void;
1001
+ }
1002
+ /**
1003
+ * Represents a Vasille.js application
1004
+ * @class App
1005
+ * @extends AppNode
1006
+ */
1007
+ declare class App<T> extends AppNode<T> {
1008
+ /**
1009
+ * Constructs an app node
1010
+ * @param node {Element} The root of application
1011
+ * @param input
1012
+ */
1013
+ constructor(node: Element, input: T): void;
1014
+ appendNode(node: Node): void;
1015
+ }
1016
+ declare interface PortalOptions extends AppOptions<'div'> {
1017
+ node: Element;
1018
+ slot?: (node: Fragment) => void;
1019
+ }
1020
+ declare class Portal extends AppNode<PortalOptions> {
1021
+ constructor(input: PortalOptions): void;
1022
+ appendNode(node: Node): void;
1023
+ }
1024
+
1025
+
1026
+
1027
+ /**
1028
+ * Describe a common binding logic
1029
+ * @class Binding
1030
+ * @extends Destroyable
1031
+ */
1032
+ declare class Binding<T> extends Destroyable {
1033
+ binding: any;
1034
+ func: any;
1035
+ /**
1036
+ * Constructs a common binding logic
1037
+ * @param value {IValue} the value to bind
1038
+ */
1039
+ constructor(value: IValue<T>): void;
1040
+ init(bounded: (v: T) => void): void;
1041
+ /**
1042
+ * Just clear bindings
1043
+ */
1044
+ destroy(): void;
1045
+ }
1046
+
1047
+
1048
+ /**
1049
+ * Represents an Attribute binding description
1050
+ * @class AttributeBinding
1051
+ * @extends Binding
1052
+ */
1053
+ declare class AttributeBinding extends Binding<string | number | boolean | null> {
1054
+ /**
1055
+ * Constructs an attribute binding description
1056
+ * @param node {INode} the vasille node
1057
+ * @param name {String} the name of attribute
1058
+ * @param value {IValue} value to bind
1059
+ */
1060
+ constructor(node: INode, name: string, value: IValue<string | number | boolean | null>): void;
1061
+ }
1062
+
1063
+
1064
+ declare class StaticClassBinding extends Binding<boolean> {
1065
+ current: any;
1066
+ constructor(node: INode, name: string, value: IValue<boolean>): void;
1067
+ }
1068
+ declare class DynamicalClassBinding extends Binding<string> {
1069
+ current: any;
1070
+ constructor(node: INode, value: IValue<string>): void;
1071
+ }
1072
+
1073
+
1074
+ /**
1075
+ * Describes a style attribute binding
1076
+ * @class StyleBinding
1077
+ * @extends Binding
1078
+ */
1079
+ declare class StyleBinding extends Binding<string> {
1080
+ /**
1081
+ * Constructs a style binding attribute
1082
+ * @param node {INode} the vasille node
1083
+ * @param name {string} the name of style property
1084
+ * @param value {IValue} the value to bind
1085
+ */
1086
+ constructor(node: INode, name: string, value: IValue<string>): void;
1087
+ }
1088
+
1089
+
1090
+ declare function arrayModel<T>(arr?: T[]): ArrayModel<T>;
1091
+ declare function mapModel<K, T>(map?: [K, T][]): MapModel<K, T>;
1092
+ declare function setModel<T>(arr?: T[]): SetModel<T>;
1093
+ declare function objectModel<T>(obj?: {
1094
+ [p: string]: T;
1095
+ }): ObjectModel<T>;
1096
+
1097
+
1098
+ declare function ref<T>(value: T): [IValue<T>, (value: T) => void];
1099
+ declare function mirror<T>(value: IValue<T>): Mirror<T>;
1100
+ declare function forward<T>(value: IValue<T>): Mirror<T>;
1101
+ declare function point<T>(value: IValue<T>): Pointer<T>;
1102
+ declare function expr<T,Args>(func: (...args: Args) => T, ...values: KindOfIValue<Args>): IValue<T>;
1103
+ declare function watch<Args>(func: (...args: Args) => void, ...values: KindOfIValue<Args>): void;
1104
+ declare function valueOf<T>(value: IValue<T>): T;
1105
+ declare function setValue<T>(ref: IValue<T>, value: IValue<T> | T): void;
1106
+
1107
+
1108
+ declare function app<In>(renderer: (opts: In) => In["return"]): (node: Element, opts: In) => In["return"];
1109
+ declare function component<In>(renderer: (opts: In) => In["return"]): (opts: In, callback?: In['slot']) => In["return"];
1110
+ declare function fragment<In>(renderer: (opts: In) => In["return"]): (opts: In, callback?: In['slot']) => In["return"];
1111
+ declare function extension<In>(renderer: (opts: In) => In["return"]): (opts: In, callback?: In['slot']) => In["return"];
1112
+ declare function tag<K>(name: K, opts: TagOptionsWithSlot<K>, callback?: () => void): {
1113
+ node: (HTMLElementTagNameMap & SVGElementTagNameMap)[K];
1114
+ };
1115
+ declare type ExtractParams = any[];
1116
+ declare function create<T>(node: T, callback?: (...args: ExtractParams<T['input']['slot']>) => void): T;
1117
+ declare var vx: {
1118
+ if(condition: IValue<boolean>, callback: () => void): void;
1119
+ else(callback: () => void): void;
1120
+ elif(condition: IValue<boolean>, callback: () => void): void;
1121
+ for<T, K>(model: ListenableModel<K, T>, callback: (value: T, index: K) => void): void;
1122
+ watch<T_1>(model: IValue<T_1>, callback: (value: T_1) => void): void;
1123
+ nextTick(callback: () => void): void;
1124
+ };
1125
+
1126
+
1127
+
1128
+ declare function text(text: string | IValue<string>): void;
1129
+ declare function debug(text: IValue<string>): void;
1130
+ declare function predefine<T>(slot: T | null | undefined, predefined: T): T;
1131
+
1132
+
1133
+ declare interface Options {
1134
+ "v:is"?: Record<string, IValue<any>>;
1135
+ return?: any;
1136
+ slot?: (node: Fragment, ...args: any[]) => void;
1137
+ }
1138
+ declare type AttrType<T> = IValue<T | string | null> | T | string | null | undefined;
1139
+ declare interface TagOptions<T> extends Options {
1140
+ "v:attr"?: {
1141
+ [K : string]:? AttrType<AcceptedTagsSpec[T]['attrs'][K]>;
1142
+ } & Record<string, AttrType<number | boolean>>;
1143
+ class?: (string | IValue<string> | Record<string, boolean | IValue<boolean>>)[] | ({
1144
+ $: IValue<string>[];
1145
+ } & Record<string, boolean | IValue<boolean>>);
1146
+ style?: Record<string, string | IValue<string> | [number | string | IValue<number | string>, string]>;
1147
+ "v:events"?: Partial<AcceptedTagsSpec[T]['events']>;
1148
+ "v:set"?: Partial<AcceptedTagsMap[T]> & Record<string, any>;
1149
+ "v:bind"?: {
1150
+ [K : string]:? IValue<AcceptedTagsMap[T][K]>;
1151
+ } & Record<string, IValue<any>>;
1152
+ }
1153
+
1154
+
1155
+ declare function merge(main: Record<string, any>, ...targets: Record<string, any>[]): void;
1156
+
1157
+
1158
+ /**
1159
+ * Mark an object which can be destroyed
1160
+ * @class Destroyable
1161
+ */
1162
+ declare class Destroyable {
1163
+ /**
1164
+ * Make object fields non configurable
1165
+ * @protected
1166
+ */
1167
+ seal(): void;
1168
+ /**
1169
+ * Garbage collector method
1170
+ */
1171
+ destroy(): void;
1172
+ }
1173
+
1174
+
1175
+ declare function notOverwritten(): string;
1176
+ declare function internalError(msg: string): string;
1177
+ declare function userError(msg: string, err: string): string;
1178
+ declare function wrongBinding(msg: string): string;
1179
+
1180
+
1181
+ declare class Switchable extends Destroyable {
1182
+ /**
1183
+ * Enable update handlers triggering
1184
+ */
1185
+ enable(): void;
1186
+ /**
1187
+ * disable update handlers triggering
1188
+ */
1189
+ disable(): void;
1190
+ }
1191
+ /**
1192
+ * Interface which describes a value
1193
+ * @class IValue
1194
+ * @extends Destroyable
1195
+ */
1196
+ declare class IValue<T> extends Switchable {
1197
+ /**
1198
+ * Is enabled state flag
1199
+ * @protected
1200
+ */
1201
+ isEnabled: boolean;
1202
+ /**
1203
+ * @param isEnabled {boolean} initial is enabled state
1204
+ */
1205
+ constructor(isEnabled: boolean): void;
1206
+ /**
1207
+ * Get the encapsulated value
1208
+ * @return {*} the encapsulated value
1209
+ */
1210
+ get $(): T;
1211
+ /**
1212
+ * Sets the encapsulated value
1213
+ * @param value {*} value to encapsulate
1214
+ */
1215
+ set $(value: T): void;
1216
+ /**
1217
+ * Add a new handler to value change
1218
+ * @param handler {function(value : *)} the handler to add
1219
+ */
1220
+ on(handler: (value: T) => void): void;
1221
+ /**
1222
+ * Removes a handler of value change
1223
+ * @param handler {function(value : *)} the handler to remove
1224
+ */
1225
+ off(handler: (value: T) => void): void;
1226
+ }
1227
+
1228
+
1229
+ declare var current: Reactive | null;
1230
+ /**
1231
+ * Private stuff of a reactive object
1232
+ * @class ReactivePrivate
1233
+ * @extends Destroyable
1234
+ */
1235
+ declare class ReactivePrivate extends Destroyable {
1236
+ /**
1237
+ * A list of user-defined values
1238
+ * @type {Set}
1239
+ */
1240
+ watch: Set<Switchable>;
1241
+ /**
1242
+ * A list of user-defined bindings
1243
+ * @type {Set}
1244
+ */
1245
+ bindings: Set<Destroyable>;
1246
+ /**
1247
+ * A list of user defined models
1248
+ */
1249
+ models: Set<IModel>;
1250
+ /**
1251
+ * Reactivity switch state
1252
+ * @type {boolean}
1253
+ */
1254
+ enabled: boolean;
1255
+ /**
1256
+ * The frozen state of object
1257
+ * @type {boolean}
1258
+ */
1259
+ frozen: boolean;
1260
+ /**
1261
+ * An expression which will freeze/unfreeze the object
1262
+ * @type {IValue<void>}
1263
+ */
1264
+ freezeExpr: Expression<void, [boolean]>;
1265
+ /**
1266
+ * Parent node
1267
+ * @type {Reactive}
1268
+ */
1269
+ parent: Reactive;
1270
+ onDestroy?: () => void;
1271
+ constructor(): void;
1272
+ destroy(): void;
1273
+ }
1274
+ /**
1275
+ * A reactive object
1276
+ * @class Reactive
1277
+ * @extends Destroyable
1278
+ */
1279
+ declare class Reactive<T> extends Destroyable {
1280
+ /**
1281
+ * Private stuff
1282
+ * @protected
1283
+ */
1284
+ $: ReactivePrivate;
1285
+ input: T;
1286
+ constructor(input: T, $?: ReactivePrivate): void;
1287
+ /**
1288
+ * Get parent node
1289
+ */
1290
+ get parent(): Reactive;
1291
+ /**
1292
+ * Create a reference
1293
+ * @param value {*} value to reference
1294
+ */
1295
+ ref<T>(value: T): IValue<T>;
1296
+ /**
1297
+ * Create a mirror
1298
+ * @param value {IValue} value to mirror
1299
+ */
1300
+ mirror<T>(value: IValue<T>): Mirror<T>;
1301
+ /**
1302
+ * Create a forward-only mirror
1303
+ * @param value {IValue} value to mirror
1304
+ */
1305
+ forward<T>(value: IValue<T>): Mirror<T>;
1306
+ /**
1307
+ * Creates a pointer
1308
+ * @param value {*} default value to point
1309
+ * @param forwardOnly {boolean} forward only sync
1310
+ */
1311
+ point<T>(value: IValue<T>, forwardOnly?: boolean): Pointer<T>;
1312
+ /**
1313
+ * Register a model
1314
+ * @param model
1315
+ */
1316
+ register<T>(model: T): T;
1317
+ /**
1318
+ * Creates a watcher
1319
+ * @param func {function} function to run on any argument change
1320
+ * @param values
1321
+ */
1322
+ watch<Args>(func: (...args: Args) => void, ...values: KindOfIValue<Args>): void;
1323
+ /**
1324
+ * Creates a computed value
1325
+ * @param func {function} function to run on any argument change
1326
+ * @param values
1327
+ * @return {IValue} the created ivalue
1328
+ */
1329
+ expr<T,Args>(func: (...args: Args) => T, ...values: KindOfIValue<Args>): IValue<T>;
1330
+ /**
1331
+ * Enable reactivity of fields
1332
+ */
1333
+ enable(): void;
1334
+ /**
1335
+ * Disable reactivity of fields
1336
+ */
1337
+ disable(): void;
1338
+ /**
1339
+ * Disable/Enable reactivity of object fields with feedback
1340
+ * @param cond {IValue} show condition
1341
+ * @param onOff {function} on show feedback
1342
+ * @param onOn {function} on hide feedback
1343
+ */
1344
+ bindAlive(cond: IValue<boolean>, onOff?: () => void, onOn?: () => void): this;
1345
+ init(): void;
1346
+ applyOptions(input: T): void;
1347
+ applyOptionsNow(): void;
1348
+ compose(input: T): void;
1349
+ composeNow(): void;
1350
+ runFunctional<F>(f: F, ...args: Parameters<F>): ReturnType<F>;
1351
+ runOnDestroy(func: () => void): void;
1352
+ destroy(): void;
1353
+ }
1354
+
1355
+
1356
+ declare type SvgEvents = {
1357
+ [K : string]: EventHandler<SVGElementEventMap[K]> | undefined;
1358
+ };
1359
+ declare interface SvgAreaAttrs {
1360
+ "aria-activedescendant": string;
1361
+ "aria-atomic": string;
1362
+ "aria-autocomplete": string;
1363
+ "aria-busy": string;
1364
+ "aria-checked": string;
1365
+ "aria-colcount": string;
1366
+ "aria-colindex": string;
1367
+ "aria-colspan": string;
1368
+ "aria-controls": string;
1369
+ "aria-current": string;
1370
+ "aria-describedby": string;
1371
+ "aria-details": string;
1372
+ "aria-disabled": string;
1373
+ "aria-dropeffect": string;
1374
+ "aria-errormessage": string;
1375
+ "aria-expanded": string;
1376
+ "aria-flowto": string;
1377
+ "aria-grabbed": string;
1378
+ "aria-haspopup": string;
1379
+ "aria-hidden": string;
1380
+ "aria-invalid": string;
1381
+ "aria-keyshortcuts": string;
1382
+ "aria-label": string;
1383
+ "aria-labelledby": string;
1384
+ "aria-level": string;
1385
+ "aria-live": string;
1386
+ "aria-modal": string;
1387
+ "aria-multiline": string;
1388
+ "aria-multiselectable": string;
1389
+ "aria-orientation": string;
1390
+ "aria-owns": string;
1391
+ "aria-placeholder": string;
1392
+ "aria-posinset": string;
1393
+ "aria-pressed": string;
1394
+ "aria-readonly": string;
1395
+ "aria-relevant": string;
1396
+ "aria-required": string;
1397
+ "aria-roledescription": string;
1398
+ "aria-rowcount": string;
1399
+ "aria-rowindex": string;
1400
+ "aria-rowspan": string;
1401
+ "aria-selected": string;
1402
+ "aria-setsize": string;
1403
+ "aria-sort": string;
1404
+ "aria-valuemax": string;
1405
+ "aria-valuemin": string;
1406
+ "aria-valuenow": string;
1407
+ "aria-valuetext": string;
1408
+ "role": string;
1409
+ }
1410
+ declare interface SvgConditionalProcessingAtttrs {
1411
+ "requiredExtensions": string;
1412
+ "systemLanguage": string;
1413
+ }
1414
+ declare interface SvgCoreAttrs {
1415
+ "id": string;
1416
+ "tabindex": string;
1417
+ "lang": string;
1418
+ "xml:space": string;
1419
+ }
1420
+ declare interface SvgSvgAttrs extends SvgAreaAttrs, SvgConditionalProcessingAtttrs, SvgCoreAttrs {
1421
+ "viewBox": string;
1422
+ "preserveAspectRatio": string;
1423
+ "zoomAndPan": string;
1424
+ "transform": string;
1425
+ x: number;
1426
+ y: number;
1427
+ width: number;
1428
+ height: number;
1429
+ }
1430
+ declare interface Svg3in1Attrs extends SvgAreaAttrs, SvgConditionalProcessingAtttrs, SvgCoreAttrs {
1431
+ }
1432
+ declare interface SvgUseAttrs extends Svg3in1Attrs {
1433
+ href: string;
1434
+ }
1435
+ declare interface SvgPathLengthAttrs extends Svg3in1Attrs {
1436
+ pathLength: number;
1437
+ "marker-start": string;
1438
+ "marker-mid": string;
1439
+ "marker-end": string;
1440
+ }
1441
+ declare interface SvgPathAttrs extends SvgPathLengthAttrs {
1442
+ d: string;
1443
+ }
1444
+ declare interface SvgRectAttrs extends SvgPathLengthAttrs {
1445
+ x: number;
1446
+ y: number;
1447
+ width: number;
1448
+ height: number;
1449
+ rx: number;
1450
+ ry: number;
1451
+ }
1452
+ declare interface SvgCircleAttrs extends SvgPathLengthAttrs {
1453
+ cx: number;
1454
+ cy: number;
1455
+ r: number;
1456
+ }
1457
+ declare interface SvgEllipseAttrs extends SvgPathLengthAttrs {
1458
+ cx: number;
1459
+ cy: number;
1460
+ rx: number;
1461
+ ry: number;
1462
+ }
1463
+ declare interface SvgLineAttrs extends SvgPathLengthAttrs {
1464
+ x1: number;
1465
+ y1: number;
1466
+ x2: number;
1467
+ y2: number;
1468
+ }
1469
+ declare interface SvgPolygonAttrs extends SvgPathLengthAttrs {
1470
+ points: number;
1471
+ }
1472
+ declare interface SvgCommonTextAttrs extends Svg3in1Attrs {
1473
+ x: number;
1474
+ y: number;
1475
+ dx: number;
1476
+ dy: number;
1477
+ rotate: number;
1478
+ textLength: number;
1479
+ lengthAdjust: 'spacing' | 'spacingAndGlyphs';
1480
+ }
1481
+ declare interface SvgTextPathAttrs extends Svg3in1Attrs {
1482
+ "lengthAdjust": 'spacing' | 'spacingAndGlyphs';
1483
+ "textLength": number;
1484
+ "path": string;
1485
+ "href": string;
1486
+ "startOffset": number;
1487
+ "method": 'align' | 'stretch';
1488
+ "spacing": 'auto' | 'exact';
1489
+ "side": 'left' | 'right';
1490
+ }
1491
+ declare interface SvgImageAttrs extends Svg3in1Attrs {
1492
+ "preserveAspectRatio": string;
1493
+ "href": string;
1494
+ "crossorigin": string;
1495
+ x: number;
1496
+ y: number;
1497
+ width: number;
1498
+ height: number;
1499
+ }
1500
+ declare interface SvgForeignObjectAttrs extends Svg3in1Attrs {
1501
+ x: number;
1502
+ y: number;
1503
+ width: number;
1504
+ height: number;
1505
+ }
1506
+ declare interface SvgMarkerAttrs extends Svg3in1Attrs {
1507
+ "viewBox": string;
1508
+ "preserveAspectRatio": string;
1509
+ "refX": number;
1510
+ "refY": number;
1511
+ "markerUnits": 'strokeWidth' | 'userSpaceOnUse';
1512
+ "markerWidth": number | 'left' | 'center' | 'right';
1513
+ "markerHeight": number | 'top' | 'center' | 'bottom';
1514
+ "orient": 'auto' | 'auto-start-reverse' | number;
1515
+ }
1516
+ declare interface SvgAAttrs extends SvgCoreAttrs {
1517
+ href: string;
1518
+ "target": '_self' | '_parent' | '_top' | '_blank';
1519
+ "download": string;
1520
+ "ping": string;
1521
+ "rel": string;
1522
+ "hreflang": string;
1523
+ "type": string;
1524
+ "referrerpolicy": string;
1525
+ }
1526
+ declare interface SvgViewAttrs extends SvgCoreAttrs, SvgAreaAttrs {
1527
+ "viewBox": string;
1528
+ "preserveAspectRatio": string;
1529
+ "zoomAndPan": string;
1530
+ }
1531
+ declare interface SvgTagMap {
1532
+ "a": Tag<SvgAAttrs, SvgEvents>;
1533
+ "animate": Tag<SvgCoreAttrs, SvgEvents>;
1534
+ "animateMotion": Tag<SvgCoreAttrs, SvgEvents>;
1535
+ "animateTransform": Tag<SvgCoreAttrs, SvgEvents>;
1536
+ "circle": Tag<SvgCircleAttrs, SvgEvents>;
1537
+ "clipPath": Tag<SvgCoreAttrs, SvgEvents>;
1538
+ "defs": Tag<SvgCoreAttrs, SvgEvents>;
1539
+ "desc": Tag<SvgCoreAttrs, SvgEvents>;
1540
+ "ellipse": Tag<SvgEllipseAttrs, SvgEvents>;
1541
+ "feBlend": Tag<SvgCoreAttrs, SvgEvents>;
1542
+ "feColorMatrix": Tag<SvgCoreAttrs, SvgEvents>;
1543
+ "feComponentTransfer": Tag<SvgCoreAttrs, SvgEvents>;
1544
+ "feComposite": Tag<SvgCoreAttrs, SvgEvents>;
1545
+ "feConvolveMatrix": Tag<SvgCoreAttrs, SvgEvents>;
1546
+ "feDiffuseLighting": Tag<SvgCoreAttrs, SvgEvents>;
1547
+ "feDisplacementMap": Tag<SvgCoreAttrs, SvgEvents>;
1548
+ "feDistantLight": Tag<SvgCoreAttrs, SvgEvents>;
1549
+ "feDropShadow": Tag<SvgCoreAttrs, SvgEvents>;
1550
+ "feFlood": Tag<SvgCoreAttrs, SvgEvents>;
1551
+ "feFuncA": Tag<SvgCoreAttrs, SvgEvents>;
1552
+ "feFuncB": Tag<SvgCoreAttrs, SvgEvents>;
1553
+ "feFuncG": Tag<SvgCoreAttrs, SvgEvents>;
1554
+ "feFuncR": Tag<SvgCoreAttrs, SvgEvents>;
1555
+ "feGaussianBlur": Tag<SvgCoreAttrs, SvgEvents>;
1556
+ "feImage": Tag<SvgCoreAttrs, SvgEvents>;
1557
+ "feMerge": Tag<SvgCoreAttrs, SvgEvents>;
1558
+ "feMergeNode": Tag<SvgCoreAttrs, SvgEvents>;
1559
+ "feMorphology": Tag<SvgCoreAttrs, SvgEvents>;
1560
+ "feOffset": Tag<SvgCoreAttrs, SvgEvents>;
1561
+ "fePointLight": Tag<SvgCoreAttrs, SvgEvents>;
1562
+ "feSpecularLighting": Tag<SvgCoreAttrs, SvgEvents>;
1563
+ "feSpotLight": Tag<SvgCoreAttrs, SvgEvents>;
1564
+ "feTile": Tag<SvgCoreAttrs, SvgEvents>;
1565
+ "feTurbulence": Tag<SvgCoreAttrs, SvgEvents>;
1566
+ "filter": Tag<SvgCoreAttrs, SvgEvents>;
1567
+ "foreignObject": Tag<SvgForeignObjectAttrs, SvgEvents>;
1568
+ "g": Tag<Svg3in1Attrs, SvgEvents>;
1569
+ "image": Tag<SvgImageAttrs, SvgEvents>;
1570
+ "line": Tag<SvgLineAttrs, SvgEvents>;
1571
+ "linearGradient": Tag<SvgCoreAttrs, SvgEvents>;
1572
+ "marker": Tag<SvgMarkerAttrs, SvgEvents>;
1573
+ "mask": Tag<SvgCoreAttrs, SvgEvents>;
1574
+ "metadata": Tag<SvgCoreAttrs, SvgEvents>;
1575
+ "mpath": Tag<SvgCoreAttrs, SvgEvents>;
1576
+ "path": Tag<SvgPathAttrs, SvgEvents>;
1577
+ "pattern": Tag<SvgCoreAttrs, SvgEvents>;
1578
+ "polygon": Tag<SvgCoreAttrs, SvgEvents>;
1579
+ "polyline": Tag<SvgPolygonAttrs, SvgEvents>;
1580
+ "radialGradient": Tag<SvgCoreAttrs, SvgEvents>;
1581
+ "rect": Tag<SvgRectAttrs, SvgEvents>;
1582
+ "script": Tag<SvgCoreAttrs, SvgEvents>;
1583
+ "set": Tag<SvgCoreAttrs, SvgEvents>;
1584
+ "stop": Tag<SvgCoreAttrs, SvgEvents>;
1585
+ "style": Tag<SvgCoreAttrs, SvgEvents>;
1586
+ "svg": Tag<SvgSvgAttrs, SvgEvents>;
1587
+ "switch": Tag<Svg3in1Attrs, SvgEvents>;
1588
+ "symbol": Tag<SvgCoreAttrs, SvgEvents>;
1589
+ "text": Tag<SvgCommonTextAttrs, SvgEvents>;
1590
+ "textPath": Tag<SvgTextPathAttrs, SvgEvents>;
1591
+ "title": Tag<SvgCoreAttrs, SvgEvents>;
1592
+ "tspan": Tag<SvgCommonTextAttrs, SvgEvents>;
1593
+ "use": Tag<SvgUseAttrs, SvgEvents>;
1594
+ "view": Tag<SvgViewAttrs, SvgEvents>;
1595
+ }
1596
+ declare type SvgTag = HtmlAndSvgEvents;
1597
+ declare interface SvgATag extends SvgTag {
1598
+ rel: string;
1599
+ }
1600
+ declare interface SvgSvgTag extends SvgTag {
1601
+ currentScale: number;
1602
+ }
1603
+ declare interface SvgTagNameMap {
1604
+ "a": SvgATag;
1605
+ "animate": SvgTag;
1606
+ "animateMotion": SvgTag;
1607
+ "animateTransform": SvgTag;
1608
+ "circle": SvgTag;
1609
+ "clipPath": SvgTag;
1610
+ "defs": SvgTag;
1611
+ "desc": SvgTag;
1612
+ "ellipse": SvgTag;
1613
+ "feBlend": SvgTag;
1614
+ "feColorMatrix": SvgTag;
1615
+ "feComponentTransfer": SvgTag;
1616
+ "feComposite": SvgTag;
1617
+ "feConvolveMatrix": SvgTag;
1618
+ "feDiffuseLighting": SvgTag;
1619
+ "feDisplacementMap": SvgTag;
1620
+ "feDistantLight": SvgTag;
1621
+ "feDropShadow": SvgTag;
1622
+ "feFlood": SvgTag;
1623
+ "feFuncA": SvgTag;
1624
+ "feFuncB": SvgTag;
1625
+ "feFuncG": SvgTag;
1626
+ "feFuncR": SvgTag;
1627
+ "feGaussianBlur": SvgTag;
1628
+ "feImage": SvgTag;
1629
+ "feMerge": SvgTag;
1630
+ "feMergeNode": SvgTag;
1631
+ "feMorphology": SvgTag;
1632
+ "feOffset": SvgTag;
1633
+ "fePointLight": SvgTag;
1634
+ "feSpecularLighting": SvgTag;
1635
+ "feSpotLight": SvgTag;
1636
+ "feTile": SvgTag;
1637
+ "feTurbulence": SvgTag;
1638
+ "filter": SvgTag;
1639
+ "foreignObject": SvgTag;
1640
+ "g": SvgTag;
1641
+ "image": SvgTag;
1642
+ "line": SvgTag;
1643
+ "linearGradient": SvgTag;
1644
+ "marker": SvgTag;
1645
+ "mask": SvgTag;
1646
+ "metadata": SvgTag;
1647
+ "mpath": SvgTag;
1648
+ "path": SvgTag;
1649
+ "pattern": SvgTag;
1650
+ "polygon": SvgTag;
1651
+ "polyline": SvgTag;
1652
+ "radialGradient": SvgTag;
1653
+ "rect": SvgTag;
1654
+ "script": SvgTag;
1655
+ "set": SvgTag;
1656
+ "stop": SvgTag;
1657
+ "style": SvgTag;
1658
+ "svg": SvgSvgTag;
1659
+ "switch": SvgTag;
1660
+ "symbol": SvgTag;
1661
+ "text": SvgTag;
1662
+ "textPath": SvgTag;
1663
+ "title": SvgTag;
1664
+ "tspan": SvgTag;
1665
+ "use": SvgTag;
1666
+ "view": SvgTag;
1667
+ }
1668
+
1669
+
1670
+
1671
+ declare type AcceptedTagsMap = TagNameMap & SvgTagNameMap;
1672
+ declare type AcceptedTagsSpec = HtmlTagMap & SvgTagMap;
1673
+
1674
+
1675
+ declare type EventHandler<T> = (ev: T) => any;
1676
+ declare interface Tag<Attrs, Events> {
1677
+ attrs: Attrs;
1678
+ events: Events;
1679
+ }
1680
+ declare type TagEvents = {
1681
+ [K : string]: EventHandler<HTMLElementEventMap[K]> | undefined;
1682
+ };
1683
+ declare interface TagAttrs {
1684
+ id: string;
1685
+ accesskey: string;
1686
+ autocapitalize: "off" | "none" | "on" | "sentences" | "words" | "characters";
1687
+ autofocus: "" | boolean;
1688
+ contenteditable: "true" | "false" | "" | boolean;
1689
+ dir: "ltr" | "rtl" | "auto";
1690
+ draggable: "true" | "false" | "" | boolean;
1691
+ enterkeyhint: "enter" | "done" | "go" | "next" | "previous" | "search" | "send";
1692
+ hidden: "until-found" | "hidden" | "" | boolean;
1693
+ inert: boolean;
1694
+ inputmode: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search";
1695
+ is: string;
1696
+ itemid: string;
1697
+ itemprop: string;
1698
+ itemref: string;
1699
+ itemscope: boolean;
1700
+ itemtype: string;
1701
+ lang: string;
1702
+ nonce: string;
1703
+ spellcheck: "true" | "false" | "" | boolean;
1704
+ tabindex: number;
1705
+ title: string;
1706
+ translate: "yes" | "no" | "" | boolean;
1707
+ }
1708
+ declare interface MediaTagAttrs extends TagAttrs {
1709
+ src: string;
1710
+ crossorigin: "anonymous" | "use-credentials" | "" | boolean;
1711
+ preload: "none" | "metadata" | "auto";
1712
+ autoplay: boolean;
1713
+ loop: boolean;
1714
+ muted: boolean;
1715
+ controls: boolean;
1716
+ }
1717
+ declare type MediaEvents = {
1718
+ [K : string]: EventHandler<HTMLMediaElementEventMap[K]> | undefined;
1719
+ };
1720
+ declare type VideoEvents = {
1721
+ [K : string]: EventHandler<HTMLVideoElementEventMap[K]> | undefined;
1722
+ };
1723
+ declare interface BaseAttrs extends TagAttrs {
1724
+ href: string;
1725
+ target: string;
1726
+ }
1727
+ declare interface LinkAttrs extends TagAttrs {
1728
+ href: string;
1729
+ crossorigin: "anonymous" | "use-credentials" | "" | boolean;
1730
+ rel: string;
1731
+ media: string;
1732
+ integrity: string;
1733
+ hreflang: string;
1734
+ type: string;
1735
+ referrerpolicy: string;
1736
+ sizes: string;
1737
+ imagesrcset: string;
1738
+ imagesizes: string;
1739
+ as: string;
1740
+ blocking: boolean;
1741
+ color: string;
1742
+ }
1743
+ declare interface MetaAttrs extends TagAttrs {
1744
+ name: string;
1745
+ 'http-equiv': string;
1746
+ content: string;
1747
+ charset: string;
1748
+ media: string;
1749
+ }
1750
+ declare interface StyleAttrs extends TagAttrs {
1751
+ media: string;
1752
+ blocking: string;
1753
+ }
1754
+ declare type BodyEvents = {
1755
+ [K : string]: EventHandler<HTMLBodyElementEventMap[K]> | undefined;
1756
+ };
1757
+ declare interface BlockQuoteAttrs extends TagAttrs {
1758
+ cite: string;
1759
+ }
1760
+ declare interface OlAttrs extends TagAttrs {
1761
+ reversed: boolean;
1762
+ start: number;
1763
+ type: "1" | "a" | "A" | "i" | "I";
1764
+ }
1765
+ declare interface AAttrs extends TagAttrs {
1766
+ href: string;
1767
+ target: string;
1768
+ download: string;
1769
+ ping: string;
1770
+ hreflang: string;
1771
+ type: string;
1772
+ referrerpolicy: string;
1773
+ }
1774
+ declare interface QAttrs extends TagAttrs {
1775
+ cite: string;
1776
+ }
1777
+ declare interface DataAttr extends TagAttrs {
1778
+ value: string;
1779
+ }
1780
+ declare interface BdoAttrs extends TagAttrs {
1781
+ dir: "ltr" | "rtl";
1782
+ }
1783
+ declare interface SourceAttrs extends TagAttrs {
1784
+ type: string;
1785
+ src: string;
1786
+ srcset: string;
1787
+ sizes: string;
1788
+ media: string;
1789
+ width: number;
1790
+ height: number;
1791
+ }
1792
+ declare interface ImgAttrs extends TagAttrs {
1793
+ alt: string;
1794
+ src: string;
1795
+ srcset: string;
1796
+ sizes: string;
1797
+ crossorigin: "anonymous" | "use-credentials" | "" | boolean;
1798
+ usemap: string;
1799
+ ismap: string;
1800
+ width: number;
1801
+ height: number;
1802
+ referrerpolicy: string;
1803
+ decoding: string;
1804
+ loading: string;
1805
+ }
1806
+ declare interface IframeAttrs extends TagAttrs {
1807
+ src: string;
1808
+ srcdoc: string;
1809
+ name: string;
1810
+ sandbox: string;
1811
+ allow: string;
1812
+ allowfullscreen: string;
1813
+ width: number;
1814
+ height: number;
1815
+ referrerpolicy: string;
1816
+ loading: string;
1817
+ }
1818
+ declare interface EmbedAttrs extends TagAttrs {
1819
+ src: string;
1820
+ type: string;
1821
+ width: number;
1822
+ height: number;
1823
+ }
1824
+ declare interface ObjectAttrs extends TagAttrs {
1825
+ data: string;
1826
+ type: string;
1827
+ name: string;
1828
+ form: string;
1829
+ width: number;
1830
+ height: number;
1831
+ }
1832
+ declare interface ParamAttrs extends TagAttrs {
1833
+ name: string;
1834
+ value: string;
1835
+ }
1836
+ declare interface VideoAttrs extends MediaTagAttrs {
1837
+ poster: string;
1838
+ playsinline: boolean;
1839
+ width: number;
1840
+ height: number;
1841
+ }
1842
+ declare interface TrackAttrs extends TagAttrs {
1843
+ kind: string;
1844
+ src: string;
1845
+ srclang: string;
1846
+ label: string;
1847
+ defautl: boolean;
1848
+ }
1849
+ declare interface MapAttrs extends TagAttrs {
1850
+ name: string;
1851
+ }
1852
+ declare interface AreaAttrs extends TagAttrs {
1853
+ alt: string;
1854
+ coords: string;
1855
+ shape: string;
1856
+ href: string;
1857
+ target: string;
1858
+ download: string;
1859
+ ping: string;
1860
+ rel: string;
1861
+ referrerpolicy: string;
1862
+ }
1863
+ declare interface ColAttrs extends TagAttrs {
1864
+ span: number;
1865
+ }
1866
+ declare interface TdAttrs extends TagAttrs {
1867
+ colspan: number;
1868
+ rowspan: number;
1869
+ headers: string;
1870
+ }
1871
+ declare interface ThAttrs extends TdAttrs {
1872
+ scope: string;
1873
+ abbr: string;
1874
+ }
1875
+ declare interface FormAttrs extends TagAttrs {
1876
+ 'accept-charset': string;
1877
+ action: string;
1878
+ autocomplete: string;
1879
+ enctype: string;
1880
+ method: string;
1881
+ name: string;
1882
+ novalidate: string;
1883
+ target: string;
1884
+ rel: string;
1885
+ }
1886
+ declare interface LabelAttrs extends TagAttrs {
1887
+ for: string;
1888
+ }
1889
+ declare interface InputAttrs extends TagAttrs {
1890
+ accept: string;
1891
+ alt: string;
1892
+ autocomplete: boolean;
1893
+ checked: boolean;
1894
+ dirname: string;
1895
+ disabled: boolean;
1896
+ form: string;
1897
+ formaction: string;
1898
+ formenctype: string;
1899
+ formmethod: string;
1900
+ formnovalidate: string;
1901
+ formtarget: string;
1902
+ height: number;
1903
+ list: string;
1904
+ max: number;
1905
+ maxlength: number;
1906
+ min: number;
1907
+ minlength: number;
1908
+ multiple: boolean;
1909
+ name: string;
1910
+ pattern: string;
1911
+ placeholder: string;
1912
+ readonly: string;
1913
+ required: string;
1914
+ size: number;
1915
+ src: string;
1916
+ step: string;
1917
+ type: string;
1918
+ width: number;
1919
+ }
1920
+ declare interface ButtonAttrs extends TagAttrs {
1921
+ disabled: boolean;
1922
+ form: string;
1923
+ formaction: string;
1924
+ formenctype: string;
1925
+ formmethod: string;
1926
+ formnovalidate: string;
1927
+ formtarget: string;
1928
+ name: string;
1929
+ type: string;
1930
+ value: string;
1931
+ }
1932
+ declare interface SelectAttrs extends TagAttrs {
1933
+ autocomplete: boolean;
1934
+ disabled: boolean;
1935
+ form: string;
1936
+ multiple: boolean;
1937
+ name: string;
1938
+ required: boolean;
1939
+ size: number;
1940
+ }
1941
+ declare interface OptgroupAttrs extends TagAttrs {
1942
+ disabled: boolean;
1943
+ label: string;
1944
+ }
1945
+ declare interface OptionAttrs extends TagAttrs {
1946
+ disabled: boolean;
1947
+ label: string;
1948
+ selected: boolean;
1949
+ value: string;
1950
+ }
1951
+ declare interface TextareaAttrs extends TagAttrs {
1952
+ autocomplete: boolean;
1953
+ cols: number;
1954
+ dirname: string;
1955
+ disabled: boolean;
1956
+ form: string;
1957
+ maxlength: number;
1958
+ minlength: number;
1959
+ name: string;
1960
+ placeholder: string;
1961
+ readonly: boolean;
1962
+ required: boolean;
1963
+ rows: number;
1964
+ wrap: string;
1965
+ }
1966
+ declare interface OutputAttrs extends TagAttrs {
1967
+ for: string;
1968
+ form: string;
1969
+ name: string;
1970
+ }
1971
+ declare interface ProgressAttrs extends TagAttrs {
1972
+ value: number;
1973
+ max: number;
1974
+ }
1975
+ declare interface MeterAttrs extends TagAttrs {
1976
+ value: number;
1977
+ min: number;
1978
+ max: number;
1979
+ low: number;
1980
+ high: number;
1981
+ optimum: number;
1982
+ }
1983
+ declare interface FieldsetAttrs extends TagAttrs {
1984
+ disabled: boolean;
1985
+ form: string;
1986
+ name: string;
1987
+ }
1988
+ declare interface DetailsAttrs extends TagAttrs {
1989
+ open: boolean;
1990
+ }
1991
+ declare interface HtmlTagMap {
1992
+ "a": Tag<AAttrs, TagEvents>;
1993
+ "abbr": Tag<TagAttrs, TagEvents>;
1994
+ "address": Tag<TagAttrs, TagEvents>;
1995
+ "area": Tag<AreaAttrs, TagEvents>;
1996
+ "article": Tag<TagAttrs, TagEvents>;
1997
+ "aside": Tag<TagAttrs, TagEvents>;
1998
+ "audio": Tag<MediaTagAttrs, MediaEvents>;
1999
+ "b": Tag<TagAttrs, TagEvents>;
2000
+ "base": Tag<BaseAttrs, TagEvents>;
2001
+ "bdi": Tag<TagAttrs, TagEvents>;
2002
+ "bdo": Tag<BdoAttrs, TagEvents>;
2003
+ "blockquote": Tag<BlockQuoteAttrs, TagEvents>;
2004
+ "body": Tag<TagAttrs, BodyEvents>;
2005
+ "br": Tag<TagAttrs, TagEvents>;
2006
+ "button": Tag<ButtonAttrs, TagEvents>;
2007
+ "canvas": Tag<TagAttrs, TagEvents>;
2008
+ "caption": Tag<TagAttrs, TagEvents>;
2009
+ "cite": Tag<TagAttrs, TagEvents>;
2010
+ "code": Tag<TagAttrs, TagEvents>;
2011
+ "col": Tag<ColAttrs, TagEvents>;
2012
+ "colgroup": Tag<ColAttrs, TagEvents>;
2013
+ "data": Tag<DataAttr, TagEvents>;
2014
+ "datalist": Tag<TagAttrs, TagEvents>;
2015
+ "dd": Tag<TagAttrs, TagEvents>;
2016
+ "del": Tag<TagAttrs, TagEvents>;
2017
+ "details": Tag<DetailsAttrs, TagEvents>;
2018
+ "dfn": Tag<TagAttrs, TagEvents>;
2019
+ "dialog": Tag<TagAttrs, TagEvents>;
2020
+ "dir": Tag<TagAttrs, TagEvents>;
2021
+ "div": Tag<TagAttrs, TagEvents>;
2022
+ "dl": Tag<TagAttrs, TagEvents>;
2023
+ "dt": Tag<TagAttrs, TagEvents>;
2024
+ "em": Tag<TagAttrs, TagEvents>;
2025
+ "embed": Tag<EmbedAttrs, TagEvents>;
2026
+ "fieldset": Tag<FieldsetAttrs, TagEvents>;
2027
+ "figcaption": Tag<TagAttrs, TagEvents>;
2028
+ "figure": Tag<TagAttrs, TagEvents>;
2029
+ "font": Tag<TagAttrs, TagEvents>;
2030
+ "footer": Tag<TagAttrs, TagEvents>;
2031
+ "form": Tag<FormAttrs, TagEvents>;
2032
+ "frame": Tag<TagAttrs, TagEvents>;
2033
+ "frameset": Tag<TagAttrs, TagEvents>;
2034
+ "h1": Tag<TagAttrs, TagEvents>;
2035
+ "h2": Tag<TagAttrs, TagEvents>;
2036
+ "h3": Tag<TagAttrs, TagEvents>;
2037
+ "h4": Tag<TagAttrs, TagEvents>;
2038
+ "h5": Tag<TagAttrs, TagEvents>;
2039
+ "h6": Tag<TagAttrs, TagEvents>;
2040
+ "head": Tag<TagAttrs, TagEvents>;
2041
+ "header": Tag<TagAttrs, TagEvents>;
2042
+ "hgroup": Tag<TagAttrs, TagEvents>;
2043
+ "hr": Tag<TagAttrs, TagEvents>;
2044
+ "html": Tag<TagAttrs, TagEvents>;
2045
+ "i": Tag<TagAttrs, TagEvents>;
2046
+ "iframe": Tag<IframeAttrs, TagEvents>;
2047
+ "img": Tag<ImgAttrs, TagEvents>;
2048
+ "input": Tag<InputAttrs, TagEvents>;
2049
+ "ins": Tag<TagAttrs, TagEvents>;
2050
+ "kbd": Tag<TagAttrs, TagEvents>;
2051
+ "label": Tag<LabelAttrs, TagEvents>;
2052
+ "legend": Tag<TagAttrs, TagEvents>;
2053
+ "li": Tag<TagAttrs, TagEvents>;
2054
+ "link": Tag<LinkAttrs, TagEvents>;
2055
+ "main": Tag<TagAttrs, TagEvents>;
2056
+ "map": Tag<MapAttrs, TagEvents>;
2057
+ "mark": Tag<TagAttrs, TagEvents>;
2058
+ "marquee": Tag<TagAttrs, TagEvents>;
2059
+ "menu": Tag<TagAttrs, TagEvents>;
2060
+ "meta": Tag<MetaAttrs, TagEvents>;
2061
+ "meter": Tag<MeterAttrs, TagEvents>;
2062
+ "nav": Tag<TagAttrs, TagEvents>;
2063
+ "noscript": Tag<TagAttrs, TagEvents>;
2064
+ "object": Tag<ObjectAttrs, TagEvents>;
2065
+ "ol": Tag<OlAttrs, TagEvents>;
2066
+ "optgroup": Tag<OptgroupAttrs, TagEvents>;
2067
+ "option": Tag<OptionAttrs, TagEvents>;
2068
+ "output": Tag<OutputAttrs, TagEvents>;
2069
+ "p": Tag<TagAttrs, TagEvents>;
2070
+ "param": Tag<ParamAttrs, TagEvents>;
2071
+ "picture": Tag<TagAttrs, TagEvents>;
2072
+ "pre": Tag<TagAttrs, TagEvents>;
2073
+ "progress": Tag<ProgressAttrs, TagEvents>;
2074
+ "q": Tag<QAttrs, TagEvents>;
2075
+ "rp": Tag<TagAttrs, TagEvents>;
2076
+ "rt": Tag<TagAttrs, TagEvents>;
2077
+ "ruby": Tag<TagAttrs, TagEvents>;
2078
+ "s": Tag<TagAttrs, TagEvents>;
2079
+ "samp": Tag<TagAttrs, TagEvents>;
2080
+ "script": Tag<TagAttrs, TagEvents>;
2081
+ "section": Tag<TagAttrs, TagEvents>;
2082
+ "select": Tag<SelectAttrs, TagEvents>;
2083
+ "slot": Tag<TagAttrs, TagEvents>;
2084
+ "small": Tag<TagAttrs, TagEvents>;
2085
+ "source": Tag<SourceAttrs, TagEvents>;
2086
+ "span": Tag<TagAttrs, TagEvents>;
2087
+ "strong": Tag<TagAttrs, TagEvents>;
2088
+ "style": Tag<StyleAttrs, TagEvents>;
2089
+ "sub": Tag<TagAttrs, TagEvents>;
2090
+ "summary": Tag<TagAttrs, TagEvents>;
2091
+ "sup": Tag<TagAttrs, TagEvents>;
2092
+ "table": Tag<TagAttrs, TagEvents>;
2093
+ "tbody": Tag<TagAttrs, TagEvents>;
2094
+ "td": Tag<TdAttrs, TagEvents>;
2095
+ "template": Tag<TagAttrs, TagEvents>;
2096
+ "textarea": Tag<TextareaAttrs, TagEvents>;
2097
+ "tfoot": Tag<TagAttrs, TagEvents>;
2098
+ "th": Tag<ThAttrs, TagEvents>;
2099
+ "thead": Tag<TagAttrs, TagEvents>;
2100
+ "time": Tag<TagAttrs, TagEvents>;
2101
+ "title": Tag<TagAttrs, TagEvents>;
2102
+ "tr": Tag<TagAttrs, TagEvents>;
2103
+ "track": Tag<TrackAttrs, TagEvents>;
2104
+ "u": Tag<TagAttrs, TagEvents>;
2105
+ "ul": Tag<TagAttrs, TagEvents>;
2106
+ "var": Tag<TagAttrs, TagEvents>;
2107
+ "video": Tag<VideoAttrs, VideoEvents>;
2108
+ "wbr": Tag<TagAttrs, TagEvents>;
2109
+ [K: string]: Tag<TagAttrs, TagEvents>;
2110
+ }
2111
+ declare type HtmlOrSvgTag = HTMLElement | SVGElement;
2112
+ declare interface HtmlAndSvgEvents {
2113
+ onabort?: ((this: HtmlOrSvgTag, ev: UIEvent) => any) | null;
2114
+ onanimationcancel?: ((this: HtmlOrSvgTag, ev: AnimationEvent) => any) | null;
2115
+ onanimationend?: ((this: HtmlOrSvgTag, ev: AnimationEvent) => any) | null;
2116
+ onanimationiteration?: ((this: HtmlOrSvgTag, ev: AnimationEvent) => any) | null;
2117
+ onanimationstart?: ((this: HtmlOrSvgTag, ev: AnimationEvent) => any) | null;
2118
+ onauxclick?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2119
+ onblur?: ((this: HtmlOrSvgTag, ev: FocusEvent) => any) | null;
2120
+ oncanplay?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2121
+ oncanplaythrough?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2122
+ onchange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2123
+ onclick?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2124
+ onclose?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2125
+ oncontextmenu?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2126
+ oncopy?: ((this: HtmlOrSvgTag, ev: ClipboardEvent) => any) | null;
2127
+ oncut?: ((this: HtmlOrSvgTag, ev: ClipboardEvent) => any) | null;
2128
+ oncuechange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2129
+ ondblclick?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2130
+ ondrag?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2131
+ ondragend?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2132
+ ondragenter?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2133
+ ondragleave?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2134
+ ondragover?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2135
+ ondragstart?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2136
+ ondrop?: ((this: HtmlOrSvgTag, ev: DragEvent) => any) | null;
2137
+ ondurationchange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2138
+ onemptied?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2139
+ onended?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2140
+ onerror?: ((event: Event | string, source?: string, lineno?: number, colno?: number, error?: Error) => any) | null;
2141
+ onfocus?: ((this: HtmlOrSvgTag, ev: FocusEvent) => any) | null;
2142
+ onformdata?: ((this: HtmlOrSvgTag, ev: FormDataEvent) => any) | null;
2143
+ onfullscreenchange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2144
+ onfullscreenerror?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2145
+ ongotpointercapture?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2146
+ oninput?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2147
+ oninvalid?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2148
+ onkeydown?: ((this: HtmlOrSvgTag, ev: KeyboardEvent) => any) | null;
2149
+ onkeypress?: ((this: HtmlOrSvgTag, ev: KeyboardEvent) => any) | null;
2150
+ onkeyup?: ((this: HtmlOrSvgTag, ev: KeyboardEvent) => any) | null;
2151
+ onload?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2152
+ onloadeddata?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2153
+ onloadedmetadata?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2154
+ onloadstart?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2155
+ onlostpointercapture?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2156
+ onmousedown?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2157
+ onmouseenter?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2158
+ onmouseleave?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2159
+ onmousemove?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2160
+ onmouseout?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2161
+ onmouseover?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2162
+ onmouseup?: ((this: HtmlOrSvgTag, ev: MouseEvent) => any) | null;
2163
+ onpaste?: ((this: HtmlOrSvgTag, ev: ClipboardEvent) => any) | null;
2164
+ onpause?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2165
+ onplay?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2166
+ onplaying?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2167
+ onpointercancel?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2168
+ onpointerdown?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2169
+ onpointerenter?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2170
+ onpointerleave?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2171
+ onpointermove?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2172
+ onpointerout?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2173
+ onpointerover?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2174
+ onpointerup?: ((this: HtmlOrSvgTag, ev: PointerEvent) => any) | null;
2175
+ onprogress?: ((this: HtmlOrSvgTag, ev: ProgressEvent) => any) | null;
2176
+ onratechange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2177
+ onreset?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2178
+ onresize?: ((this: HtmlOrSvgTag, ev: UIEvent) => any) | null;
2179
+ onscroll?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2180
+ onseeked?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2181
+ onseeking?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2182
+ onselect?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2183
+ onselectionchange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2184
+ onselectstart?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2185
+ onstalled?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2186
+ onsubmit?: ((this: HtmlOrSvgTag, ev: SubmitEvent) => any) | null;
2187
+ onsuspend?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2188
+ ontimeupdate?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2189
+ ontoggle?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2190
+ ontouchcancel?: ((this: HtmlOrSvgTag, ev: TouchEvent) => any) | null | undefined;
2191
+ ontouchend?: ((this: HtmlOrSvgTag, ev: TouchEvent) => any) | null | undefined;
2192
+ ontouchmove?: ((this: HtmlOrSvgTag, ev: TouchEvent) => any) | null | undefined;
2193
+ ontouchstart?: ((this: HtmlOrSvgTag, ev: TouchEvent) => any) | null | undefined;
2194
+ ontransitioncancel?: ((this: HtmlOrSvgTag, ev: TransitionEvent) => any) | null;
2195
+ ontransitionend?: ((this: HtmlOrSvgTag, ev: TransitionEvent) => any) | null;
2196
+ ontransitionrun?: ((this: HtmlOrSvgTag, ev: TransitionEvent) => any) | null;
2197
+ ontransitionstart?: ((this: HtmlOrSvgTag, ev: TransitionEvent) => any) | null;
2198
+ onvolumechange?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2199
+ onwaiting?: ((this: HtmlOrSvgTag, ev: Event) => any) | null;
2200
+ onwheel?: ((this: HtmlOrSvgTag, ev: WheelEvent) => any) | null;
2201
+ }
2202
+ declare interface HtmlTag extends HtmlAndSvgEvents {
2203
+ autofocus?: boolean;
2204
+ className?: string;
2205
+ nonce?: string | undefined;
2206
+ tabIndex?: number;
2207
+ accessKey?: string;
2208
+ autocapitalize?: string;
2209
+ dir?: string;
2210
+ draggable?: boolean;
2211
+ hidden?: boolean;
2212
+ innerText?: string;
2213
+ lang?: string;
2214
+ outerText?: string;
2215
+ spellcheck?: boolean;
2216
+ title?: string;
2217
+ translate?: boolean;
2218
+ }
2219
+ declare interface AnchorTag extends HtmlTag {
2220
+ download: string;
2221
+ hreflang: string;
2222
+ ping: string;
2223
+ referrerPolicy: string;
2224
+ rel: string;
2225
+ target: string;
2226
+ text: string;
2227
+ type: string;
2228
+ }
2229
+ declare interface AreaTag extends HtmlTag {
2230
+ alt: string;
2231
+ coords: string;
2232
+ download: string;
2233
+ ping: string;
2234
+ referrerPolicy: string;
2235
+ rel: string;
2236
+ shape: string;
2237
+ target: string;
2238
+ }
2239
+ declare interface MediaTag extends HtmlTag {
2240
+ autoplay?: boolean;
2241
+ controls?: boolean;
2242
+ crossOrigin?: string | null;
2243
+ currentTime?: number;
2244
+ defaultMuted?: boolean;
2245
+ defaultPlaybackRate?: number;
2246
+ disableRemotePlayback?: boolean;
2247
+ loop?: boolean;
2248
+ muted?: boolean;
2249
+ onencrypted?: ((this: HTMLMediaElement, ev: MediaEncryptedEvent) => any) | null;
2250
+ onwaitingforkey?: ((this: HTMLMediaElement, ev: Event) => any) | null;
2251
+ playbackRate?: number;
2252
+ preload?: "none" | "metadata" | "auto" | "";
2253
+ src?: string;
2254
+ srcObject?: MediaProvider | null;
2255
+ volume?: number;
2256
+ }
2257
+ declare interface BaseTag extends HtmlTag {
2258
+ href: string;
2259
+ target: string;
2260
+ }
2261
+ declare interface QuoteTag extends HtmlTag {
2262
+ cite: string;
2263
+ }
2264
+ declare interface ButtonTag extends HtmlTag {
2265
+ disabled: boolean;
2266
+ formAction: string;
2267
+ formEnctype: string;
2268
+ formMethod: string;
2269
+ formNoValidate: boolean;
2270
+ formTarget: string;
2271
+ name: string;
2272
+ type: string;
2273
+ value: string;
2274
+ }
2275
+ declare interface CanvasTag extends HtmlTag {
2276
+ height: number;
2277
+ width: number;
2278
+ }
2279
+ declare interface TableColTag extends HtmlTag {
2280
+ span: number;
2281
+ }
2282
+ declare interface DataTag extends HtmlTag {
2283
+ value: string;
2284
+ }
2285
+ declare interface ModTag extends HtmlTag {
2286
+ cite: string;
2287
+ dateTime: string;
2288
+ }
2289
+ declare interface DetailsTag extends HtmlTag {
2290
+ open: boolean;
2291
+ }
2292
+ declare interface EmbedTag extends HtmlTag {
2293
+ height: string;
2294
+ src: string;
2295
+ type: string;
2296
+ width: string;
2297
+ }
2298
+ declare interface FieldSetTag extends HtmlTag {
2299
+ disabled: boolean;
2300
+ name: string;
2301
+ }
2302
+ declare interface FormTag extends HtmlTag {
2303
+ acceptCharset: string;
2304
+ action: string;
2305
+ autocomplete: string;
2306
+ encoding: string;
2307
+ enctype: string;
2308
+ method: string;
2309
+ name: string;
2310
+ noValidate: boolean;
2311
+ target: string;
2312
+ }
2313
+ declare interface IFrameTag extends HtmlTag {
2314
+ allow: string;
2315
+ allowFullscreen: boolean;
2316
+ height: string;
2317
+ name: string;
2318
+ referrerPolicy: ReferrerPolicy;
2319
+ src: string;
2320
+ srcdoc: string;
2321
+ width: string;
2322
+ }
2323
+ declare interface ImageTag extends HtmlTag {
2324
+ alt: string;
2325
+ crossOrigin: string | null;
2326
+ decoding: "async" | "sync" | "auto";
2327
+ height: number;
2328
+ isMap: boolean;
2329
+ loading: string;
2330
+ referrerPolicy: string;
2331
+ sizes: string;
2332
+ src: string;
2333
+ srcset: string;
2334
+ useMap: string;
2335
+ width: number;
2336
+ }
2337
+ declare interface InputTag extends HtmlTag {
2338
+ accept: string;
2339
+ alt: string;
2340
+ autocomplete: string;
2341
+ capture: string;
2342
+ checked: boolean;
2343
+ defaultChecked: boolean;
2344
+ defaultValue: string;
2345
+ dirName: string;
2346
+ disabled: boolean;
2347
+ files: FileList | null;
2348
+ formAction: string;
2349
+ formEnctype: string;
2350
+ formMethod: string;
2351
+ formNoValidate: boolean;
2352
+ formTarget: string;
2353
+ height: number;
2354
+ indeterminate: boolean;
2355
+ max: string;
2356
+ maxLength: number;
2357
+ min: string;
2358
+ minLength: number;
2359
+ multiple: boolean;
2360
+ name: string;
2361
+ pattern: string;
2362
+ placeholder: string;
2363
+ readOnly: boolean;
2364
+ required: boolean;
2365
+ selectionDirection: "forward" | "backward" | "none" | null;
2366
+ selectionEnd: number | null;
2367
+ selectionStart: number | null;
2368
+ size: number;
2369
+ src: string;
2370
+ step: string;
2371
+ type: string;
2372
+ value: string;
2373
+ valueAsDate: Date | null;
2374
+ valueAsNumber: number;
2375
+ webkitdirectory: boolean;
2376
+ width: number;
2377
+ }
2378
+ declare interface LabelTag extends HtmlTag {
2379
+ htmlFor: string;
2380
+ }
2381
+ declare interface LITag extends HtmlTag {
2382
+ value: number;
2383
+ }
2384
+ declare interface LinkTag extends HtmlTag {
2385
+ as: string;
2386
+ crossOrigin: string | null;
2387
+ disabled: boolean;
2388
+ href: string;
2389
+ hreflang: string;
2390
+ imageSizes: string;
2391
+ imageSrcset: string;
2392
+ integrity: string;
2393
+ media: string;
2394
+ referrerPolicy: string;
2395
+ rel: string;
2396
+ type: string;
2397
+ }
2398
+ declare interface MapTag extends HtmlTag {
2399
+ name: string;
2400
+ }
2401
+ declare interface MeterTag extends HtmlTag {
2402
+ high: number;
2403
+ low: number;
2404
+ max: number;
2405
+ min: number;
2406
+ optimum: number;
2407
+ value: number;
2408
+ }
2409
+ declare interface ObjectTag extends HtmlTag {
2410
+ data: string;
2411
+ height: string;
2412
+ name: string;
2413
+ type: string;
2414
+ useMap: string;
2415
+ width: string;
2416
+ }
2417
+ declare interface OListTag extends HtmlTag {
2418
+ reversed: boolean;
2419
+ start: number;
2420
+ type: string;
2421
+ }
2422
+ declare interface OptGroupTag extends HtmlTag {
2423
+ disabled: boolean;
2424
+ label: string;
2425
+ }
2426
+ declare interface OptionTag extends HtmlTag {
2427
+ defaultSelected: boolean;
2428
+ disabled: boolean;
2429
+ label: string;
2430
+ selected: boolean;
2431
+ text: string;
2432
+ value: string;
2433
+ }
2434
+ declare interface OutputTag extends HtmlTag {
2435
+ defaultValue: string;
2436
+ name: string;
2437
+ value: string;
2438
+ }
2439
+ declare interface ParamTag extends HtmlTag {
2440
+ name: string;
2441
+ value: string;
2442
+ }
2443
+ declare interface ProgressTag extends HtmlTag {
2444
+ max: number;
2445
+ value: number;
2446
+ }
2447
+ declare interface ScriptTag extends HtmlTag {
2448
+ async: boolean;
2449
+ crossOrigin: string | null;
2450
+ defer: boolean;
2451
+ integrity: string;
2452
+ noModule: boolean;
2453
+ referrerPolicy: string;
2454
+ src: string;
2455
+ text: string;
2456
+ type: string;
2457
+ }
2458
+ declare interface SelectTag extends HtmlTag {
2459
+ autocomplete: string;
2460
+ disabled: boolean;
2461
+ length: number;
2462
+ multiple: boolean;
2463
+ name: string;
2464
+ required: boolean;
2465
+ selectedIndex: number;
2466
+ size: number;
2467
+ value: string;
2468
+ }
2469
+ declare interface SlotTag extends HtmlTag {
2470
+ name: string;
2471
+ }
2472
+ declare interface SourceTag extends HtmlTag {
2473
+ media: string;
2474
+ sizes: string;
2475
+ src: string;
2476
+ srcset: string;
2477
+ type: string;
2478
+ }
2479
+ declare interface StyleTag extends HtmlTag {
2480
+ media: string;
2481
+ }
2482
+ declare interface TableTag extends HtmlTag {
2483
+ caption: HTMLTableCaptionElement | null;
2484
+ tFoot: HTMLTableSectionElement | null;
2485
+ tHead: HTMLTableSectionElement | null;
2486
+ }
2487
+ declare interface TableCellTag extends HtmlTag {
2488
+ abbr: string;
2489
+ colSpan: number;
2490
+ headers: string;
2491
+ rowSpan: number;
2492
+ scope: string;
2493
+ }
2494
+ declare interface TextAreaTag extends HtmlTag {
2495
+ autocomplete: string;
2496
+ cols: number;
2497
+ defaultValue: string;
2498
+ dirName: string;
2499
+ disabled: boolean;
2500
+ maxLength: number;
2501
+ minLength: number;
2502
+ name: string;
2503
+ placeholder: string;
2504
+ readOnly: boolean;
2505
+ required: boolean;
2506
+ rows: number;
2507
+ selectionDirection: "forward" | "backward" | "none";
2508
+ selectionEnd: number;
2509
+ selectionStart: number;
2510
+ value: string;
2511
+ wrap: string;
2512
+ }
2513
+ declare interface TimeTag extends HtmlTag {
2514
+ dateTime: string;
2515
+ }
2516
+ declare interface TitleTag extends HtmlTag {
2517
+ text: string;
2518
+ }
2519
+ declare interface TrackTag extends HtmlTag {
2520
+ default: boolean;
2521
+ kind: string;
2522
+ label: string;
2523
+ src: string;
2524
+ srclang: string;
2525
+ }
2526
+ declare interface VideoTag extends MediaTag {
2527
+ disablePictureInPicture?: boolean;
2528
+ height?: number;
2529
+ onenterpictureinpicture?: ((this: HTMLVideoElement, ev: Event) => any) | null;
2530
+ onleavepictureinpicture?: ((this: HTMLVideoElement, ev: Event) => any) | null;
2531
+ playsInline?: boolean;
2532
+ poster?: string;
2533
+ width?: number;
2534
+ }
2535
+ declare interface TagNameMap {
2536
+ "a": AnchorTag;
2537
+ "abbr": HtmlTag;
2538
+ "address": HtmlTag;
2539
+ "area": AreaTag;
2540
+ "article": HtmlTag;
2541
+ "aside": HtmlTag;
2542
+ "audio": MediaTag;
2543
+ "b": HtmlTag;
2544
+ "base": BaseTag;
2545
+ "bdi": HtmlTag;
2546
+ "bdo": HtmlTag;
2547
+ "blockquote": QuoteTag;
2548
+ "body": HtmlTag;
2549
+ "br": HtmlTag;
2550
+ "button": ButtonTag;
2551
+ "canvas": CanvasTag;
2552
+ "caption": HtmlTag;
2553
+ "cite": HtmlTag;
2554
+ "code": HtmlTag;
2555
+ "col": TableColTag;
2556
+ "colgroup": TableColTag;
2557
+ "data": DataTag;
2558
+ "datalist": HtmlTag;
2559
+ "dd": HtmlTag;
2560
+ "del": ModTag;
2561
+ "details": DetailsTag;
2562
+ "dfn": HtmlTag;
2563
+ "dialog": HtmlTag;
2564
+ "div": HtmlTag;
2565
+ "dl": HtmlTag;
2566
+ "dt": HtmlTag;
2567
+ "em": HtmlTag;
2568
+ "embed": EmbedTag;
2569
+ "fieldset": FieldSetTag;
2570
+ "figcaption": HtmlTag;
2571
+ "figure": HtmlTag;
2572
+ "footer": HtmlTag;
2573
+ "form": FormTag;
2574
+ "h1": HtmlTag;
2575
+ "h2": HtmlTag;
2576
+ "h3": HtmlTag;
2577
+ "h4": HtmlTag;
2578
+ "h5": HtmlTag;
2579
+ "h6": HtmlTag;
2580
+ "head": HtmlTag;
2581
+ "header": HtmlTag;
2582
+ "hgroup": HtmlTag;
2583
+ "hr": HtmlTag;
2584
+ "html": HtmlTag;
2585
+ "i": HtmlTag;
2586
+ "iframe": IFrameTag;
2587
+ "img": ImageTag;
2588
+ "input": InputTag;
2589
+ "ins": ModTag;
2590
+ "kbd": HtmlTag;
2591
+ "label": LabelTag;
2592
+ "legend": HtmlTag;
2593
+ "li": LITag;
2594
+ "link": LinkTag;
2595
+ "main": HtmlTag;
2596
+ "map": MapTag;
2597
+ "mark": HtmlTag;
2598
+ "menu": HtmlTag;
2599
+ "meta": HtmlTag;
2600
+ "meter": MeterTag;
2601
+ "nav": HtmlTag;
2602
+ "noscript": HtmlTag;
2603
+ "object": ObjectTag;
2604
+ "ol": OListTag;
2605
+ "optgroup": OptGroupTag;
2606
+ "option": OptionTag;
2607
+ "output": OutputTag;
2608
+ "p": HtmlTag;
2609
+ "param": ParamTag;
2610
+ "picture": HtmlTag;
2611
+ "pre": HtmlTag;
2612
+ "progress": ProgressTag;
2613
+ "q": QuoteTag;
2614
+ "rp": HtmlTag;
2615
+ "rt": HtmlTag;
2616
+ "ruby": HtmlTag;
2617
+ "s": HtmlTag;
2618
+ "samp": HtmlTag;
2619
+ "script": ScriptTag;
2620
+ "section": HtmlTag;
2621
+ "select": SelectTag;
2622
+ "slot": SlotTag;
2623
+ "small": HtmlTag;
2624
+ "source": SourceTag;
2625
+ "span": HtmlTag;
2626
+ "strong": HtmlTag;
2627
+ "style": StyleTag;
2628
+ "sub": HtmlTag;
2629
+ "summary": HtmlTag;
2630
+ "sup": HtmlTag;
2631
+ "table": TableTag;
2632
+ "tbody": HtmlTag;
2633
+ "td": TableCellTag;
2634
+ "template": HtmlTag;
2635
+ "textarea": TextAreaTag;
2636
+ "tfoot": HtmlTag;
2637
+ "th": TableCellTag;
2638
+ "thead": HtmlTag;
2639
+ "time": TimeTag;
2640
+ "title": TitleTag;
2641
+ "tr": HtmlTag;
2642
+ "track": TrackTag;
2643
+ "u": HtmlTag;
2644
+ "ul": HtmlTag;
2645
+ "var": HtmlTag;
2646
+ "video": VideoTag;
2647
+ "wbr": HtmlTag;
2648
+ }
2649
+
2650
+
2651
+
844
2652
  }