@@ -174,6 +174,7 @@ class DomEvent {}
174
174
175
175
extension DomEventExtension on DomEvent {
176
176
external DomEventTarget ? get target;
177
+ external DomEventTarget ? get currentTarget;
177
178
external double ? get timeStamp;
178
179
external String get type;
179
180
external void preventDefault ();
@@ -461,6 +462,9 @@ class DomHTMLElement extends DomElement {}
461
462
462
463
extension DomHTMLElementExtension on DomHTMLElement {
463
464
external double get offsetWidth;
465
+ external double get offsetLeft;
466
+ external double get offsetTop;
467
+ external DomHTMLElement ? get offsetParent;
464
468
}
465
469
466
470
@JS ()
@@ -1089,6 +1093,8 @@ extension DomMouseEventExtension on DomMouseEvent {
1089
1093
external double get clientY;
1090
1094
external double get offsetX;
1091
1095
external double get offsetY;
1096
+ external double get pageX;
1097
+ external double get pageY;
1092
1098
DomPoint get client => DomPoint (clientX, clientY);
1093
1099
DomPoint get offset => DomPoint (offsetX, offsetY);
1094
1100
external double get button;
@@ -1312,7 +1318,10 @@ class DomStyleSheet {}
1312
1318
class DomCSSStyleSheet extends DomStyleSheet {}
1313
1319
1314
1320
extension DomCSSStyleSheetExtension on DomCSSStyleSheet {
1315
- external DomCSSRuleList get cssRules;
1321
+ Iterable <DomCSSRule > get cssRules =>
1322
+ createDomListWrapper <DomCSSRule >(js_util
1323
+ .getProperty <_DomList >(this , 'cssRules' ));
1324
+
1316
1325
double insertRule (String rule, [int ? index]) => js_util
1317
1326
.callMethod <double >(
1318
1327
this , 'insertRule' ,
@@ -1323,6 +1332,12 @@ extension DomCSSStyleSheetExtension on DomCSSStyleSheet {
1323
1332
@staticInterop
1324
1333
class DomCSSRule {}
1325
1334
1335
+ @JS ()
1336
+ @staticInterop
1337
+ extension DomCSSRuleExtension on DomCSSRule {
1338
+ external String get cssText;
1339
+ }
1340
+
1326
1341
@JS ()
1327
1342
@staticInterop
1328
1343
class DomScreen {}
@@ -1420,12 +1435,75 @@ extension DomMessageChannelExtension on DomMessageChannel {
1420
1435
external DomMessagePort get port2;
1421
1436
}
1422
1437
1438
+ /// ResizeObserver JS binding.
1439
+ ///
1440
+ /// See: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver
1423
1441
@JS ()
1424
1442
@staticInterop
1425
- class DomCSSRuleList {}
1443
+ abstract class DomResizeObserver {}
1426
1444
1427
- extension DomCSSRuleListExtension on DomCSSRuleList {
1428
- external double get length;
1445
+ /// Creates a DomResizeObserver with a callback.
1446
+ ///
1447
+ /// Internally converts the `List<dynamic>` of entries into the expected
1448
+ /// `List<DomResizeObserverEntry>`
1449
+ DomResizeObserver ? createDomResizeObserver (DomResizeObserverCallbackFn fn) {
1450
+ return domCallConstructorString ('ResizeObserver' , < Object ? > [
1451
+ allowInterop (
1452
+ (List <dynamic > entries, DomResizeObserver observer) {
1453
+ fn (entries.cast <DomResizeObserverEntry >(), observer);
1454
+ }
1455
+ ),
1456
+ ]) as DomResizeObserver ? ;
1457
+ }
1458
+
1459
+ /// ResizeObserver instance methods.
1460
+ ///
1461
+ /// See: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver#instance_methods
1462
+ extension DomResizeObserverExtension on DomResizeObserver {
1463
+ external void disconnect ();
1464
+ external void observe (DomElement target, [DomResizeObserverObserveOptions options]);
1465
+ external void unobserve (DomElement target);
1466
+ }
1467
+
1468
+ /// Options object passed to the `observe` method of a [DomResizeObserver] .
1469
+ ///
1470
+ /// See: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/observe#parameters
1471
+ @JS ()
1472
+ @staticInterop
1473
+ @anonymous
1474
+ abstract class DomResizeObserverObserveOptions {
1475
+ external factory DomResizeObserverObserveOptions ({
1476
+ String box,
1477
+ });
1478
+ }
1479
+
1480
+ /// Type of the function used to create a Resize Observer.
1481
+ typedef DomResizeObserverCallbackFn = void Function (List <DomResizeObserverEntry > entries, DomResizeObserver observer);
1482
+
1483
+ /// The object passed to the [DomResizeObserverCallbackFn] , which allows access to the new dimensions of the observed element.
1484
+ ///
1485
+ /// See: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry
1486
+ @JS ()
1487
+ @staticInterop
1488
+ abstract class DomResizeObserverEntry {}
1489
+
1490
+ /// ResizeObserverEntry instance properties.
1491
+ ///
1492
+ /// See: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry#instance_properties
1493
+ extension DomResizeObserverEntryExtension on DomResizeObserverEntry {
1494
+ /// A DOMRectReadOnly object containing the new size of the observed element when the callback is run.
1495
+ ///
1496
+ /// Note that this is better supported than the above two properties, but it
1497
+ /// is left over from an earlier implementation of the Resize Observer API, is
1498
+ /// still included in the spec for web compat reasons, and may be deprecated
1499
+ /// in future versions.
1500
+ external DomRectReadOnly get contentRect;
1501
+ external DomElement get target;
1502
+ // Some more future getters:
1503
+ //
1504
+ // borderBoxSize
1505
+ // contentBoxSize
1506
+ // devicePixelContentBoxSize
1429
1507
}
1430
1508
1431
1509
/// A factory to create `TrustedTypePolicy` objects.
0 commit comments