@office-iss/react-native-win32 0.0.0-canary.299 → 0.0.0-canary.300

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 (99) hide show
  1. package/.flowconfig +3 -6
  2. package/CHANGELOG.json +46 -1
  3. package/CHANGELOG.md +19 -6
  4. package/IntegrationTests/IntegrationTestsApp.js +1 -1
  5. package/Libraries/Alert/RCTAlertManager.android.js +2 -0
  6. package/Libraries/Animated/Animated.d.ts +2 -0
  7. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  8. package/Libraries/Animated/Easing.js +2 -0
  9. package/Libraries/Animated/animations/Animation.js +14 -14
  10. package/Libraries/Animated/animations/TimingAnimation.js +2 -0
  11. package/Libraries/Animated/nodes/AnimatedNode.js +7 -7
  12. package/Libraries/Animated/nodes/AnimatedObject.js +7 -7
  13. package/Libraries/Animated/nodes/AnimatedProps.js +30 -30
  14. package/Libraries/Animated/nodes/AnimatedStyle.js +17 -17
  15. package/Libraries/Animated/nodes/AnimatedTransform.js +5 -5
  16. package/Libraries/Animated/nodes/AnimatedValue.js +18 -18
  17. package/Libraries/AppState/AppState.js +3 -3
  18. package/Libraries/BatchedBridge/MessageQueue.js +4 -0
  19. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  20. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
  21. package/Libraries/Components/Pressable/Pressable.js +10 -1
  22. package/Libraries/Components/Pressable/Pressable.win32.js +9 -0
  23. package/Libraries/Components/StatusBar/StatusBar.js +2 -2
  24. package/Libraries/Components/Switch/Switch.js +1 -1
  25. package/Libraries/Components/TextInput/TextInput.js +2 -2
  26. package/Libraries/Components/TextInput/TextInput.win32.js +2 -1
  27. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  28. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  29. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  30. package/Libraries/Components/Touchable/TouchableOpacity.js +1 -1
  31. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  32. package/Libraries/Components/View/View.js +86 -168
  33. package/Libraries/Core/ReactNativeVersion.js +37 -10
  34. package/Libraries/Core/Timers/queueMicrotask.js +1 -0
  35. package/Libraries/Core/setUpPerformance.js +2 -1
  36. package/Libraries/Interaction/InteractionManager.js +118 -171
  37. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -0
  38. package/Libraries/LogBox/Data/LogBoxData.js +4 -1
  39. package/Libraries/Modal/Modal.js +1 -1
  40. package/Libraries/NativeComponent/ViewConfig.js +1 -1
  41. package/Libraries/Network/XMLHttpRequest.js +18 -5
  42. package/Libraries/Pressability/Pressability.js +1 -1
  43. package/Libraries/Pressability/Pressability.win32.js +1 -1
  44. package/Libraries/ReactNative/AppRegistryImpl.js +4 -2
  45. package/Libraries/Renderer/implementations/ReactFabric-dev.js +38 -35
  46. package/Libraries/Renderer/implementations/ReactFabric-prod.js +51 -22
  47. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +54 -24
  48. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +36 -33
  49. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5 -5
  50. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5 -5
  51. package/Libraries/Renderer/shims/ReactFabric.js +3 -1
  52. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  53. package/Libraries/Renderer/shims/ReactNative.js +3 -1
  54. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  55. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  56. package/Libraries/Utilities/useMergeRefs.js +1 -1
  57. package/Libraries/promiseRejectionTrackingOptions.js +17 -31
  58. package/flow/HermesInternalType.js +114 -0
  59. package/flow/Stringish.js +14 -0
  60. package/flow/bom.js.flow +554 -0
  61. package/flow/console.js +49 -0
  62. package/flow/cssom.js.flow +575 -0
  63. package/flow/dom.js.flow +6289 -0
  64. package/flow/global.js +88 -0
  65. package/flow/prettier.js.flow +14 -0
  66. package/flow/streams.js.flow +140 -0
  67. package/index.js +5 -2
  68. package/index.win32.js +6 -2
  69. package/jest/mockComponent.js +1 -1
  70. package/jest/setup.js +11 -0
  71. package/overrides.json +11 -11
  72. package/package.json +19 -19
  73. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  74. package/src/private/animated/NativeAnimatedHelper.win32.js +8 -1
  75. package/src/private/animated/createAnimatedPropsHook.js +2 -49
  76. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -48
  77. package/src/private/components/virtualview/VirtualView.js +22 -6
  78. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +93 -0
  79. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -2
  80. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -51
  81. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +19 -0
  82. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -5
  83. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  84. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  85. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  86. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  87. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +19 -74
  88. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +0 -4
  89. package/src/private/webapis/performance/EventTiming.js +5 -9
  90. package/src/private/webapis/performance/Performance.js +251 -191
  91. package/src/private/webapis/performance/PerformanceObserver.js +8 -29
  92. package/src/private/webapis/performance/UserTiming.js +24 -23
  93. package/src/private/webapis/performance/UserTimingExtensibility.js.flow +38 -0
  94. package/src/private/webapis/performance/internals/Utilities.js +9 -0
  95. package/src/private/webapis/performance/specs/NativePerformance.js +19 -33
  96. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  97. package/Libraries/Interaction/InteractionManagerStub.js +0 -184
  98. package/Libraries/Interaction/TaskQueue.js +0 -197
  99. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -31
