33// found in the LICENSE file.
44
55import 'dart:async' ;
6+ import 'dart:math' as math;
67import 'dart:typed_data' ;
78
89import 'package:js/js.dart' ;
@@ -98,6 +99,7 @@ extension DomDocumentExtension on DomDocument {
9899 external DomText createTextNode (String data);
99100 external DomEvent createEvent (String eventType);
100101 external DomElement ? get activeElement;
102+ external DomElement ? elementFromPoint (int x, int y);
101103}
102104
103105@JS ()
@@ -109,10 +111,12 @@ extension DomHTMLDocumentExtension on DomHTMLDocument {
109111 external DomHTMLHeadElement ? get head;
110112 external DomHTMLBodyElement ? get body;
111113 external set title (String ? value);
114+ external String ? get title;
112115 Iterable <DomElement > getElementsByTagName (String tag) =>
113116 createDomListWrapper <DomElement >(js_util
114117 .callMethod <_DomList >(this , 'getElementsByTagName' , < Object > [tag]));
115118 external DomElement ? get activeElement;
119+ external DomElement ? getElementById (String id);
116120}
117121
118122@JS ('document' )
@@ -265,6 +269,7 @@ extension DomElementExtension on DomElement {
265269 js_util.setProperty <num >(this , 'scrollLeft' , value.round ());
266270 external DomTokenList get classList;
267271 external set className (String value);
272+ external String get className;
268273 external void blur ();
269274 List <DomNode > getElementsByTagName (String tag) =>
270275 js_util.callMethod <List <Object ?>>(
@@ -686,7 +691,7 @@ extension DomCanvasGradientExtension on DomCanvasGradient {
686691@staticInterop
687692class DomXMLHttpRequestEventTarget extends DomEventTarget {}
688693
689- @JS ('XMLHttpRequest' )
694+ @JS ()
690695@staticInterop
691696class DomXMLHttpRequest extends DomXMLHttpRequestEventTarget {}
692697
@@ -696,18 +701,20 @@ DomXMLHttpRequest createDomXMLHttpRequest() =>
696701
697702extension DomXMLHttpRequestExtension on DomXMLHttpRequest {
698703 external dynamic get response;
704+ external String ? get responseText;
699705 external String get responseType;
700706 external int ? get status;
701707 external set responseType (String value);
702708 void open (String method, String url, [bool ? async ]) => js_util.callMethod (
703709 this , 'open' , < Object > [method, url, if (async != null ) async ]);
704- external void send ();
710+ void send ([Object ? bodyOrData]) => js_util
711+ .callMethod (this , 'send' , < Object > [if (bodyOrData != null ) bodyOrData]);
705712}
706713
707- Future <DomXMLHttpRequest > domHttpRequest (String url, {String ? responseType}) {
714+ Future <DomXMLHttpRequest > domHttpRequest (String url,
715+ {String ? responseType, String method = 'GET' , dynamic sendData}) {
708716 final Completer <DomXMLHttpRequest > completer = Completer <DomXMLHttpRequest >();
709717 final DomXMLHttpRequest xhr = createDomXMLHttpRequest ();
710- const String method = 'GET' ;
711718 xhr.open (method, url, /* async */ true );
712719 if (responseType != null ) {
713720 xhr.responseType = responseType;
@@ -727,7 +734,7 @@ Future<DomXMLHttpRequest> domHttpRequest(String url, {String? responseType}) {
727734 }));
728735
729736 xhr.addEventListener ('error' , allowInterop (completer.completeError));
730- xhr.send ();
737+ xhr.send (sendData );
731738 return completer.future;
732739}
733740
@@ -778,6 +785,15 @@ extension DomRectReadOnlyExtension on DomRectReadOnly {
778785 external num get left;
779786}
780787
788+ DomRect createDomRectFromPoints (DomPoint a, DomPoint b) {
789+ final num left = math.min (a.x, b.x);
790+ final num width = math.max (a.x, b.x) - left;
791+ final num top = math.min (a.y, b.y);
792+ final num height = math.max (a.y, b.y) - top;
793+ return domCallConstructorString (
794+ 'DOMRect' , < Object > [left, top, width, height])! as DomRect ;
795+ }
796+
781797@JS ()
782798@staticInterop
783799class DomRect extends DomRectReadOnly {}
@@ -836,6 +852,8 @@ extension DomHTMLTextAreaElementExtension on DomHTMLTextAreaElement {
836852 external set name (String value);
837853 external int ? get selectionStart;
838854 external int ? get selectionEnd;
855+ external set selectionStart (int ? value);
856+ external set selectionEnd (int ? value);
839857 external String ? get value;
840858 void setSelectionRange (int start, int end, [String ? direction]) =>
841859 js_util.callMethod (this , 'setSelectionRange' ,
@@ -1098,18 +1116,27 @@ extension DomTouchExtension on DomTouch {
10981116 DomPoint get client => DomPoint (clientX, clientY);
10991117}
11001118
1119+ DomTouch createDomTouch ([Map <dynamic , dynamic >? init]) =>
1120+ js_util.callConstructor (domGetConstructor ('Touch' )! ,
1121+ < Object > [if (init != null ) js_util.jsify (init)]) as DomTouch ;
1122+
11011123DomTouchEvent createDomTouchEvent (String type, [Map <dynamic , dynamic >? init]) =>
11021124 js_util.callConstructor (domGetConstructor ('TouchEvent' )! ,
11031125 < Object > [type, if (init != null ) js_util.jsify (init)]);
11041126
11051127@JS ()
11061128@staticInterop
1107- class DomCompositionEvent {}
1129+ class DomCompositionEvent extends DomUIEvent {}
11081130
11091131extension DomCompositionEventExtension on DomCompositionEvent {
11101132 external String ? get data;
11111133}
11121134
1135+ DomCompositionEvent createDomCompositionEvent (String type, [Map <dynamic ,
1136+ dynamic >? options]) =>
1137+ js_util.callConstructor (domGetConstructor ('CompositionEvent' )! ,
1138+ < Object > [type, if (options != null ) js_util.jsify (options)]);
1139+
11131140@JS ()
11141141@staticInterop
11151142class DomHTMLInputElement extends DomHTMLElement {}
@@ -1127,6 +1154,8 @@ extension DomHTMLInputElementExtension on DomHTMLInputElement {
11271154 external set autocomplete (String value);
11281155 external int ? get selectionStart;
11291156 external int ? get selectionEnd;
1157+ external set selectionStart (int ? value);
1158+ external set selectionEnd (int ? value);
11301159 void setSelectionRange (int start, int end, [String ? direction]) =>
11311160 js_util.callMethod (this , 'setSelectionRange' ,
11321161 < Object > [start, end, if (direction != null ) direction]);
@@ -1225,6 +1254,7 @@ extension DomShadowRootExtension on DomShadowRoot {
12251254 external DomElement ? get host;
12261255 external String ? get mode;
12271256 external bool ? get delegatesFocus;
1257+ external DomElement ? elementFromPoint (int x, int y);
12281258}
12291259
12301260@JS ()
0 commit comments