@@ -174,6 +174,7 @@ class DomEvent {}
174174
175175extension DomEventExtension on DomEvent {
176176 external DomEventTarget ? get target;
177+ external DomEventTarget ? get currentTarget;
177178 external double ? get timeStamp;
178179 external String get type;
179180 external void preventDefault ();
@@ -461,6 +462,9 @@ class DomHTMLElement extends DomElement {}
461462
462463extension DomHTMLElementExtension on DomHTMLElement {
463464 external double get offsetWidth;
465+ external double get offsetLeft;
466+ external double get offsetTop;
467+ external DomHTMLElement ? get offsetParent;
464468}
465469
466470@JS ()
@@ -1089,6 +1093,8 @@ extension DomMouseEventExtension on DomMouseEvent {
10891093 external double get clientY;
10901094 external double get offsetX;
10911095 external double get offsetY;
1096+ external double get pageX;
1097+ external double get pageY;
10921098 DomPoint get client => DomPoint (clientX, clientY);
10931099 DomPoint get offset => DomPoint (offsetX, offsetY);
10941100 external double get button;
@@ -1312,7 +1318,10 @@ class DomStyleSheet {}
13121318class DomCSSStyleSheet extends DomStyleSheet {}
13131319
13141320extension DomCSSStyleSheetExtension on DomCSSStyleSheet {
1315- external DomCSSRuleList get cssRules;
1321+ Iterable <DomCSSRule > get cssRules =>
1322+ createDomListWrapper <DomCSSRule >(js_util
1323+ .getProperty <_DomList >(this , 'cssRules' ));
1324+
13161325 double insertRule (String rule, [int ? index]) => js_util
13171326 .callMethod <double >(
13181327 this , 'insertRule' ,
@@ -1323,6 +1332,12 @@ extension DomCSSStyleSheetExtension on DomCSSStyleSheet {
13231332@staticInterop
13241333class DomCSSRule {}
13251334
1335+ @JS ()
1336+ @staticInterop
1337+ extension DomCSSRuleExtension on DomCSSRule {
1338+ external String get cssText;
1339+ }
1340+
13261341@JS ()
13271342@staticInterop
13281343class DomScreen {}
@@ -1420,12 +1435,75 @@ extension DomMessageChannelExtension on DomMessageChannel {
14201435 external DomMessagePort get port2;
14211436}
14221437
1438+ /// ResizeObserver JS binding.
1439+ ///
1440+ /// See: https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver
14231441@JS ()
14241442@staticInterop
1425- class DomCSSRuleList {}
1443+ abstract class DomResizeObserver {}
14261444
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
14291507}
14301508
14311509/// A factory to create `TrustedTypePolicy` objects.
0 commit comments