@@ -0,0 +1,575 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ declare class StyleSheet {
12
+ disabled: boolean;
13
+ +href: string;
14
+ +media: MediaList;
15
+ +ownerNode: Node;
16
+ +parentStyleSheet: ?StyleSheet;
17
+ +title: string;
18
+ +type: string;
19
+ }
20
+
21
+ declare class StyleSheetList {
22
+ @@iterator(): Iterator<StyleSheet>;
23
+ length: number;
24
+ [index: number]: StyleSheet;
25
+ }
26
+
27
+ declare class MediaList {
28
+ @@iterator(): Iterator<string>;
29
+ appendMedium(newMedium: string): void;
30
+ deleteMedium(oldMedium: string): void;
31
+ item(index: number): ?string;
32
+ length: number;
33
+ mediaText: string;
34
+ [index: number]: string;
35
+ }
36
+
37
+ declare class CSSStyleSheet extends StyleSheet {
38
+ +cssRules: CSSRuleList;
39
+ deleteRule(index: number): void;
40
+ insertRule(rule: string, index: number): number;
41
+ +ownerRule: ?CSSRule;
42
+ replace(text: string): Promise<CSSStyleSheet>;
43
+ replaceSync(text: string): void;
44
+ }
45
+
46
+ declare class CSSRule {
47
+ static CHARSET_RULE: number;
48
+ static COUNTER_STYLE_RULE: number;
49
+ cssText: string;
50
+ static DOCUMENT_RULE: number;
51
+ static FONT_FACE_RULE: number;
52
+ static FONT_FEATURE_VALUES_RULE: number;
53
+ static IMPORT_RULE: number;
54
+ static KEYFRAME_RULE: number;
55
+ static KEYFRAMES_RULE: number;
56
+ static MEDIA_RULE: number;
57
+ static NAMESPACE_RULE: number;
58
+ static PAGE_RULE: number;
59
+ +parentRule: ?CSSRule;
60
+ +parentStyleSheet: ?CSSStyleSheet;
61
+ static REGION_STYLE_RULE: number;
62
+ static STYLE_RULE: number;
63
+ static SUPPORTS_RULE: number;
64
+ +type: number;
65
+ static UNKNOWN_RULE: number;
66
+ static VIEWPORT_RULE: number;
67
+ }
68
+
69
+ declare class CSSKeyframeRule extends CSSRule {
70
+ keyText: string;
71
+ +style: CSSStyleDeclaration;
72
+ }
73
+
74
+ declare class CSSKeyframesRule extends CSSRule {
75
+ appendRule(rule: string): void;
76
+ +cssRules: CSSRuleList;
77
+ deleteRule(select: string): void;
78
+ findRule(select: string): CSSKeyframeRule | null;
79
+ name: string;
80
+ }
81
+
82
+ declare class CSSRuleList {
83
+ @@iterator(): Iterator<CSSRule>;
84
+ item(index: number): ?CSSRule;
85
+ length: number;
86
+ [index: number]: CSSRule;
87
+ }
88
+
89
+ declare class CSSStyleDeclaration {
90
+ @@iterator(): Iterator<string>;
91
+ /* DOM CSS Properties */
92
+ alignContent: string;
93
+ alignItems: string;
94
+ alignSelf: string;
95
+ all: string;
96
+ animation: string;
97
+ animationDelay: string;
98
+ animationDirection: string;
99
+ animationDuration: string;
100
+ animationFillMode: string;
101
+ animationIterationCount: string;
102
+ animationName: string;
103
+ animationPlayState: string;
104
+ animationTimingFunction: string;
105
+ backdropFilter: string;
106
+ backfaceVisibility: string;
107
+ background: string;
108
+ backgroundAttachment: string;
109
+ backgroundBlendMode: string;
110
+ backgroundClip: string;
111
+ backgroundColor: string;
112
+ backgroundImage: string;
113
+ backgroundOrigin: string;
114
+ backgroundPosition: string;
115
+ backgroundPositionX: string;
116
+ backgroundPositionY: string;
117
+ backgroundRepeat: string;
118
+ backgroundSize: string;
119
+ blockSize: string;
120
+ border: string;
121
+ borderBlockEnd: string;
122
+ borderBlockEndColor: string;
123
+ borderBlockEndStyle: string;
124
+ borderBlockEndWidth: string;
125
+ borderBlockStart: string;
126
+ borderBlockStartColor: string;
127
+ borderBlockStartStyle: string;
128
+ borderBlockStartWidth: string;
129
+ borderBottom: string;
130
+ borderBottomColor: string;
131
+ borderBottomLeftRadius: string;
132
+ borderBottomRightRadius: string;
133
+ borderBottomStyle: string;
134
+ borderBottomWidth: string;
135
+ borderCollapse: string;
136
+ borderColor: string;
137
+ borderImage: string;
138
+ borderImageOutset: string;
139
+ borderImageRepeat: string;
140
+ borderImageSlice: string;
141
+ borderImageSource: string;
142
+ borderImageWidth: string;
143
+ borderInlineEnd: string;
144
+ borderInlineEndColor: string;
145
+ borderInlineEndStyle: string;
146
+ borderInlineEndWidth: string;
147
+ borderInlineStart: string;
148
+ borderInlineStartColor: string;
149
+ borderInlineStartStyle: string;
150
+ borderInlineStartWidth: string;
151
+ borderLeft: string;
152
+ borderLeftColor: string;
153
+ borderLeftStyle: string;
154
+ borderLeftWidth: string;
155
+ borderRadius: string;
156
+ borderRight: string;
157
+ borderRightColor: string;
158
+ borderRightStyle: string;
159
+ borderRightWidth: string;
160
+ borderSpacing: string;
161
+ borderStyle: string;
162
+ borderTop: string;
163
+ borderTopColor: string;
164
+ borderTopLeftRadius: string;
165
+ borderTopRightRadius: string;
166
+ borderTopStyle: string;
167
+ borderTopWidth: string;
168
+ borderWidth: string;
169
+ bottom: string;
170
+ boxDecorationBreak: string;
171
+ boxShadow: string;
172
+ boxSizing: string;
173
+ breakAfter: string;
174
+ breakBefore: string;
175
+ breakInside: string;
176
+ captionSide: string;
177
+ clear: string;
178
+ clip: string;
179
+ clipPath: string;
180
+ color: string;
181
+ columnCount: string;
182
+ columnFill: string;
183
+ columnGap: string;
184
+ columnRule: string;
185
+ columnRuleColor: string;
186
+ columnRuleStyle: string;
187
+ columnRuleWidth: string;
188
+ columns: string;
189
+ columnSpan: string;
190
+ columnWidth: string;
191
+ contain: string;
192
+ content: string;
193
+ counterIncrement: string;
194
+ counterReset: string;
195
+ cssFloat: string;
196
+ cssText: string;
197
+ cursor: string;
198
+ direction: string;
199
+ display: string;
200
+ emptyCells: string;
201
+ filter: string;
202
+ flex: string;
203
+ flexBasis: string;
204
+ flexDirection: string;
205
+ flexFlow: string;
206
+ flexGrow: string;
207
+ flexShrink: string;
208
+ flexWrap: string;
209
+ float: string;
210
+ font: string;
211
+ fontFamily: string;
212
+ fontFeatureSettings: string;
213
+ fontKerning: string;
214
+ fontLanguageOverride: string;
215
+ fontSize: string;
216
+ fontSizeAdjust: string;
217
+ fontStretch: string;
218
+ fontStyle: string;
219
+ fontSynthesis: string;
220
+ fontVariant: string;
221
+ fontVariantAlternates: string;
222
+ fontVariantCaps: string;
223
+ fontVariantEastAsian: string;
224
+ fontVariantLigatures: string;
225
+ fontVariantNumeric: string;
226
+ fontVariantPosition: string;
227
+ fontWeight: string;
228
+ getPropertyPriority(property: string): string;
229
+ getPropertyValue(property: string): string;
230
+ grad: string;
231
+ grid: string;
232
+ gridArea: string;
233
+ gridAutoColumns: string;
234
+ gridAutoFlow: string;
235
+ gridAutoPosition: string;
236
+ gridAutoRows: string;
237
+ gridColumn: string;
238
+ gridColumnEnd: string;
239
+ gridColumnStart: string;
240
+ gridRow: string;
241
+ gridRowEnd: string;
242
+ gridRowStart: string;
243
+ gridTemplate: string;
244
+ gridTemplateAreas: string;
245
+ gridTemplateColumns: string;
246
+ gridTemplateRows: string;
247
+ height: string;
248
+ hyphens: string;
249
+ imageOrientation: string;
250
+ imageRendering: string;
251
+ imageResolution: string;
252
+ imeMode: string;
253
+ inherit: string;
254
+ initial: string;
255
+ inlineSize: string;
256
+ isolation: string;
257
+ item(index: number): string;
258
+ justifyContent: string;
259
+ left: string;
260
+ length: number;
261
+ letterSpacing: string;
262
+ lineBreak: string;
263
+ lineHeight: string;
264
+ listStyle: string;
265
+ listStyleImage: string;
266
+ listStylePosition: string;
267
+ listStyleType: string;
268
+ margin: string;
269
+ marginBlockEnd: string;
270
+ marginBlockStart: string;
271
+ marginBottom: string;
272
+ marginInlineEnd: string;
273
+ marginInlineStart: string;
274
+ marginLeft: string;
275
+ marginRight: string;
276
+ marginTop: string;
277
+ marks: string;
278
+ mask: string;
279
+ maskType: string;
280
+ maxBlockSize: string;
281
+ maxHeight: string;
282
+ maxInlineSize: string;
283
+ maxWidth: string;
284
+ minBlockSize: string;
285
+ minHeight: string;
286
+ minInlineSize: string;
287
+ minWidth: string;
288
+ mixBlendMode: string;
289
+ mozTransform: string;
290
+ mozTransformOrigin: string;
291
+ mozTransitionDelay: string;
292
+ mozTransitionDuration: string;
293
+ mozTransitionProperty: string;
294
+ mozTransitionTimingFunction: string;
295
+ objectFit: string;
296
+ objectPosition: string;
297
+ offsetBlockEnd: string;
298
+ offsetBlockStart: string;
299
+ offsetInlineEnd: string;
300
+ offsetInlineStart: string;
301
+ opacity: string;
302
+ order: string;
303
+ orphans: string;
304
+ outline: string;
305
+ outlineColor: string;
306
+ outlineOffset: string;
307
+ outlineStyle: string;
308
+ outlineWidth: string;
309
+ overflow: string;
310
+ overflowWrap: string;
311
+ overflowX: string;
312
+ overflowY: string;
313
+ padding: string;
314
+ paddingBlockEnd: string;
315
+ paddingBlockStart: string;
316
+ paddingBottom: string;
317
+ paddingInlineEnd: string;
318
+ paddingInlineStart: string;
319
+ paddingLeft: string;
320
+ paddingRight: string;
321
+ paddingTop: string;
322
+ pageBreakAfter: string;
323
+ pageBreakBefore: string;
324
+ pageBreakInside: string;
325
+ parentRule: CSSRule;
326
+ perspective: string;
327
+ perspectiveOrigin: string;
328
+ pointerEvents: string;
329
+ position: string;
330
+ quotes: string;
331
+ rad: string;
332
+ removeProperty(property: string): string;
333
+ resize: string;
334
+ right: string;
335
+ rubyAlign: string;
336
+ rubyMerge: string;
337
+ rubyPosition: string;
338
+ scrollBehavior: string;
339
+ scrollSnapCoordinate: string;
340
+ scrollSnapDestination: string;
341
+ scrollSnapPointsX: string;
342
+ scrollSnapPointsY: string;
343
+ scrollSnapType: string;
344
+ setProperty(property: string, value: ?string, priority: ?string): void;
345
+ setPropertyPriority(property: string, priority: string): void;
346
+ shapeImageThreshold: string;
347
+ shapeMargin: string;
348
+ shapeOutside: string;
349
+ tableLayout: string;
350
+ tabSize: string;
351
+ textAlign: string;
352
+ textAlignLast: string;
353
+ textCombineUpright: string;
354
+ textDecoration: string;
355
+ textDecorationColor: string;
356
+ textDecorationLine: string;
357
+ textDecorationStyle: string;
358
+ textIndent: string;
359
+ textOrientation: string;
360
+ textOverflow: string;
361
+ textRendering: string;
362
+ textShadow: string;
363
+ textTransform: string;
364
+ textUnderlinePosition: string;
365
+ top: string;
366
+ touchAction: string;
367
+ transform: string;
368
+ transformOrigin: string;
369
+ transformStyle: string;
370
+ transition: string;
371
+ transitionDelay: string;
372
+ transitionDuration: string;
373
+ transitionProperty: string;
374
+ transitionTimingFunction: string;
375
+ turn: string;
376
+ unicodeBidi: string;
377
+ unicodeRange: string;
378
+ userSelect: string;
379
+ verticalAlign: string;
380
+ visibility: string;
381
+ webkitBackdropFilter: string;
382
+ webkitOverflowScrolling: string;
383
+ webkitTransform: string;
384
+ webkitTransformOrigin: string;
385
+ webkitTransitionDelay: string;
386
+ webkitTransitionDuration: string;
387
+ webkitTransitionProperty: string;
388
+
389
+ webkitTransitionTimingFunction: string;
390
+ whiteSpace: string;
391
+ widows: string;
392
+ width: string;
393
+ willChange: string;
394
+ [index: number]: string;
395
+ wordBreak: string;
396
+ wordSpacing: string;
397
+ wordWrap: string;
398
+ writingMode: string;
399
+ zIndex: string;
400
+ }
401
+
402
+ declare class TransitionEvent extends Event {
403
+ elapsedTime: number; // readonly
404
+ propertyName: string; // readonly
405
+ pseudoElement: string; // readonly
406
+ }
407
+
408
+ type AnimationPlayState = 'idle' | 'running' | 'paused' | 'finished';
409
+ type AnimationReplaceState = 'active' | 'removed' | 'persisted';
410
+ type FillMode = 'none' | 'forwards' | 'backwards' | 'both' | 'auto';
411
+ type PlaybackDirection =
412
+ | 'normal'
413
+ | 'reverse'
414
+ | 'alternate'
415
+ | 'alternate-reverse';
416
+ type IterationCompositeOperation = 'replace' | 'accumulate';
417
+ type CompositeOperation = 'replace' | 'add' | 'accumulate';
418
+ type CompositeOperationOrAuto = CompositeOperation | 'auto';
419
+
420
+ declare class AnimationTimeline {
421
+ +currentTime: number | null;
422
+ }
423
+
424
+ type DocumentTimelineOptions = {
425
+ originTime?: DOMHighResTimeStamp,
426
+ ...
427
+ };
428
+
429
+ declare class DocumentTimeline extends AnimationTimeline {
430
+ constructor(options?: DocumentTimelineOptions): void;
431
+ }
432
+
433
+ type EffectTiming = {
434
+ delay: number,
435
+ direction: PlaybackDirection,
436
+ duration: number | string,
437
+ easing: string,
438
+ endDelay: number,
439
+ fill: FillMode,
440
+ iterations: number,
441
+ iterationStart: number,
442
+ ...
443
+ };
444
+
445
+ type OptionalEffectTiming = Partial<EffectTiming>;
446
+
447
+ type ComputedEffectTiming = EffectTiming & {
448
+ activeDuration: number,
449
+ currentIteration: number | null,
450
+ endTime: number,
451
+ localTime: number | null,
452
+ progress: number | null,
453
+ ...
454
+ };
455
+
456
+ declare class AnimationEffect {
457
+ getComputedTiming(): ComputedEffectTiming;
458
+ getTiming(): EffectTiming;
459
+ updateTiming(timing?: OptionalEffectTiming): void;
460
+ }
461
+
462
+ type Keyframe = {
463
+ composite?: CompositeOperationOrAuto,
464
+ easing?: string,
465
+ offset?: number | null,
466
+ [property: string]: string | number | null | void,
467
+ ...
468
+ };
469
+
470
+ type ComputedKeyframe = {
471
+ composite: CompositeOperationOrAuto,
472
+ computedOffset: number,
473
+ easing: string,
474
+ offset: number | null,
475
+ [property: string]: string | number | null | void,
476
+ ...
477
+ };
478
+
479
+ type PropertyIndexedKeyframes = {
480
+ composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[],
481
+ easing?: string | string[],
482
+ offset?: number | (number | null)[],
483
+ [property: string]:
484
+ | string
485
+ | string[]
486
+ | number
487
+ | null
488
+ | (number | null)[]
489
+ | void,
490
+ ...
491
+ };
492
+
493
+ type KeyframeEffectOptions = Partial<EffectTiming> & {
494
+ composite?: CompositeOperation,
495
+ iterationComposite?: IterationCompositeOperation,
496
+ ...
497
+ };
498
+
499
+ declare class KeyframeEffect extends AnimationEffect {
500
+ composite: CompositeOperation;
501
+ constructor(
502
+ target: Element | null,
503
+ keyframes: Keyframe[] | PropertyIndexedKeyframes | null,
504
+ options?: number | KeyframeEffectOptions,
505
+ ): void;
506
+
507
+ constructor(source: KeyframeEffect): void;
508
+ getKeyframes(): ComputedKeyframe[];
509
+ iterationComposite: IterationCompositeOperation;
510
+ setKeyframes(keyframes: Keyframe[] | PropertyIndexedKeyframes | null): void;
511
+ target: Element | null;
512
+ }
513
+
514
+ declare class Animation extends EventTarget {
515
+ cancel(): void;
516
+
517
+ commitStyles(): void;
518
+ constructor(
519
+ effect?: AnimationEffect | null,
520
+ timeline?: AnimationTimeline | null,
521
+ ): void;
522
+ currentTime: number | null;
523
+ effect: AnimationEffect | null;
524
+ finish(): void;
525
+ +finished: Promise<Animation>;
526
+ id: string;
527
+ oncancel: ?(ev: AnimationPlaybackEvent) => mixed;
528
+ onfinish: ?(ev: AnimationPlaybackEvent) => mixed;
529
+ onremove: ?(ev: AnimationPlaybackEvent) => mixed;
530
+ pause(): void;
531
+ +pending: boolean;
532
+ persist(): void;
533
+ play(): void;
534
+ playbackRate: number;
535
+ +playState: AnimationPlayState;
536
+ +ready: Promise<Animation>;
537
+ +replaceState: AnimationReplaceState;
538
+ reverse(): void;
539
+ startTime: number | null;
540
+ timeline: AnimationTimeline | null;
541
+ updatePlaybackRate(playbackRate: number): void;
542
+ }
543
+
544
+ type KeyframeAnimationOptions = KeyframeEffectOptions & {
545
+ id?: string,
546
+ ...
547
+ };
548
+
549
+ type GetAnimationsOptions = {
550
+ subtree?: boolean,
551
+ ...
552
+ };
553
+
554
+ interface Animatable {
555
+ animate(
556
+ keyframes: Keyframe[] | PropertyIndexedKeyframes | null,
557
+ options?: number | KeyframeAnimationOptions,
558
+ ): Animation;
559
+ getAnimations(options?: GetAnimationsOptions): Animation[];
560
+ }
561
+
562
+ type AnimationPlaybackEvent$Init = Event$Init & {
563
+ currentTime?: number | null,
564
+ timelineTime?: number | null,
565
+ ...
566
+ };
567
+
568
+ declare class AnimationPlaybackEvent extends Event {
569
+ constructor(
570
+ type: string,
571
+ animationEventInitDict?: AnimationPlaybackEvent$Init,
572
+ ): void;
573
+ +currentTime: number | null;
574
+ +timelineTime: number | null;
575
+ }