OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 @JsName(name: 'window') | 5 @js.JS('window') |
6 library dom; | 6 library dom; |
7 | 7 |
8 @JsName() | 8 import 'package:js/js.dart' as js; |
| 9 |
| 10 @js.JS() |
9 class Window {} | 11 class Window {} |
10 | 12 |
11 class JsName { | |
12 /// The JavaScript name. | |
13 /// Used for classes and libraries. | |
14 /// Note that this could be an expression, e.g. `lib.TypeName` in JS, but it | |
15 /// should be kept simple, as it will be generated directly into the code. | |
16 final String name; | |
17 const JsName({this.name}); | |
18 } | |
19 class Overload { | 13 class Overload { |
20 const Overload(); | 14 const Overload(); |
21 } | 15 } |
22 const overload = const Overload(); | 16 const overload = const Overload(); |
23 | 17 |
24 external Document get document; | 18 external Document get document; |
25 external Window get window; | 19 external Window get window; |
26 | 20 |
27 @JsName() | 21 @js.JS() |
28 abstract class Document extends Node { | 22 abstract class Document extends Node { |
29 Element createElement(String name); | 23 Element createElement(String name); |
30 Element querySelector(String selector); | 24 Element querySelector(String selector); |
31 | 25 |
32 HTMLElement head; | 26 HTMLElement head; |
33 HTMLElement body; | 27 HTMLElement body; |
34 } | 28 } |
35 | 29 |
36 @JsName() | 30 @js.JS() |
37 class Blob { | 31 class Blob { |
38 external Blob(blobParts, {String type}); | 32 external Blob(blobParts, {String type}); |
39 } | 33 } |
40 | 34 |
41 class CustomEvent { | 35 class CustomEvent { |
42 external CustomEvent(String type, {detail, bubbles, cancelable}); | 36 external CustomEvent(String type, {detail, bubbles, cancelable}); |
43 } | 37 } |
44 | 38 |
45 @JsName() | 39 @js.JS() |
46 abstract class Element extends Node { | 40 abstract class Element extends Node { |
47 void addEventListener(String type, EventListener callback, [bool capture]); | 41 void addEventListener(String type, EventListener callback, [bool capture]); |
48 String textContent; | 42 String textContent; |
49 } | 43 } |
50 | 44 |
51 @JsName() | 45 @js.JS() |
52 abstract class HTMLElement extends Element { | 46 abstract class HTMLElement extends Element { |
53 String innerHTML; | 47 String innerHTML; |
54 HTMLCollection get children; | 48 HTMLCollection get children; |
55 } | 49 } |
56 | 50 |
57 @JsName() | 51 @js.JS() |
58 abstract class Node { | 52 abstract class Node { |
59 bool hasChildNodes(); | 53 bool hasChildNodes(); |
60 NodeList get childNodes; | 54 NodeList get childNodes; |
61 | 55 |
62 Node insertBefore(Node node, [Node child]); | 56 Node insertBefore(Node node, [Node child]); |
63 Node appendChild(Node node); | 57 Node appendChild(Node node); |
64 Node replaceChild(Node node, Node child); | 58 Node replaceChild(Node node, Node child); |
65 Node removeChild(Node child); | 59 Node removeChild(Node child); |
66 } | 60 } |
67 | 61 |
68 abstract class HTMLCollection { | 62 abstract class HTMLCollection { |
69 int get length; | 63 int get length; |
70 external Element operator [](num index); | 64 external Element operator [](num index); |
71 } | 65 } |
72 | 66 |
73 @JsName() | 67 @js.JS() |
74 class NodeList { | 68 class NodeList { |
75 external NodeList(); | 69 external NodeList(); |
76 external num get length; | 70 external num get length; |
77 external set length(num _); | 71 external set length(num _); |
78 external Node item(num index); | 72 external Node item(num index); |
79 | 73 |
80 external Node operator [](num index); | 74 external Node operator [](num index); |
81 external void operator []=(num index, Node); | 75 external void operator []=(num index, Node); |
82 } | 76 } |
83 | 77 |
84 typedef void EventListener(Event e); | 78 typedef void EventListener(Event e); |
85 | 79 |
86 @JsName() | 80 @js.JS() |
87 abstract class Event {} | 81 abstract class Event {} |
88 | 82 |
89 // TODO(jmesserly): rename these | 83 // TODO(jmesserly): rename these |
90 @JsName(name: 'HTMLInputElement') | 84 @js.JS('HTMLInputElement') |
91 abstract class InputElement extends HTMLElement { | 85 abstract class InputElement extends HTMLElement { |
92 String value; | 86 String value; |
93 } | 87 } |
94 | 88 |
95 @JsName(name: 'HTMLCanvasElement') | 89 @js.JS('HTMLCanvasElement') |
96 abstract class CanvasElement extends HTMLElement { | 90 abstract class CanvasElement extends HTMLElement { |
97 RenderingContext getContext(String contextId); | 91 RenderingContext getContext(String contextId); |
98 } | 92 } |
99 | 93 |
100 @JsName(name: 'HTMLDivElement') | 94 @js.JS('HTMLDivElement') |
101 abstract class DivElement extends HTMLElement { | 95 abstract class DivElement extends HTMLElement { |
102 RenderingContext getContext(String contextId); | 96 RenderingContext getContext(String contextId); |
103 } | 97 } |
104 | 98 |
105 @JsName(name: 'HTMLScriptElement') | 99 @js.JS('HTMLScriptElement') |
106 abstract class ScriptElement extends HTMLElement { | 100 abstract class ScriptElement extends HTMLElement { |
107 String type; | 101 String type; |
108 } | 102 } |
109 | 103 |
110 | 104 |
111 // TODO(jmesserly): union type of CanvasRenderingContext2D and | 105 // TODO(jmesserly): union type of CanvasRenderingContext2D and |
112 // WebGLRenderingContext | 106 // WebGLRenderingContext |
113 abstract class RenderingContext {} | 107 abstract class RenderingContext {} |
114 | 108 |
115 // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/ | 109 // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/ |
116 @JsName() | 110 @js.JS() |
117 abstract class CanvasRenderingContext2D | 111 abstract class CanvasRenderingContext2D |
118 implements CanvasDrawingStyles, CanvasPathMethods, RenderingContext { | 112 implements CanvasDrawingStyles, CanvasPathMethods, RenderingContext { |
119 | 113 |
120 // back-reference to the canvas | 114 // back-reference to the canvas |
121 CanvasElement get canvas; | 115 CanvasElement get canvas; |
122 | 116 |
123 // state | 117 // state |
124 void save(); // push state on state stack | 118 void save(); // push state on state stack |
125 void restore(); // pop state stack and restore state | 119 void restore(); // pop state stack and restore state |
126 | 120 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 void moveTo(num x, num y); | 216 void moveTo(num x, num y); |
223 void lineTo(num x, num y); | 217 void lineTo(num x, num y); |
224 void quadraticCurveTo(num cpx, num cpy, num x, num y); | 218 void quadraticCurveTo(num cpx, num cpy, num x, num y); |
225 void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y); | 219 void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y); |
226 void arcTo(num x1, num y1, num x2, num y2, num radius); | 220 void arcTo(num x1, num y1, num x2, num y2, num radius); |
227 void rect(num x, num y, num w, num h); | 221 void rect(num x, num y, num w, num h); |
228 void arc(num x, num y, num radius, num startAngle, num endAngle, | 222 void arc(num x, num y, num radius, num startAngle, num endAngle, |
229 [bool anticlockwise]); | 223 [bool anticlockwise]); |
230 } | 224 } |
231 | 225 |
232 @JsName() | 226 @js.JS() |
233 abstract class CanvasGradient { | 227 abstract class CanvasGradient { |
234 // opaque object | 228 // opaque object |
235 void addColorStop(num offset, String color); | 229 void addColorStop(num offset, String color); |
236 } | 230 } |
237 | 231 |
238 @JsName() | 232 @js.JS() |
239 abstract class CanvasPattern { | 233 abstract class CanvasPattern { |
240 // opaque object | 234 // opaque object |
241 } | 235 } |
242 | 236 |
243 @JsName() | 237 @js.JS() |
244 abstract class TextMetrics { | 238 abstract class TextMetrics { |
245 num get width; | 239 num get width; |
246 } | 240 } |
247 | 241 |
248 @JsName() | 242 @js.JS() |
249 abstract class ImageData { | 243 abstract class ImageData { |
250 int get width; | 244 int get width; |
251 int get height; | 245 int get height; |
252 // TODO: readonly Uint8ClampedArray data; | 246 // TODO: readonly Uint8ClampedArray data; |
253 } | 247 } |
OLD | NEW |