##// END OF EJS Templates
Added events map support to _WidgetBase, corrected attributes map support in _WidgetBase
cin -
r2:1e22cac2aaf4 v1.0.0-rc1 default
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,25
1 import * as _WidgetBase from "dijit/_WidgetBase";
2 import * as Stateful from "dojo/Stateful";
3
4 export interface IRemovable {
5 remove(): void;
6 }
7
8 type StatefulAttrs<T> = T extends Stateful<infer A> ? A : never;
9
10 interface WatchFn {
11 <T extends Stateful, K extends keyof StatefulAttrs<T>>(
12 target: T,
13 prop: K,
14 render: (model: StatefulAttrs<T>[K]) => any,
15 own?: (obj: IRemovable) => void
16 );
17 <W extends _WidgetBase, K extends keyof W>(
18 target: W,
19 prop: K,
20 render: (model: W[K]) => any,
21 own?: (obj: IRemovable) => void
22 );
23 }
24
25 export declare const watch: WatchFn;
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,487 +1,487
1 1 /// <reference path="index.d.ts" />
2 2
3 3 declare module 'dijit/_Widget' {
4 4 type _Widget = dijit._Widget;
5 5 const _Widget: dijit._WidgetBaseConstructor<_Widget>;
6 6 export = _Widget;
7 7 }
8 8
9 9 declare module 'dijit/_WidgetBase' {
10 type _WidgetBase<A = any> = dijit._WidgetBase<A>;
10 type _WidgetBase<E extends { [k in keyof E]: Event } = {}> = dijit._WidgetBase<E & GlobalEventHandlersEventMap>;
11 11
12 12 // individual _WidgetBase constructor to keep type parameters
13 13 interface _WidgetBaseConstructor {
14 new <A = any>(params?: Partial<_WidgetBase<A> & A>, srcNodeRef?: dojo.NodeOrString): _WidgetBase<A> & dojo._base.DeclareCreatedObject;
15 prototype: _WidgetBase;
14 new <A = {}, E extends { [k in keyof E]: Event } = {}>(params?: Partial<_WidgetBase<E> & A>, srcNodeRef?: dojo.NodeOrString): _WidgetBase<E> & dojo._base.DeclareCreatedObject;
15 prototype: _WidgetBase<any>;
16 16 }
17 17 const _WidgetBase: _WidgetBaseConstructor;
18 18 export = _WidgetBase;
19 19 }
20 20
21 21 declare module 'dijit/_AttachMixin' {
22 22 type _AttachMixin = dijit._AttachMixin;
23 23 const _AttachMixin: dijit._AttachMixinConstructor;
24 24 export = _AttachMixin;
25 25 }
26 26
27 27 declare module 'dijit/_CssStateMixin' {
28 28 type _CssStateMixin = dijit._CssStateMixin;
29 29 const _CssStateMixin: dijit._CssStateMixinConstructor;
30 30 export = _CssStateMixin;
31 31 }
32 32
33 33 declare module 'dijit/_Contained' {
34 34 type _Contained = dijit._Contained;
35 35 const _Contained: dijit._ContainedConstructor;
36 36 export = _Contained;
37 37 }
38 38
39 39 declare module 'dijit/_Container' {
40 40 type _Container = dijit._Container;
41 41 const _Container: dijit._ContainerConstructor;
42 42 export = _Container;
43 43 }
44 44
45 45 declare module 'dijit/_KeyNavContainer' {
46 46 type _KeyNavContainer = dijit._KeyNavContainer;
47 47 const _KeyNavContainer: dijit._KeyNavContainerConstructor;
48 48 export = _KeyNavContainer;
49 49 }
50 50
51 51 declare module 'dijit/_KeyNavMixin' {
52 52 type _KeyNavMixin = dijit._KeyNavMixin;
53 53 const _KeyNavMixin: dijit._KeyNavMixinConstructor;
54 54 export = _KeyNavMixin;
55 55 }
56 56
57 57 declare module 'dijit/_MenuBase' {
58 58 type _MenuBase = dijit._MenuBase;
59 59 const _MenuBase: dijit._MenuBaseConstructor;
60 60 export = _MenuBase;
61 61 }
62 62
63 63 declare module 'dijit/_TemplatedMixin' {
64 64 type _TemplatedMixin = dijit._TemplatedMixin;
65 65 const _TemplatedMixin: dijit._TemplatedMixinConstructor;
66 66 export = _TemplatedMixin;
67 67 }
68 68
69 69 declare module 'dijit/_WidgetsInTemplateMixin' {
70 70 type _WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin;
71 71 const _WidgetsInTemplateMixin: dijit._WidgetsInTemplateMixinConstructor;
72 72 export = _WidgetsInTemplateMixin;
73 73 }
74 74
75 75 declare module 'dijit/ConfirmDialog' {
76 76 type ConfirmDialog = dijit.ConfirmDialog;
77 77 const ConfirmDialog: dijit.ConfirmDialogConstructor;
78 78 export = ConfirmDialog;
79 79 }
80 80
81 81 declare module 'dijit/Calendar' {
82 82 type Calendar = dijit.Calendar;
83 83 const Calendar: dijit.CalendarConstructor;
84 84 export = Calendar;
85 85 }
86 86
87 87 declare module 'dijit/CalendarLite' {
88 88 type CalendarLite = dijit.CalendarLite;
89 89 const CalendarLite: dijit.CalendarLiteConstructor;
90 90 export = CalendarLite;
91 91 }
92 92
93 93 declare module 'dijit/Destroyable' {
94 94 type Destroyable = dijit.Destroyable;
95 95 const Destroyable: dijit.DestroyableConstructor;
96 96 export = Destroyable;
97 97 }
98 98
99 99 declare module 'dijit/Dialog' {
100 100 type Dialog = dijit.Dialog;
101 101 const Dialog: dijit.DialogConstructor;
102 102 export = Dialog;
103 103 }
104 104
105 105 declare module 'dijit/DropDownMenu' {
106 106 type DropDownMenu = dijit.DropDownMenu;
107 107 const DropDownMenu: dijit.DropDownMenuConstructor;
108 108 export = DropDownMenu;
109 109 }
110 110
111 111 declare module 'dijit/Fieldset' {
112 112 type Fieldset = dijit.Fieldset;
113 113 const Fieldset: dijit.FieldsetConstructor;
114 114 export = Fieldset;
115 115 }
116 116
117 117 declare module 'dijit/Menu' {
118 118 type Menu = dijit.Menu;
119 119 const Menu: dijit.MenuConstructor;
120 120 export = Menu;
121 121 }
122 122
123 123 declare module 'dijit/MenuBar' {
124 124 type MenuBar = dijit.MenuBar;
125 125 const MenuBar: dijit.MenuBarConstructor;
126 126 export = MenuBar;
127 127 }
128 128
129 129 declare module 'dijit/MenuBarItem' {
130 130 type MenuBarItem = dijit.MenuBarItem;
131 131 const MenuBarItem: dijit.MenuBarItemConstructor;
132 132 export = MenuBarItem;
133 133 }
134 134
135 135 declare module 'dijit/MenuItem' {
136 136 type MenuItem = dijit.MenuItem;
137 137 const MenuItem: dijit.MenuItemConstructor;
138 138 export = MenuItem;
139 139 }
140 140
141 141 declare module 'dijit/MenuSeparator' {
142 142 type MenuSeparator = dijit.MenuSeparator;
143 143 const MenuSeparator: dijit.MenuSeparatorConstructor;
144 144 export = MenuSeparator;
145 145 }
146 146
147 147 declare module 'dijit/place' {
148 148 const place: dijit.Place;
149 149 export = place;
150 150 }
151 151
152 152 declare module 'dijit/popup' {
153 153 const popup: dijit.PopupManager;
154 154 export = popup;
155 155 }
156 156
157 157 declare module 'dijit/PopupMenuBarItem' {
158 158 type PopupMenuBarItem = dijit.PopupMenuBarItem;
159 159 const PopupMenuBarItem: dijit.PopupMenuBarItemConstructor;
160 160 export = PopupMenuBarItem;
161 161 }
162 162
163 163 declare module 'dijit/PopupMenuItem' {
164 164 type PopupMenuItem = dijit.PopupMenuItem;
165 165 const PopupMenuItem: dijit.PopupMenuItemConstructor;
166 166 export = PopupMenuItem;
167 167 }
168 168
169 169 declare module 'dijit/registry' {
170 170 const registry: dijit.Registry;
171 171 export = registry;
172 172 }
173 173
174 174 declare module 'dijit/TitlePane' {
175 175 type TitlePane = dijit.TitlePane;
176 176 const TitlePane: dijit.TitlePaneConstructor;
177 177 export = TitlePane;
178 178 }
179 179
180 180 declare module 'dijit/Toolbar' {
181 181 type Toolbar = dijit.Toolbar;
182 182 const Toolbar: dijit.ToolbarConstructor;
183 183 export = Toolbar;
184 184 }
185 185
186 186 declare module 'dijit/ToolbarSeparator' {
187 187 type ToolbarSeparator = dijit.ToolbarSeparator;
188 188 const ToolbarSeparator: dijit.ToolbarSeparatorConstructor;
189 189 export = ToolbarSeparator;
190 190 }
191 191
192 192 declare module 'dijit/Tooltip' {
193 193 type Tooltip = dijit.Tooltip;
194 194 const Tooltip: dijit.TooltipConstructor;
195 195 export = Tooltip;
196 196 }
197 197
198 198 declare module 'dijit/TooltipDialog' {
199 199 type TooltipDialog = dijit.TooltipDialog;
200 200 const TooltipDialog: dijit.TooltipDialogConstructor;
201 201 export = TooltipDialog;
202 202 }
203 203
204 204 declare module 'dijit/_base/focus' {
205 205 const focus: dijit._base.Focus;
206 206 export = focus;
207 207 }
208 208
209 209 declare module 'dijit/_base/manager' {
210 210 const manager: dijit._base.Manager;
211 211 export = manager;
212 212 }
213 213
214 214 declare module 'dijit/_base/place' {
215 215 const place: dijit._base.Place;
216 216 export = place;
217 217 }
218 218
219 219 declare module 'dijit/_base/popup' {
220 220 const popup: dijit._base.Popup;
221 221 export = popup;
222 222 }
223 223
224 224 declare module 'dijit/_base/scroll' {
225 225 const scroll: dijit._base.Scroll;
226 226 export = scroll;
227 227 }
228 228
229 229 declare module 'dijit/_base/sniff' {
230 230 const sniff: dijit._base.Sniff;
231 231 export = sniff;
232 232 }
233 233
234 234 declare module 'dijit/_base/typematic' {
235 235 const typematic: dijit._base.Typematic;
236 236 export = typematic;
237 237 }
238 238
239 239 declare module 'dijit/_base/wai' {
240 240 const wai: dijit._base.Wai;
241 241 export = wai;
242 242 }
243 243
244 244 declare module 'dijit/_base/window' {
245 245 const window: dijit._base.Window;
246 246 export = window;
247 247 }
248 248
249 249 declare module 'dijit/form/_FormMixin' {
250 250 type _FormMixin = dijit.form._FormMixin;
251 251 const _FormMixin: dijit.form._FormMixinConstructor;
252 252 export = _FormMixin;
253 253 }
254 254
255 255 declare module 'dijit/form/_FormValueWidget' {
256 256 type _FormValueWidget = dijit.form._FormValueWidget;
257 257 const _FormValueWidget: dijit.form._FormValueWidgetConstructor;
258 258 export = _FormValueWidget;
259 259 }
260 260
261 261 declare module 'dijit/form/_FormWidget' {
262 262 type _FormWidget = dijit.form._FormWidget;
263 263 const _FormWidget: dijit.form._FormWidgetConstructor;
264 264 export = _FormWidget;
265 265 }
266 266
267 267 declare module 'dijit/form/Button' {
268 268 type Button = dijit.form.Button;
269 269 const Button: dijit.form.ButtonConstructor;
270 270 export = Button;
271 271 }
272 272
273 273 declare module 'dijit/form/CheckBox' {
274 274 type CheckBox = dijit.form.CheckBox;
275 275 const CheckBox: dijit.form.CheckBoxConstructor;
276 276 export = CheckBox;
277 277 }
278 278
279 279 declare module 'dijit/form/ComboBox' {
280 280 type ComboBox = dijit.form.TextBox;
281 281 const ComboBox: dijit.form.ComboBoxConstructor;
282 282 export = ComboBox;
283 283 }
284 284
285 285 declare module 'dijit/form/ComboBoxMixin' {
286 286 type ComboBoxMixin<T, U extends dojo.store.api.BaseQueryType, V> = dijit.form.ComboBoxMixin<T, U, V>;
287 287 const ComboBoxMixin: dijit.form.ComboBoxConstructor;
288 288 export = ComboBoxMixin;
289 289 }
290 290
291 291 declare module 'dijit/form/CurrencyTextBox' {
292 292 type CurrencyTextBox = dijit.form.CurrencyTextBox;
293 293 const CurrencyTextBox: dijit.form.CurrencyTextBoxConstructor;
294 294 export = CurrencyTextBox;
295 295 }
296 296
297 297 declare module 'dijit/form/DataList' {
298 298 type DataList<T> = dijit.form.DataList<T>;
299 299 const DataList: dijit.form.DataListConstructor;
300 300 export = DataList;
301 301 }
302 302
303 303 declare module 'dijit/form/DateTextBox' {
304 304 type DateTextBox = dijit.form.DateTextBox;
305 305 const DateTextBox: dijit.form.DateTextBoxConstructor;
306 306 export = DateTextBox;
307 307 }
308 308
309 309 declare module 'dijit/form/DropDownButton' {
310 310 type DropDownButton<T extends dijit._WidgetBase> = dijit.form.DropDownButton<T>;
311 311 const DropDownButton: dijit.form.DropDownButtonConstructor;
312 312 export = DropDownButton;
313 313 }
314 314
315 315 declare module 'dijit/form/FilteringSelect' {
316 316 type FilteringSelect<C extends dijit.form.Constraints, T extends Object, Q extends string | Object | Function, O extends dojo.store.api.QueryOptions> = dijit.form.FilteringSelect<C, T, Q, O>;
317 317 const FilteringSelect: dijit.form.FilteringSelectConstructor;
318 318 export = FilteringSelect;
319 319 }
320 320
321 321 declare module 'dijit/form/Form' {
322 322 type Form = dijit.form.Form;
323 323 const Form: dijit.form.FormConstructor;
324 324 export = Form;
325 325 }
326 326
327 327 declare module 'dijit/form/HorizontalRule' {
328 328 type HorizontalRule = dijit.form.HorizontalRule;
329 329 const HorizontalRule: dijit.form.HorizontalRuleConstructor;
330 330 export = HorizontalRule;
331 331 }
332 332
333 333 declare module 'dijit/form/HorizontalRuleLabels' {
334 334 type HorizontalRuleLabels = dijit.form.HorizontalRuleLabels;
335 335 const HorizontalRuleLabels: dijit.form.HorizontalRuleLabelsConstructor;
336 336 export = HorizontalRuleLabels;
337 337 }
338 338
339 339 declare module 'dijit/form/HorizontalSlider' {
340 340 type HorizontalSlider = dijit.form.HorizontalSlider;
341 341 const HorizontalSlider: dijit.form.HorizontalSliderConstructor;
342 342 export = HorizontalSlider;
343 343 }
344 344
345 345 declare module 'dijit/form/MappedTextBox' {
346 346 type MappedTextBox<C extends dijit.form.Constraints> = dijit.form.MappedTextBox<C>;
347 347 const MappedTextBox: dijit.form.MappedTextBoxConstructor;
348 348 export = MappedTextBox;
349 349 }
350 350
351 351 declare module 'dijit/form/NumberSpinner' {
352 352 type NumberSpinner = dijit.form.NumberSpinner;
353 353 const NumberSpinner: dijit.form.NumberSpinnerConstructor;
354 354 export = NumberSpinner;
355 355 }
356 356
357 357 declare module 'dijit/form/NumberTextBox' {
358 358 type NumberTextBox = dijit.form.NumberTextBox;
359 359 const NumberTextBox: dijit.form.NumberTextBoxConstructor;
360 360 export = NumberTextBox;
361 361 }
362 362
363 363 declare module 'dijit/form/RadioButton' {
364 364 type RadioButton = dijit.form.RadioButton;
365 365 const RadioButton: dijit.form.RadioButtonConstructor;
366 366 export = RadioButton;
367 367 }
368 368
369 369 declare module 'dijit/form/RangeBoundTextBox' {
370 370 type RangeBoundTextBox = dijit.form.RangeBoundTextBox;
371 371 const RangeBoundTextBox: dijit.form.RangeBoundTextBoxConstructor;
372 372 export = RangeBoundTextBox;
373 373 }
374 374
375 375 declare module 'dijit/form/Select' {
376 376 type Select<T, Q extends dojo.store.api.BaseQueryType, O, U extends dijit._WidgetBase> = dijit.form.Select<T, Q, O, U>;
377 377 const Select: dijit.form.SelectConstructor;
378 378 export = Select;
379 379 }
380 380
381 381 declare module 'dijit/form/SimpleTextarea' {
382 382 type SimpleTextarea = dijit.form.SimpleTextarea;
383 383 const SimpleTextarea: dijit.form.SimpleTextareaConstructor;
384 384 export = SimpleTextarea;
385 385 }
386 386
387 387 declare module 'dijit/form/Textarea' {
388 388 type Textarea = dijit.form.Textarea;
389 389 const Textarea: dijit.form.TextareaConstructor;
390 390 export = Textarea;
391 391 }
392 392
393 393 declare module 'dijit/form/TextBox' {
394 394 type TextBox = dijit.form.TextBox;
395 395 const TextBox: dijit.form.TextBoxConstructor;
396 396 export = TextBox;
397 397 }
398 398
399 399 declare module 'dijit/form/ToggleButton' {
400 400 type ToggleButton = dijit.form.ToggleButton;
401 401 const ToggleButton: dijit.form.ToggleButtonConstructor;
402 402 export = ToggleButton;
403 403 }
404 404
405 405 declare module 'dijit/form/ValidationTextBox' {
406 406 type ValidationTextBox<C extends dijit.form.Constraints> = dijit.form.ValidationTextBox<C>;
407 407 const ValidationTextBox: dijit.form.ValidationTextBoxConstructor;
408 408 export = ValidationTextBox;
409 409 }
410 410
411 411 declare module 'dijit/layout/_LayoutWidget' {
412 412 type _LayoutWidget = dijit.layout._LayoutWidget;
413 413 const _LayoutWidget: dijit.layout._LayoutWidgetConstructor;
414 414 export = _LayoutWidget;
415 415 }
416 416
417 417 declare module 'dijit/layout/AccordionContainer' {
418 418 type AccordionContainer = dijit.layout.AccordionContainer;
419 419 const AccordionContainer: dijit.layout.AccordionContainerConstructor;
420 420 export = AccordionContainer;
421 421 }
422 422
423 423 declare module 'dijit/layout/AccordionPane' {
424 424 type AccordionPane = dijit.layout.AccordionPane;
425 425 const AccordionPane: dijit.layout.AccordionPaneConstructor;
426 426 export = AccordionPane;
427 427 }
428 428
429 429 declare module 'dijit/layout/ContentPane' {
430 430 type ContentPane = dijit.layout.ContentPane;
431 431 const ContentPane: dijit.layout.ContentPaneConstructor;
432 432 export = ContentPane;
433 433 }
434 434
435 435 declare module 'dijit/layout/_ContentPaneResizeMixin' {
436 436 type _ContentPaneResizeMixin = dijit.layout._ContentPaneResizeMixin;
437 437 const _ContentPaneResizeMixin: dijit.layout._ContentPaneResizeMixinConstructor;
438 438 export = _ContentPaneResizeMixin;
439 439 }
440 440
441 441 declare module 'dijit/layout/BorderContainer' {
442 442 type BorderContainer = dijit.layout.BorderContainer;
443 443 const BorderContainer: dijit.layout.BorderContainerConstructor;
444 444 export = BorderContainer;
445 445 }
446 446
447 447 declare module 'dijit/layout/LayoutContainer' {
448 448 type LayoutContainer = dijit.layout.LayoutContainer;
449 449 const LayoutContainer: dijit.layout.LayoutContainerConstructor;
450 450 export = LayoutContainer;
451 451 }
452 452
453 453 declare module 'dijit/layout/LinkPane' {
454 454 type LinkPane = dijit.layout.LinkPane;
455 455 const LinkPane: dijit.layout.LinkPaneConstructor;
456 456 export = LinkPane;
457 457 }
458 458
459 459 declare module 'dijit/layout/ScrollingTabController' {
460 460 type ScrollingTabController = dijit.layout.ScrollingTabController;
461 461 const ScrollingTabController: dijit.layout.ScrollingTabControllerConstructor;
462 462 export = ScrollingTabController;
463 463 }
464 464
465 465 declare module 'dijit/layout/StackContainer' {
466 466 type StackContainer = dijit.layout.StackContainer;
467 467 const StackContainer: dijit.layout.StackContainerConstructor;
468 468 export = StackContainer;
469 469 }
470 470
471 471 declare module 'dijit/layout/StackController' {
472 472 type StackController = dijit.layout.StackController;
473 473 const StackController: dijit.layout.StackControllerConstructor;
474 474 export = StackController;
475 475 }
476 476
477 477 declare module 'dijit/layout/TabContainer' {
478 478 type TabContainer = dijit.layout.TabContainer;
479 479 const TabContainer: dijit.layout.TabContainerConstructor;
480 480 export = TabContainer;
481 481 }
482 482
483 483 declare module 'dijit/layout/TabController' {
484 484 type TabController = dijit.layout.TabController;
485 485 const TabController: dijit.layout.TabControllerConstructor;
486 486 export = TabController;
487 487 }
@@ -1,2101 +1,2101
1 1 /// <reference path="index.d.ts" />
2 2 /// <reference path="../doh/doh.d.ts" />
3 3
4 4 declare namespace dojo {
5 5 /* general implied types */
6 6
7 7 type NodeOrString = Node | string;
8 8 type ElementOrString = Element | string;
9 9 type NodeFragmentOrString = NodeOrString | DocumentFragment;
10 10
11 11 interface GenericConstructor<T> {
12 12 new (...args: any[]): T;
13 13 prototype: T;
14 14 }
15 15
16 16 interface GenericObject {
17 17 [id: string]: any;
18 18 }
19 19
20 20 interface GenericFunction<T> {
21 21 (...args: any[]): T;
22 22 }
23 23
24 24 interface Handle {
25 25 remove(): void;
26 26 }
27 27
28 28 interface EventListener {
29 29 (evt: any): void;
30 30 }
31 31
32 32 interface BuildProfile {
33 33 resourceTags: { [tag: string]: (filename: string, mid?: string) => boolean; };
34 34 }
35 35
36 36 interface Package {
37 37 location?: string;
38 38 main?: string;
39 39 name?: string;
40 40 }
41 41
42 42 export interface ModuleMap extends ModuleMapItem {
43 43 [ sourceMid: string ]: ModuleMapReplacement;
44 44 }
45 45
46 46 export interface ModuleMapItem {
47 47 [ mid: string ]: /* ModuleMapReplacement | ModuleMap */ any;
48 48 }
49 49
50 50 export interface ModuleMapReplacement extends ModuleMapItem {
51 51 [ findMid: string ]: /* replaceMid */ string;
52 52 }
53 53
54 54 /* dojo/AdapterRegistry */
55 55
56 56 interface AdapterRegistry {
57 57 /**
58 58 * register a check function to determine if the wrap function or
59 59 * object gets selected
60 60 */
61 61 register(name: string, check: (...args: any[]) => boolean, wrap: Function, directReturn?: boolean, override?: boolean): void;
62 62
63 63 /**
64 64 * Find an adapter for the given arguments. If no suitable adapter
65 65 * is found, throws an exception. match() accepts any number of
66 66 * arguments, all of which are passed to all matching functions
67 67 * from the registered pairs.
68 68 */
69 69 match(...args: any[]): any;
70 70
71 71 /**
72 72 * Remove a named adapter from the registry
73 73 */
74 74 unregister(name: string): boolean;
75 75 }
76 76
77 77 interface AdapterRegistryConstructor {
78 78 new (returnWrappers?: boolean): AdapterRegistry;
79 79 prototype: AdapterRegistry;
80 80 }
81 81
82 82 /* dojo/aspect */
83 83
84 84 interface AfterAdvice<T> {
85 85 (result: T, ...args: any[]): T;
86 86 }
87 87
88 88 interface AroundAdvice<T> {
89 89 (origFn: GenericFunction<T>): (...args: any[]) => T;
90 90 }
91 91
92 92 interface BeforeAdvice {
93 93 (...args: any[]): any[] | void;
94 94 }
95 95
96 96 interface Aspect {
97 97 /**
98 98 * The "before" export of the aspect module is a function that can be used to attach
99 99 * "before" advice to a method. This function will be executed before the original attach
100 100 * is executed. This function will be called with the arguments used to call the mattach
101 101 * This function may optionally return an array as the new arguments to use tattach
102 102 * the original method (or the previous, next-to-execute before advice, if one exattach
103 103 * If the before method doesn't return anything (returns undefined) the original argattach
104 104 * will be presattach
105 105 * If there are multiple "before" advisors, they are executed in the reverse order they were registered.
106 106 */
107 107 before<T>(target: GenericObject, methodName: string, advice: BeforeAdvice | Function): Handle;
108 108
109 109 /**
110 110 * The "around" export of the aspect module is a function that can be used to attach
111 111 * "around" advice to a method. The advisor function is immediately executeattach
112 112 * the around() is called, is passed a single argument that is a function that attach
113 113 * called to continue execution of the original method (or the next around advattach
114 114 * The advisor function should return a function, and this function will be called whattach
115 115 * the method is called. It will be called with the arguments used to call the mattach
116 116 * Whatever this function returns will be returned as the result of the method call (unless after advise changes it).
117 117 */
118 118 around<T>(target: GenericObject, methodName: string, advice: AroundAdvice<T> | Function): Handle;
119 119
120 120 /**
121 121 * The "after" export of the aspect module is a function that can be used to attach
122 122 * "after" advice to a method. This function will be executed after the original method
123 123 * is executed. By default the function will be called with a single argument, the return
124 124 * value of the original method, or the the return value of the last executed advice (if a previous one exists).
125 125 * The fourth (optional) argument can be set to true to so the function receives the original
126 126 * arguments (from when the original method was called) rather than the return value.
127 127 * If there are multiple "after" advisors, they are executed in the order they were registered.
128 128 */
129 129 after<T>(target: GenericObject, methodName: string, advice: AfterAdvice<T> | Function, receiveArguments?: boolean): Handle;
130 130 }
131 131
132 132 /* dojo/back */
133 133
134 134 interface BackArgs {
135 135 back?: GenericFunction<void>;
136 136 forward?: GenericFunction<void>;
137 137 changeUrl?: boolean | string;
138 138 }
139 139
140 140 interface Back {
141 141 getHash(): string;
142 142 setHash(h: string): void;
143 143
144 144 /**
145 145 * private method. Do not call this directly.
146 146 */
147 147 goBack(): void;
148 148
149 149 /**
150 150 * private method. Do not call this directly.
151 151 */
152 152 goForward(): void;
153 153
154 154 /**
155 155 * Initializes the undo stack. This must be called from a <script>
156 156 * block that lives inside the `<body>` tag to prevent bugs on IE.
157 157 * Only call this method before the page's DOM is finished loading. Otherwise
158 158 * it will not work. Be careful with xdomain loading or djConfig.debugAtAllCosts scenarios,
159 159 * in order for this method to work, dojo/back will need to be part of a build layer.
160 160 */
161 161 init(): void;
162 162
163 163 /**
164 164 * Sets the state object and back callback for the very first page
165 165 * that is loaded.
166 166 * It is recommended that you call this method as part of an event
167 167 * listener that is registered via dojo/ready.
168 168 */
169 169 setInitialState(args: BackArgs): void;
170 170
171 171 /**
172 172 * adds a state object (args) to the history list.
173 173 */
174 174 addToHistory(args: BackArgs): void;
175 175
176 176 /**
177 177 * private method. Do not call this directly.
178 178 */
179 179 _iframeLoaded(evt: Event, ifrLoc: Location): void;
180 180 }
181 181
182 182 /* dojo/behavior */
183 183
184 184 interface Behavior {
185 185 _behaviors: { [selector: string]: any };
186 186
187 187 /**
188 188 * Add the specified behavior to the list of behaviors, ignoring existing
189 189 * matches.
190 190 */
191 191 add(behaviorObject: { [selector: string]: any }): void;
192 192
193 193 /**
194 194 * Applies all currently registered behaviors to the document.
195 195 */
196 196 apply(): void;
197 197 }
198 198
199 199 /* dojo/cookie */
200 200
201 201 interface CookieProps {
202 202 expires?: Date | string | number;
203 203 path?: string;
204 204 domain?: string;
205 205 secure?: boolean;
206 206 }
207 207
208 208 interface Cookie {
209 209 /* Get or set a cookie. */
210 210 (name: string, value?: string, props?: CookieProps): string;
211 211
212 212 /**
213 213 * Use to determine if the current browser supports cookies or not.
214 214 */
215 215 isSupported(): boolean;
216 216 }
217 217
218 218 /* dojo/currency */
219 219
220 220 interface CurrencyFormatOptions extends NumberFormatOptions {
221 221
222 222 /**
223 223 * Should not be set. Value is assumed to be "currency".
224 224 */
225 225 type?: string;
226 226
227 227 /**
228 228 * localized currency symbol. The default will be looked up in table of supported currencies in `dojo.cldr`
229 229 * A [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code will be used if not found.
230 230 */
231 231 symbol?: string;
232 232
233 233 /**
234 234 * an [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD".
235 235 * For use with dojo.currency only.
236 236 */
237 237 currency?: string;
238 238
239 239 /**
240 240 * number of decimal places to show. Default is defined based on which currency is used.
241 241 */
242 242 places?: number;
243 243 }
244 244
245 245 interface CurrencyParseOptions extends NumberParseOptions {
246 246
247 247 /**
248 248 * Should not be set. Value is assumed to be "currency".
249 249 */
250 250 type?: string;
251 251
252 252 /**
253 253 * localized currency symbol. The default will be looked up in table of supported currencies in `dojo.cldr`
254 254 * A [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code will be used if not found.
255 255 */
256 256 symbol?: string;
257 257
258 258 /**
259 259 * an [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD".
260 260 * For use with dojo.currency only.
261 261 */
262 262 currency?: string;
263 263
264 264 /**
265 265 * number of decimal places to show. Default is defined based on which currency is used.
266 266 */
267 267 places?: number;
268 268
269 269 /**
270 270 * Whether to include the fractional portion, where the number of decimal places are implied by the currency
271 271 * or explicit 'places' parameter. The value [true,false] makes the fractional portion optional.
272 272 * By default for currencies, it the fractional portion is optional.
273 273 */
274 274 fractional?: boolean | [boolean, boolean];
275 275 }
276 276
277 277 interface Currency {
278 278 _mixInDefaults(options: NumberFormatOptions): CurrencyFormatOptions;
279 279
280 280 /**
281 281 * Format a Number as a currency, using locale-specific settings
282 282 */
283 283 format(value: number, options?: CurrencyFormatOptions): string;
284 284
285 285 /**
286 286 * Builds the regular needed to parse a currency value
287 287 */
288 288 regexp(options?: NumberRegexpOptions): string;
289 289
290 290 /**
291 291 * Convert a properly formatted currency string to a primitive Number,
292 292 * using locale-specific settings.
293 293 */
294 294 parse(expression: string, options?: CurrencyParseOptions): number;
295 295 }
296 296
297 297 /* dojo/debounce */
298 298
299 299 interface Debounce {
300 300 /**
301 301 * Create a function that will only execute after `wait` milliseconds
302 302 */
303 303 <T extends Function>(cb: T, wait: number): T;
304 304 <T extends Function>(cb: Function, wait: number, ...args: any[]): T;
305 305 }
306 306
307 307 /* dojo/Deferred */
308 308
309 309 interface Deferred<T> {
310 310
311 311 /**
312 312 * The public promise object that clients can add callbacks to.
313 313 */
314 314 promise: promise.Promise<T>;
315 315
316 316 /**
317 317 * Checks whether the deferred has been resolved.
318 318 */
319 319 isResolved(): boolean;
320 320
321 321 /**
322 322 * Checks whether the deferred has been rejected.
323 323 */
324 324 isRejected(): boolean;
325 325
326 326 /**
327 327 * Checks whether the deferred has been resolved or rejected.
328 328 */
329 329 isFulfilled(): boolean;
330 330
331 331 /**
332 332 * Checks whether the deferred has been canceled.
333 333 */
334 334 isCanceled(): boolean;
335 335
336 336 /**
337 337 * Emit a progress update on the deferred.
338 338 */
339 339 progress(update: any, strict?: boolean): promise.Promise<T>;
340 340
341 341 /**
342 342 * Resolve the deferred.
343 343 */
344 344 resolve(value?: T, strict?: boolean): promise.Promise<T>;
345 345
346 346 /**
347 347 * Reject the deferred.
348 348 */
349 349 reject(error?: any, strict?: boolean): promise.Promise<T>;
350 350
351 351 /**
352 352 * Add new callbacks to the deferred.
353 353 */
354 354 then<U>(callback?: promise.PromiseCallback<T, U>, errback?: promise.PromiseErrback<U>, progback?: promise.PromiseProgback): promise.Promise<U>;
355 355
356 356 /**
357 357 * Inform the deferred it may cancel its asynchronous operation.
358 358 */
359 359 cancel(reason?: any, strict?: boolean): any;
360 360
361 361 /**
362 362 * Returns `[object Deferred]`.
363 363 */
364 364 toString(): string;
365 365 }
366 366
367 367 interface DeferredConstructor {
368 368 /**
369 369 * Creates a new deferred. This API is preferred over
370 370 * `dojo/_base/Deferred`.
371 371 */
372 372 new <T>(canceller?: (reason: any) => void): Deferred<T>;
373 373 prototype: Deferred<any>;
374 374 }
375 375
376 376 /* dojo/DeferredList */
377 377
378 378 interface DeferredList<T> extends Deferred<T[]> {
379 379 /**
380 380 * Gathers the results of the deferreds for packaging
381 381 * as the parameters to the Deferred Lists' callback
382 382 */
383 383 gatherResults<T>(deferredList: DeferredList<any>): DeferredList<T>;
384 384 }
385 385
386 386 interface DeferredListConstructor {
387 387 /**
388 388 * Deprecated, use dojo/promise/all instead.
389 389 * Provides event handling for a group of Deferred objects.
390 390 */
391 391 new <T>(list: T[], fireOnOneCallback?: boolean, fireOnOneErrback?: boolean, consumeErrors?: boolean, canceller?: (reason: any) => void): DeferredList<T>;
392 392 prototype: DeferredList<any>;
393 393 }
394 394
395 395 /* dojo/dojo */
396 396
397 397 interface RequireTrace {
398 398 (group: string, args: any[]): void;
399 399 on: boolean | number;
400 400 group: GenericObject;
401 401 set(group: string | GenericObject, value: any): void;
402 402 }
403 403
404 404 interface Require {
405 405 (config: GenericObject, dependencies: string[], callback?: GenericFunction<void>): Require;
406 406 (dependencies: string[], callback: GenericFunction<void>): Require;
407 407 async: number| boolean;
408 408 has: dojo.Has;
409 409 isXdurl(url: string): boolean;
410 410 initSyncLoader(dojoRequirePlugin: any, checkDojoRequirePlugin: any, transformToAmd: any): GenericObject;
411 411 getXhr(): XMLHttpRequest | ActiveXObject;
412 412 getText(url: string, async?: boolean, onLoad?: (responseText: string, async?: boolean) => void): string;
413 413 eval(text: string, hint?: string): any;
414 414 signal(type: string, args: any[]): void;
415 415 on(type: string, listener: (...args: any[]) => void): Handle;
416 416 map: { [id: string]: any };
417 417 waitms?: number;
418 418 legacyMode: boolean;
419 419 rawConfig: dojo._base.Config;
420 420 baseUrl: string;
421 421 combo?: {
422 422 add: () => void;
423 423 done(callback: (mids: string[], url?: string) => void, req: Require): void;
424 424 plugins?: GenericObject;
425 425 };
426 426 idle(): boolean;
427 427 toAbsMid(mid: string, referenceModule?: string): string;
428 428 toUrl(name: string, referenceModule?: string): string;
429 429 undef(moduleId: string, referenceModule?: string): void;
430 430 pageLoaded: number | boolean;
431 431 injectUrl(url: string, callback?: () => void, owner?: HTMLScriptElement): HTMLScriptElement;
432 432 log(...args: any[]): void;
433 433 trace: RequireTrace;
434 434 boot?: [string[], Function] | number;
435 435 }
436 436
437 437 interface Define {
438 438 (mid: string, dependencies?: string[], factory?: any): void;
439 439 (dependencies: string[], factory?: any): void;
440 440 amd: string;
441 441 }
442 442
443 443 /* dojo/dom */
444 444
445 445 interface Dom {
446 446 /**
447 447 * Returns DOM node with matching `id` attribute or falsy value (ex: null or undefined)
448 448 * if not found. Internally if `id` is not a string then `id` returned.
449 449 */
450 450 byId<E extends Element>(id: string | E, doc?: Document): E;
451 451
452 452 /**
453 453 * Returns true if node is a descendant of ancestor
454 454 */
455 455 isDescendant(node: NodeOrString, ancestor: NodeOrString): boolean;
456 456
457 457 /**
458 458 * Enable or disable selection on a node
459 459 */
460 460 setSelectable(node: ElementOrString, selectable?: boolean): void;
461 461 }
462 462
463 463 /* dojo/dom-attr */
464 464
465 465 interface DomAttr {
466 466 /**
467 467 * Returns true if the requested attribute is specified on the
468 468 * given element, and false otherwise.
469 469 */
470 470 has(node: NodeOrString, name: string): boolean;
471 471
472 472 /**
473 473 * Gets an attribute on an HTML element.
474 474 * Because sometimes this uses node.getAttribute, it should be a string,
475 475 * but it can also get any other attribute on a node, therefore it is unsafe
476 476 * to type just a string.
477 477 */
478 478 get(node: ElementOrString, name: string): any;
479 479
480 480 /**
481 481 * Sets an attribute on an HTML element.
482 482 */
483 483 set(node: ElementOrString, name: string, value: any): Element;
484 484 set(node: ElementOrString, map: GenericObject): Element;
485 485
486 486 /**
487 487 * Removes an attribute from an HTML element.
488 488 */
489 489 remove(node: NodeOrString, name: string): void;
490 490
491 491 /**
492 492 * Returns an effective value of a property or an attribute.
493 493 */
494 494 getNodeProp(node: NodeOrString, name: string): any;
495 495 }
496 496
497 497 /* dojo/dom-class */
498 498
499 499 interface DomClass {
500 500
501 501 /**
502 502 * Returns whether or not the specified classes are a portion of the
503 503 * class list currently applied to the node.
504 504 */
505 505 contains(node: NodeOrString, classStr: string): boolean;
506 506
507 507 /**
508 508 * Adds the specified classes to the end of the class list on the
509 509 * passed node. Will not re-apply duplicate classes.
510 510 */
511 511 add(node: NodeOrString, classStr: string | string[]): void;
512 512
513 513 /**
514 514 * Removes the specified classes from node. No `contains()`
515 515 * check is required.
516 516 */
517 517 remove(node: NodeOrString, classStr?: string | string[]): void;
518 518
519 519 /**
520 520 * Replaces one or more classes on a node if not present.
521 521 * Operates more quickly than calling dojo.removeClass and dojo.addClass
522 522 */
523 523 replace(node: NodeOrString, addClassStr: string | string[], removeClassStr?: string | string[]): void;
524 524
525 525 /**
526 526 * Adds a class to node if not present, or removes if present.
527 527 * Pass a boolean condition if you want to explicitly add or remove.
528 528 * Returns the condition that was specified directly or indirectly.
529 529 */
530 530 toggle(node: NodeOrString, classStr: string | string[], condition?: boolean): boolean;
531 531 }
532 532
533 533 /* dojo/dom-construct */
534 534
535 535 /* TODO implement for TS 1.8 */
536 536 /* type PosString = 'first' | 'after' | 'before' | 'last' | 'replace' | 'only'; */
537 537
538 538 interface DomConstruct {
539 539
540 540 /**
541 541 * instantiates an HTML fragment returning the corresponding DOM.
542 542 */
543 543 toDom(frag: string, doc?: Document): DocumentFragment | Node;
544 544
545 545 /**
546 546 * Attempt to insert node into the DOM, choosing from various positioning options.
547 547 * Returns the first argument resolved to a DOM node.
548 548 */
549 549 place(node: NodeFragmentOrString, refNode: NodeOrString, position?: string /* PosString */ | number): HTMLElement;
550 550
551 551 /**
552 552 * Create an element, allowing for optional attribute decoration
553 553 * and placement.
554 554 */
555 555 create(tag: NodeOrString, attrs?: GenericObject, refNode?: NodeOrString, pos?: string /* PosString */ | number): HTMLElement;
556 556
557 557 /**
558 558 * safely removes all children of the node.
559 559 */
560 560 empty(node: NodeOrString): void;
561 561
562 562 /**
563 563 * Removes a node from its parent, clobbering it and all of its
564 564 * children.
565 565 */
566 566 destroy(node: NodeOrString): void;
567 567 }
568 568
569 569 /* dojo/dom-form */
570 570
571 571 interface DomForm {
572 572 /**
573 573 * Serialize a form field to a JavaScript object.
574 574 */
575 575 fieldToObject(inputNode: NodeOrString): GenericObject;
576 576
577 577 /**
578 578 * Serialize a form node to a JavaScript object.
579 579 */
580 580 toObject(fromNode: HTMLFormElement | string): GenericObject;
581 581
582 582 /**
583 583 * Returns a URL-encoded string representing the form passed as either a
584 584 * node or string ID identifying the form to serialize
585 585 */
586 586 toQuery(fromNode: HTMLFormElement | string): string;
587 587
588 588 /**
589 589 * Create a serialized JSON string from a form node or string
590 590 * ID identifying the form to serialize
591 591 */
592 592 toJson(formNode: HTMLFormElement | string, prettyPrint?: boolean): string;
593 593 }
594 594
595 595 /* dojo/dom-geometry */
596 596
597 597 interface DomGeometryWidthHeight {
598 598 w?: number;
599 599 h?: number;
600 600 }
601 601
602 602 interface DomGeometryBox extends DomGeometryWidthHeight {
603 603 l?: number;
604 604 t?: number;
605 605 }
606 606
607 607 interface DomGeometryBoxExtents extends DomGeometryBox {
608 608 r?: number;
609 609 b?: number;
610 610 }
611 611
612 612 interface Point {
613 613 x: number;
614 614 y: number;
615 615 }
616 616
617 617 interface DomGeometryXYBox extends DomGeometryWidthHeight, Point {
618 618 }
619 619
620 620 interface DomGeometry {
621 621 boxModel: string; /* TODO: string literal 'border-box' | 'content-box' */
622 622
623 623 /**
624 624 * Returns object with special values specifically useful for node
625 625 * fitting.
626 626 */
627 627 getPadExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
628 628
629 629 /**
630 630 * returns an object with properties useful for noting the border
631 631 * dimensions.
632 632 */
633 633 getBorderExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
634 634
635 635 /**
636 636 * Returns object with properties useful for box fitting with
637 637 * regards to padding.
638 638 */
639 639 getPadBorderExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
640 640
641 641 /**
642 642 * returns object with properties useful for box fitting with
643 643 * regards to box margins (i.e., the outer-box).
644 644 * - l/t = marginLeft, marginTop, respectively
645 645 * - w = total width, margin inclusive
646 646 * - h = total height, margin inclusive
647 647 * The w/h are used for calculating boxes.
648 648 * Normally application code will not need to invoke this
649 649 * directly, and will use the ...box... functions instead.
650 650 */
651 651 getMarginExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
652 652
653 653 /**
654 654 * returns an object that encodes the width, height, left and top
655 655 * positions of the node's margin box.
656 656 */
657 657 getMarginBox(node: Element, computedStyle?: DomComputedStyle): DomGeometryBox;
658 658
659 659 /**
660 660 * Returns an object that encodes the width, height, left and top
661 661 * positions of the node's content box, irrespective of the
662 662 * current box model.
663 663 */
664 664 getContentBox(node: Element, computedStyle?: DomComputedStyle): DomGeometryBox;
665 665
666 666 /**
667 667 * Sets the size of the node's contents, irrespective of margins,
668 668 * padding, or borders.
669 669 */
670 670 setContentSize(node: Element, box: DomGeometryWidthHeight, computedStyle?: DomComputedStyle): void;
671 671
672 672 /**
673 673 * sets the size of the node's margin box and placement
674 674 * (left/top), irrespective of box model. Think of it as a
675 675 * passthrough to setBox that handles box-model vagaries for
676 676 * you.
677 677 */
678 678 setMarginBox(node: Element, box: DomGeometryBox, computedStyle?: DomComputedStyle): void;
679 679
680 680 /**
681 681 * Returns true if the current language is left-to-right, and false otherwise.
682 682 */
683 683 isBodyLtr(doc?: Document): boolean;
684 684
685 685 /**
686 686 * Returns an object with {node, x, y} with corresponding offsets.
687 687 */
688 688 docScroll(doc?: Document): Point;
689 689
690 690 /**
691 691 * Deprecated method previously used for IE6-IE7. Now, just returns `{x:0, y:0}`.
692 692 */
693 693 getIeDocumentElementOffset(doc: Document): Point;
694 694
695 695 /**
696 696 * In RTL direction, scrollLeft should be a negative value, but IE
697 697 * returns a positive one. All codes using documentElement.scrollLeft
698 698 * must call this function to fix this error, otherwise the position
699 699 * will offset to right when there is a horizontal scrollbar.
700 700 */
701 701 fixIeBiDiScrollLeft(scrollLeft: number, doc?: Document): number;
702 702
703 703 /**
704 704 * Gets the position and size of the passed element relative to
705 705 * the viewport (if includeScroll==false), or relative to the
706 706 * document root (if includeScroll==true).
707 707 */
708 708 position(node: Element, includeScroll?: boolean): DomGeometryXYBox;
709 709
710 710 /**
711 711 * returns an object that encodes the width and height of
712 712 * the node's margin box
713 713 */
714 714 getMarginSize(node: Element, computedStyle?: DomComputedStyle): DomGeometryWidthHeight;
715 715
716 716 /**
717 717 * Normalizes the geometry of a DOM event, normalizing the pageX, pageY,
718 718 * offsetX, offsetY, layerX, and layerX properties
719 719 */
720 720 normalizeEvent(event: Event): void;
721 721 }
722 722
723 723 /* dojo/dom-prop */
724 724
725 725 interface DomProp {
726 726 /**
727 727 * Gets a property on an HTML element.
728 728 */
729 729 get(node: ElementOrString, name: string): any;
730 730
731 731 /**
732 732 * Sets a property on an HTML element.
733 733 */
734 734 set(node: ElementOrString, name: string | GenericObject, value?: any): Element;
735 735 }
736 736
737 737 /* dojo/dom-style */
738 738
739 739 // TODO move over the most common properties from CSSStyleDeclaration
740 740 interface DomComputedStyle {
741 741 position?: string;
742 742 width?: string;
743 743 height?: string;
744 744 [id: string]: any;
745 745 }
746 746
747 747 interface DomStyle {
748 748 /**
749 749 * Returns a "computed style" object.
750 750 */
751 751 getComputedStyle(node: Node): DomComputedStyle;
752 752
753 753 /**
754 754 * Accesses styles on a node.
755 755 */
756 756 get(node: ElementOrString): DomComputedStyle;
757 757 get(node: ElementOrString, name: string): string | number;
758 758
759 759 /**
760 760 * Sets styles on a node.
761 761 */
762 762 set(node: ElementOrString, name: DomComputedStyle): DomComputedStyle;
763 763 set(node: ElementOrString, name: string, value: string | number): DomComputedStyle;
764 764
765 765 /**
766 766 * converts style value to pixels on IE or return a numeric value.
767 767 */
768 768 toPixelValue(element: Element, value: string): number;
769 769 }
770 770
771 771 /* dojo/domReady */
772 772
773 773 interface DomReady {
774 774 /**
775 775 * Plugin to delay require()/define() callback from firing until the DOM has finished
776 776 */
777 777 (callback: Function): void;
778 778
779 779 load(id: string, parentRequire: Function, loaded: Function): void; /* TODO: Align with loader api */
780 780 _Q: Function[];
781 781 _onEmpty(): void;
782 782 }
783 783
784 784 /* dojo/Evented */
785 785
786 786 interface Evented {
787 787 on(type: string | ExtensionEvent, listener: EventListener | Function): Handle;
788 788 emit(type: string | ExtensionEvent, ...events: any[]): boolean;
789 789 }
790 790
791 791 interface EventedConstructor extends _base.DeclareConstructor<Evented> {
792 792 new (params?: Object): Evented;
793 793 }
794 794
795 795 /* dojo/fx */
796 796
797 797 /* dojo/fx augments the dojo/_base/fx, therefore it is typed in fx.d.ts and not referenced from
798 798 index.d.ts or module.d.ts and is self contained typings for dojo/fx and dojo/fx/* */
799 799
800 800 /* dojo/gears */
801 801
802 802 /* This is long-ago deprecated by Google, so just doing a minimal typing */
803 803
804 804 interface Gears {
805 805 _gearsObject(): any;
806 806 available: boolean;
807 807 }
808 808
809 809 /* dojo/has */
810 810
811 811 interface HasCache {
812 812 [feature: string]: any;
813 813 }
814 814
815 815 interface HasTestFunction {
816 816 /* TypeScript has no way of referring to the global scope see Microsoft/TypeScript#983 */
817 817 (global?: any, doc?: Document, element?: Element): any;
818 818 }
819 819
820 820 interface Has {
821 821 /**
822 822 * Return the current value of the named feature.
823 823 * @param {string | number} name The name (if a string) or identifier (if an integer) of the feature to test.
824 824 */
825 825 (name: string | number): any;
826 826 (name: 'host-browser'): boolean;
827 827 (name: 'host-node'): any;
828 828 (name: 'host-rhino'): boolean;
829 829 (name: 'dom'): boolean;
830 830 (name: 'dojo-dom-ready-api'): 1;
831 831 (name: 'dojo-sniff'): 1;
832 832 // if host-browser is true
833 833 (name: 'dom-addeventlistener'): void | boolean;
834 834 (name: 'touch'): void | boolean;
835 835 (name: 'touch-events'): void | boolean;
836 836 (name: 'pointer-events'): void | boolean;
837 837 (name: 'MSPointer'): void | boolean;
838 838 (name: 'device-width'): void | number;
839 839 (name: 'dom-attributes-explicit'): void | boolean;
840 840 (name: 'dom-attributes-specified-flag'): void | boolean;
841 841 // dojo/_base/browser
842 842 (name: 'config-selectorEngine'): string;
843 843
844 844 cache: HasCache;
845 845
846 846 /**
847 847 * Register a new feature test for some named feature.
848 848 */
849 849 add(name: string | number, test: HasTestFunction, now?: boolean, force?: boolean): any;
850 850 add<T extends (Object | string | number | boolean | null | void)>(name: string | number, test: T, now?: boolean, force?: boolean): any;
851 851
852 852 /**
853 853 * Deletes the contents of the element passed to test functions.
854 854 */
855 855 clearElement(element: HTMLElement): HTMLElement;
856 856
857 857 /**
858 858 * Resolves id into a module id based on possibly-nested tenary expression that branches on has feature test value(s).
859 859 */
860 860 normalize(id: string, toAbsMid: Function): string; /* TODO: Align with loader api */
861 861
862 862 /**
863 863 * Conditional loading of AMD modules based on a has feature test value.
864 864 */
865 865 load(id: string, parentRequire: Function, loaded: Function): void; /* TODO: Align with loader api */
866 866 }
867 867
868 868 /* dojo/hash */
869 869
870 870 interface Hash {
871 871 (hash?: string, replace?: boolean): string;
872 872 }
873 873
874 874 /* dojo/hccss */
875 875
876 876 /* this only does has.add and re-exports the has interface */
877 877 interface Has {
878 878 (name: 'highcontrast'): void | boolean;
879 879 }
880 880
881 881 /* dojo/html */
882 882
883 883 type ContentSetterContent = string | Node | ArrayLike<Node>;
884 884
885 885 interface ContentSetterParams {
886 886 node?: NodeOrString;
887 887 content?: ContentSetterContent;
888 888 id?: string;
889 889 cleanContent?: boolean;
890 890 extractContent?: boolean;
891 891 parseContent?: boolean;
892 892 parserScope?: boolean;
893 893 startup?: boolean;
894 894 onBegin?: Function;
895 895 onEnd?: Function;
896 896 tearDown?: Function;
897 897 onContentError?: Function;
898 898 onExecError?: Function;
899 899 }
900 900
901 901 interface ContentSetter {
902 902
903 903 /**
904 904 * An node which will be the parent element that we set content into
905 905 */
906 906 node: NodeOrString;
907 907
908 908 /**
909 909 * The content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes
910 910 */
911 911 content: ContentSetterContent;
912 912
913 913 /**
914 914 * Usually only used internally, and auto-generated with each instance
915 915 */
916 916 id: string;
917 917
918 918 /**
919 919 * Should the content be treated as a full html document,
920 920 * and the real content stripped of <html>, <body> wrapper before injection
921 921 */
922 922 cleanContent: boolean;
923 923
924 924 /**
925 925 * Should the content be treated as a full html document,
926 926 * and the real content stripped of `<html> <body>` wrapper before injection
927 927 */
928 928 extractContent: boolean;
929 929
930 930 /**
931 931 * Should the node by passed to the parser after the new content is set
932 932 */
933 933 parseContent: boolean;
934 934
935 935 /**
936 936 * Flag passed to parser. Root for attribute names to search for. If scopeName is dojo,
937 937 * will search for data-dojo-type (or dojoType). For backwards compatibility
938 938 * reasons defaults to dojo._scopeName (which is "dojo" except when
939 939 * multi-version support is used, when it will be something like dojo16, dojo20, etc.)
940 940 */
941 941 parserScope: string;
942 942
943 943 /**
944 944 * Start the child widgets after parsing them. Only obeyed if parseContent is true.
945 945 */
946 946 startup: boolean;
947 947
948 948 /**
949 949 * front-end to the set-content sequence
950 950 */
951 951 set(cont?: ContentSetterContent, params?: ContentSetterParams): promise.Promise<Node> | Node;
952 952
953 953 /**
954 954 * sets the content on the node
955 955 */
956 956 setContent(): void;
957 957
958 958 /**
959 959 * cleanly empty out existing content
960 960 */
961 961 empty(): void;
962 962
963 963 /**
964 964 * Called after instantiation, but before set();
965 965 * It allows modification of any of the object properties -
966 966 * including the node and content provided - before the set operation actually takes place
967 967 */
968 968 onBegin(): Node;
969 969
970 970 /**
971 971 * Called after set(), when the new content has been pushed into the node
972 972 * It provides an opportunity for post-processing before handing back the node to the caller
973 973 * This default implementation checks a parseContent flag to optionally run the dojo parser over the new content
974 974 */
975 975 onEnd(): Node;
976 976
977 977 /**
978 978 * manually reset the Setter instance if its being re-used for example for another set()
979 979 */
980 980 tearDown(): void;
981 981
982 982 onContentError(): string;
983 983 onExecError(): string;
984 984 _mixin(params: ContentSetterParams): void;
985 985 parseDeferred: Deferred<any[]>;
986 986
987 987 /**
988 988 * runs the dojo parser over the node contents, storing any results in this.parseResults
989 989 */
990 990 _parse(): void;
991 991
992 992 /**
993 993 * shows user the string that is returned by on[type]Error
994 994 * override/implement on[type]Error and return your own string to customize
995 995 */
996 996 _onError(type: string, err: Error, consoleText?: string): void;
997 997 }
998 998
999 999 interface ContentSetterConstructor extends _base.DeclareConstructor<ContentSetter> {
1000 1000 new (params?: ContentSetterParams, node?: NodeOrString): ContentSetter;
1001 1001 }
1002 1002
1003 1003 interface Html {
1004 1004 /**
1005 1005 * removes !DOCTYPE and title elements from the html string.
1006 1006 *
1007 1007 * khtml is picky about dom faults, you can't attach a style or `<title>` node as child of body
1008 1008 * must go into head, so we need to cut out those tags
1009 1009 */
1010 1010 _secureForInnerHtml(cont: string): string;
1011 1011
1012 1012 /**
1013 1013 * Deprecated, should use dojo/dom-constuct.empty() directly, remove in 2.0.
1014 1014 */
1015 1015 _emptyNode(node: NodeOrString): void;
1016 1016
1017 1017 /**
1018 1018 * inserts the given content into the given node
1019 1019 */
1020 1020 _setNodeContent<T extends Node>(node: Node, cont: string | Node | ArrayLike<T>): Node;
1021 1021
1022 1022 _ContentSetter: ContentSetterConstructor;
1023 1023
1024 1024 /**
1025 1025 * inserts (replaces) the given content into the given node. dojo/dom-construct.place(cont, node, "only")
1026 1026 * may be a better choice for simple HTML insertion.
1027 1027 */
1028 1028 set(node: Node, cont?: ContentSetterContent, params?: ContentSetterParams): promise.Promise<Node> | Node;
1029 1029 }
1030 1030
1031 1031 /* dojo/i18n */
1032 1032
1033 1033 interface I18n {
1034 1034 getLocalization(moduleName: string, bundleName: string, locale?: string): any;
1035 1035
1036 1036 dynamic: boolean;
1037 1037
1038 1038 /**
1039 1039 * Resolves id into a module id based on possibly-nested tenary expression that branches on has feature test value(s).
1040 1040 */
1041 1041 normalize(id: string, toAbsMid: Function): string; /* TODO: Align with loader api */
1042 1042
1043 1043 normalizeLocale(locale?: string): string;
1044 1044
1045 1045 /**
1046 1046 * Conditional loading of AMD modules based on a has feature test value.
1047 1047 */
1048 1048 load(id: string, parentRequire: Function, loaded: Function): void; /* TODO: Align with loader api */
1049 1049
1050 1050 cache: { [bundle: string]: any };
1051 1051
1052 1052 getL10nName(moduleName: string, bundleName: string, locale?: string): string;
1053 1053 }
1054 1054
1055 1055 /* dojo/io-query */
1056 1056
1057 1057 interface IoQuery {
1058 1058 /**
1059 1059 * takes a name/value mapping object and returns a string representing
1060 1060 * a URL-encoded version of that object.
1061 1061 */
1062 1062 objectToQuery(map: GenericObject): string;
1063 1063
1064 1064 /**
1065 1065 * Create an object representing a de-serialized query section of a
1066 1066 * URL. Query keys with multiple values are returned in an array.
1067 1067 */
1068 1068 queryToObject(str: string): GenericObject;
1069 1069 }
1070 1070
1071 1071 /* dojo/json */
1072 1072
1073 1073 interface Json {
1074 1074
1075 1075 /**
1076 1076 * Parses a [JSON](http://json.org) string to return a JavaScript object.
1077 1077 */
1078 1078 parse(str: string, strict?: boolean): any;
1079 1079
1080 1080 /**
1081 1081 * Returns a [JSON](http://json.org) serialization of an object.
1082 1082 */
1083 1083 stringify(value: any, replacer?: (key: string, value: any) => any| any[], space?: string | number): string;
1084 1084 }
1085 1085
1086 1086 /* dojo/keys */
1087 1087
1088 1088 interface Keys {
1089 1089 BACKSPACE: number;
1090 1090 TAB: number;
1091 1091 CLEAR: number;
1092 1092 ENTER: number;
1093 1093 SHIFT: number;
1094 1094 CTRL: number;
1095 1095 ALT: number;
1096 1096 META: number;
1097 1097 PAUSE: number;
1098 1098 CAPS_LOCK: number;
1099 1099 ESCAPE: number;
1100 1100 SPACE: number;
1101 1101 PAGE_UP: number;
1102 1102 PAGE_DOWN: number;
1103 1103 END: number;
1104 1104 HOME: number;
1105 1105 LEFT_ARROW: number;
1106 1106 UP_ARROW: number;
1107 1107 RIGHT_ARROW: number;
1108 1108 DOWN_ARROW: number;
1109 1109 INSERT: number;
1110 1110 DELETE: number;
1111 1111 HELP: number;
1112 1112 LEFT_WINDOW: number;
1113 1113 RIGHT_WINDOW: number;
1114 1114 SELECT: number;
1115 1115 NUMPAD_0: number;
1116 1116 NUMPAD_1: number;
1117 1117 NUMPAD_2: number;
1118 1118 NUMPAD_3: number;
1119 1119 NUMPAD_4: number;
1120 1120 NUMPAD_5: number;
1121 1121 NUMPAD_6: number;
1122 1122 NUMPAD_7: number;
1123 1123 NUMPAD_8: number;
1124 1124 NUMPAD_9: number;
1125 1125 NUMPAD_MULTIPLY: number;
1126 1126 NUMPAD_PLUS: number;
1127 1127 NUMPAD_ENTER: number;
1128 1128 NUMPAD_MINUS: number;
1129 1129 NUMPAD_PERIOD: number;
1130 1130 NUMPAD_DIVIDE: number;
1131 1131 F1: number;
1132 1132 F2: number;
1133 1133 F3: number;
1134 1134 F4: number;
1135 1135 F5: number;
1136 1136 F6: number;
1137 1137 F7: number;
1138 1138 F8: number;
1139 1139 F9: number;
1140 1140 F10: number;
1141 1141 F11: number;
1142 1142 F12: number;
1143 1143 F13: number;
1144 1144 F14: number;
1145 1145 F15: number;
1146 1146 NUM_LOCK: number;
1147 1147 SCROLL_LOCK: number;
1148 1148 UP_DPAD: number;
1149 1149 DOWN_DPAD: number;
1150 1150 LEFT_DPAD: number;
1151 1151 RIGHT_DPAD: number;
1152 1152 copyKey: number;
1153 1153 }
1154 1154
1155 1155 /* dojo/loadInit */
1156 1156
1157 1157 interface LoadInit {
1158 1158 dynamic: number;
1159 1159
1160 1160 /**
1161 1161 * Resolves id into a module id based on possibly-nested tenary expression that branches on has feature test value(s).
1162 1162 */
1163 1163 normalize(id: string, toAbsMid: Function): string; /* TODO: Align with loader api */
1164 1164
1165 1165 /**
1166 1166 * Conditional loading of AMD modules based on a has feature test value.
1167 1167 */
1168 1168 load(id: string, parentRequire: Function, loaded: Function): void; /* TODO: Align with loader api */
1169 1169 }
1170 1170
1171 1171 /* dojo/mouse */
1172 1172
1173 1173 interface Mouse {
1174 1174 _eventHandler(type: string, selectHandler?: (evt: MouseEvent, listener: EventListener) => void): MouseEvent;
1175 1175
1176 1176 /**
1177 1177 * This is an extension event for the mouseenter that IE provides, emulating the
1178 1178 * behavior on other browsers.
1179 1179 */
1180 1180 enter: MouseEvent;
1181 1181
1182 1182 /**
1183 1183 * This is an extension event for the mouseleave that IE provides, emulating the
1184 1184 * behavior on other browsers.
1185 1185 */
1186 1186 leave: MouseEvent;
1187 1187
1188 1188 /**
1189 1189 * This is an extension event for the mousewheel that non-Mozilla browsers provide,
1190 1190 * emulating the behavior on Mozilla based browsers.
1191 1191 */
1192 1192 wheel: string | ExtensionEvent;
1193 1193
1194 1194 /**
1195 1195 * Test an event object (from a mousedown event) to see if the left button was pressed.
1196 1196 */
1197 1197 isLeft(e: MouseEvent): boolean;
1198 1198
1199 1199 /**
1200 1200 * Test an event object (from a mousedown event) to see if the middle button was pressed.
1201 1201 */
1202 1202 isMiddle(e: MouseEvent): boolean;
1203 1203
1204 1204 /**
1205 1205 * Test an event object (from a mousedown event) to see if the right button was pressed.
1206 1206 */
1207 1207 isRight(e: MouseEvent): boolean;
1208 1208 }
1209 1209
1210 1210 /* dojo/node */
1211 1211
1212 1212 /* should only be used for re-exporting CommonJS modules */
1213 1213
1214 1214 /* dojo/NodeList */
1215 1215
1216 1216 /* Just proxies dojo/query::NodeList */
1217 1217
1218 1218 /* dojo/NodeList-* are included as seperate .d.ts files */
1219 1219
1220 1220 /* dojo/number */
1221 1221
1222 1222 interface NumberFormatOptions {
1223 1223
1224 1224 /**
1225 1225 * override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
1226 1226 * with this string. Default value is based on locale. Overriding this property will defeat
1227 1227 * localization. Literal characters in patterns are not supported.
1228 1228 */
1229 1229 pattern?: string;
1230 1230
1231 1231 /**
1232 1232 * choose a format type based on the locale from the following:
1233 1233 * decimal, scientific (not yet supported), percent, currency. decimal by default.
1234 1234 */
1235 1235 type?: string;
1236 1236
1237 1237 /**
1238 1238 * fixed number of decimal places to show. This overrides any
1239 1239 * information in the provided pattern.
1240 1240 */
1241 1241 places?: number;
1242 1242
1243 1243 /**
1244 1244 * 5 rounds to nearest .5; 0 rounds to nearest whole (default). -1
1245 1245 * means do not round.
1246 1246 */
1247 1247 round?: number;
1248 1248
1249 1249 /**
1250 1250 * override the locale used to determine formatting rules
1251 1251 */
1252 1252 locale?: string;
1253 1253
1254 1254 /**
1255 1255 * If false, show no decimal places, overriding places and pattern settings.
1256 1256 */
1257 1257 fractional?: boolean | [ boolean, boolean ];
1258 1258 }
1259 1259
1260 1260 interface NumberFormatAbsoluteOptions {
1261 1261 /**
1262 1262 * the decimal separator
1263 1263 */
1264 1264 decimal?: string;
1265 1265
1266 1266 /**
1267 1267 * the group separator
1268 1268 */
1269 1269 group?: string;
1270 1270
1271 1271 /**
1272 1272 * number of decimal places. the range "n,m" will format to m places.
1273 1273 */
1274 1274 places?: number | string;
1275 1275
1276 1276 /**
1277 1277 * 5 rounds to nearest .5; 0 rounds to nearest whole (default). -1
1278 1278 * means don't round.
1279 1279 */
1280 1280 round?: number;
1281 1281 }
1282 1282
1283 1283 interface NumberRegexpOptions {
1284 1284
1285 1285 /**
1286 1286 * override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
1287 1287 * with this string. Default value is based on locale. Overriding this property will defeat
1288 1288 * localization.
1289 1289 */
1290 1290 pattern?: string;
1291 1291
1292 1292 /**
1293 1293 * choose a format type based on the locale from the following:
1294 1294 * decimal, scientific (not yet supported), percent, currency. decimal by default.
1295 1295 */
1296 1296 type?: string;
1297 1297
1298 1298 /**
1299 1299 * override the locale used to determine formatting rules
1300 1300 */
1301 1301 locacle?: string;
1302 1302
1303 1303 /**
1304 1304 * strict parsing, false by default. Strict parsing requires input as produced by the format() method.
1305 1305 * Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators
1306 1306 */
1307 1307 strict?: boolean;
1308 1308
1309 1309 /**
1310 1310 * number of decimal places to accept: Infinity, a positive number, or
1311 1311 * a range "n,m". Defined by pattern or Infinity if pattern not provided.
1312 1312 */
1313 1313 places?: number | string;
1314 1314 }
1315 1315
1316 1316 interface NumberParseOptions {
1317 1317
1318 1318 /**
1319 1319 * override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
1320 1320 * with this string. Default value is based on locale. Overriding this property will defeat
1321 1321 * localization. Literal characters in patterns are not supported.
1322 1322 */
1323 1323 pattern?: string;
1324 1324
1325 1325 /**
1326 1326 * choose a format type based on the locale from the following:
1327 1327 * decimal, scientific (not yet supported), percent, currency. decimal by default.
1328 1328 */
1329 1329 type?: string;
1330 1330
1331 1331 /**
1332 1332 * override the locale used to determine formatting rules
1333 1333 */
1334 1334 locale?: string;
1335 1335
1336 1336 /**
1337 1337 * strict parsing, false by default. Strict parsing requires input as produced by the format() method.
1338 1338 * Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators
1339 1339 */
1340 1340 strict?: boolean;
1341 1341
1342 1342 /**
1343 1343 * Whether to include the fractional portion, where the number of decimal places are implied by pattern
1344 1344 * or explicit 'places' parameter. The value [true,false] makes the fractional portion optional.
1345 1345 */
1346 1346 fractional?: boolean | [boolean, boolean];
1347 1347 }
1348 1348
1349 1349 interface RealNumberRegexpFlags {
1350 1350
1351 1351 /**
1352 1352 * The integer number of decimal places or a range given as "n,m". If
1353 1353 * not given, the decimal part is optional and the number of places is
1354 1354 * unlimited.
1355 1355 */
1356 1356 places?: number;
1357 1357
1358 1358 /**
1359 1359 * A string for the character used as the decimal point. Default
1360 1360 * is ".".
1361 1361 */
1362 1362 decimal?: string;
1363 1363
1364 1364 /**
1365 1365 * Whether decimal places are used. Can be true, false, or [true,
1366 1366 * false]. Default is [true, false] which means optional.
1367 1367 */
1368 1368 fractional?: boolean | [boolean, boolean];
1369 1369
1370 1370 /**
1371 1371 * Express in exponential notation. Can be true, false, or [true,
1372 1372 * false]. Default is [true, false], (i.e. will match if the
1373 1373 * exponential part is present are not).
1374 1374 */
1375 1375 exponent?: boolean | [boolean, boolean];
1376 1376
1377 1377 /**
1378 1378 * The leading plus-or-minus sign on the exponent. Can be true,
1379 1379 * false, or [true, false]. Default is [true, false], (i.e. will
1380 1380 * match if it is signed or unsigned). flags in regexp.integer can be
1381 1381 * applied.
1382 1382 */
1383 1383 eSigned?: boolean | [boolean, boolean];
1384 1384 }
1385 1385
1386 1386 interface IntegerRegexpFlags {
1387 1387
1388 1388 /**
1389 1389 * The leading plus-or-minus sign. Can be true, false, or `[true,false]`.
1390 1390 * Default is `[true, false]`, (i.e. will match if it is signed
1391 1391 * or unsigned).
1392 1392 */
1393 1393 signed?: boolean;
1394 1394
1395 1395 /**
1396 1396 * The character used as the thousands separator. Default is no
1397 1397 * separator. For more than one symbol use an array, e.g. `[",", ""]`,
1398 1398 * makes ',' optional.
1399 1399 */
1400 1400 separator?: string;
1401 1401
1402 1402 /**
1403 1403 * group size between separators
1404 1404 */
1405 1405 groupSize?: number;
1406 1406
1407 1407 /**
1408 1408 * second grouping, where separators 2..n have a different interval than the first separator (for India)
1409 1409 */
1410 1410 groupSize2?: number;
1411 1411 }
1412 1412
1413 1413 interface Number {
1414 1414 /**
1415 1415 * Format a Number as a String, using locale-specific settings
1416 1416 */
1417 1417 format(value: number, options?: NumberFormatOptions): string;
1418 1418
1419 1419 /**
1420 1420 * not precise, but good enough
1421 1421 */
1422 1422 _numberPatternRE: RegExp;
1423 1423
1424 1424 /**
1425 1425 * Apply pattern to format value as a string using options. Gives no
1426 1426 * consideration to local customs.
1427 1427 */
1428 1428 _applyPattern(value: number, pattern: string, options?: NumberFormatOptions): string;
1429 1429
1430 1430 /**
1431 1431 * Rounds to the nearest value with the given number of decimal places, away from zero
1432 1432 */
1433 1433 round(value: number, places?: number, increment?: number): number;
1434 1434
1435 1435 /**
1436 1436 * Apply numeric pattern to absolute value using options. Gives no
1437 1437 * consideration to local customs.
1438 1438 */
1439 1439 _formatAbsolute(value: number, pattern: string, options?: NumberFormatAbsoluteOptions): string;
1440 1440
1441 1441 /**
1442 1442 * Builds the regular needed to parse a number
1443 1443 */
1444 1444 regexp(options?: NumberRegexpOptions): string;
1445 1445
1446 1446 _parseInfo(options?: any): { regexp: string, group: string, decimal: string, factor: number };
1447 1447
1448 1448 /**
1449 1449 * Convert a properly formatted string to a primitive Number, using
1450 1450 * locale-specific settings.
1451 1451 */
1452 1452 parse(expression: string, options?: NumberParseOptions): number;
1453 1453
1454 1454 /**
1455 1455 * Builds a regular expression to match a real number in exponential
1456 1456 * notation
1457 1457 */
1458 1458 _realNumberRegexp(flags: RealNumberRegexpFlags): string;
1459 1459
1460 1460 /**
1461 1461 * Builds a regular expression that matches an integer
1462 1462 */
1463 1463 _integerRegexp(flags: IntegerRegexpFlags): string;
1464 1464 }
1465 1465
1466 1466 /* dojo/on */
1467 1467
1468 1468 interface ExtensionEvent {
1469 1469 (target: Element | GenericObject, listener: EventListener): Handle;
1470 1470 }
1471 1471
1472 1472 interface PauseHandle extends Handle {
1473 1473 pause(): void;
1474 1474 resume(): void;
1475 1475 }
1476 1476
1477 1477 interface MatchesTarget {
1478 1478 matches(node: Element, selector: string, context?: any): any[];
1479 1479 [id: string]: any;
1480 1480 }
1481 1481
1482 1482 interface On {
1483 1483 /**
1484 1484 * A function that provides core event listening functionality. With this function
1485 1485 * you can provide a target, event type, and listener to be notified of
1486 1486 * future matching events that are fired.
1487 1487 */
1488 1488 (target: Element | GenericObject, type: string | ExtensionEvent, listener: EventListener | Function, dontFix?: boolean): Handle;
1489 1489
1490 1490 /**
1491 1491 * This function acts the same as on(), but with pausable functionality. The
1492 1492 * returned signal object has pause() and resume() functions. Calling the
1493 1493 * pause() method will cause the listener to not be called for future events.
1494 1494 */
1495 1495 pausable(target: Element | GenericObject, type: string | ExtensionEvent, listener: EventListener | Function, dontFix?: boolean): PauseHandle;
1496 1496
1497 1497 /**
1498 1498 * This function acts the same as on(), but will only call the listener once. The
1499 1499 * listener will be called for the first
1500 1500 * event that takes place and then listener will automatically be removed.
1501 1501 */
1502 1502 once(target: Element | GenericObject, type: string | ExtensionEvent, listener: EventListener | Function, dontFix?: boolean): Handle;
1503 1503
1504 1504 parse(target: Element | GenericObject, type: string | ExtensionEvent, listener: EventListener | Function, dontFix: boolean, matchesTarget: Element | GenericObject): Handle;
1505 1505
1506 1506 /**
1507 1507 * Check if a node match the current selector within the constraint of a context
1508 1508 */
1509 1509 matches(node: Element, selector: string, context: Element, children: boolean, matchesTarget?: MatchesTarget): Element | boolean;
1510 1510
1511 1511 /**
1512 1512 * Creates a new extension event with event delegation. This is based on
1513 1513 * the provided event type (can be extension event) that
1514 1514 * only calls the listener when the CSS selector matches the target of the event.
1515 1515 *
1516 1516 * The application must require() an appropriate level of dojo/query to handle the selector.
1517 1517 */
1518 1518 selector(selector: string, type: string | ExtensionEvent, children?: boolean): ExtensionEvent;
1519 1519
1520 1520 /**
1521 1521 * Fires an event on the target object.
1522 1522 */
1523 1523 emit(target: Element | GenericObject, type: string | ExtensionEvent, event?: any): boolean;
1524 1524
1525 1525 /**
1526 1526 * normalizes properties on the event object including event
1527 1527 * bubbling methods, keystroke normalization, and x/y positions
1528 1528 */
1529 1529 _fixEvent(evt: any, sender: any): any;
1530 1530 }
1531 1531
1532 1532 /* dojo/parser */
1533 1533
1534 1534 interface ParserOptions { }
1535 1535
1536 1536 interface ParserObjects {
1537 1537 ctor?: GenericConstructor<any>;
1538 1538 types?: string[];
1539 1539 node: Node;
1540 1540 scripts?: HTMLScriptElement[];
1541 1541 inherited?: { [prop: string]: any; };
1542 1542 }
1543 1543
1544 1544 interface InstancesArray extends Array<any>, promise.Promise<any> {}
1545 1545
1546 1546 interface Parser {
1547 1547 /**
1548 1548 * Clear cached data. Used mainly for benchmarking.
1549 1549 */
1550 1550 _clearCache(): void;
1551 1551
1552 1552 /**
1553 1553 * Convert a `<script type="dojo/method" args="a, b, c"> ... </script>`
1554 1554 * into a function
1555 1555 */
1556 1556 _functionFromScript(node: HTMLScriptElement, attrData: string): Function;
1557 1557
1558 1558 /**
1559 1559 * Takes array of nodes, and turns them into class instances and
1560 1560 * potentially calls a startup method to allow them to connect with
1561 1561 * any children.
1562 1562 */
1563 1563 instantiate(nodes: Node[], mixin?: Object, options?: ParserOptions): any[];
1564 1564
1565 1565 /**
1566 1566 * Takes array of objects representing nodes, and turns them into class instances and
1567 1567 * potentially calls a startup method to allow them to connect with
1568 1568 * any children.
1569 1569 */
1570 1570 _instantiate(nodes: ParserObjects[], mixin?: Object, options?: ParserOptions, returnPromise?: boolean): any[] | promise.Promise<any[]>;
1571 1571
1572 1572 /**
1573 1573 * Calls new ctor(params, node), where params is the hash of parameters specified on the node,
1574 1574 * excluding data-dojo-type and data-dojo-mixins. Does not call startup().
1575 1575 */
1576 1576 construct<T>(
1577 1577 ctor: GenericConstructor<T>,
1578 1578 node: Node, mixin?: Object,
1579 1579 options?: ParserOptions,
1580 1580 scripts?: HTMLScriptElement[],
1581 1581 inherited?: { [prop: string]: any; }
1582 1582 ): promise.Promise<T> | T;
1583 1583
1584 1584 /**
1585 1585 * Scan a DOM tree and return an array of objects representing the DOMNodes
1586 1586 * that need to be turned into widgets.
1587 1587 */
1588 1588 scan(root?: Node, options?: ParserOptions): promise.Promise<ParserObjects[]>;
1589 1589
1590 1590 /**
1591 1591 * Helper for _scanAMD(). Takes a `<script type=dojo/require>bar: "acme/bar", ...</script>` node,
1592 1592 * calls require() to load the specified modules and (asynchronously) assign them to the specified global
1593 1593 * variables, and returns a Promise for when that operation completes.
1594 1594 *
1595 1595 * In the example above, it is effectively doing a require(["acme/bar", ...], function(a){ bar = a; }).
1596 1596 */
1597 1597 _require(script: HTMLScriptElement, options: ParserOptions): promise.Promise<any>;
1598 1598
1599 1599 /**
1600 1600 * Scans the DOM for any declarative requires and returns their values.
1601 1601 */
1602 1602 _scanAmd(root?: Node, options?: ParserOptions): promise.Promise<boolean>;
1603 1603
1604 1604 /**
1605 1605 * Scan the DOM for class instances, and instantiate them.
1606 1606 */
1607 1607 parse(rootNode?: Node, options?: ParserOptions): InstancesArray;
1608 1608 }
1609 1609
1610 1610 /* dojo/query */
1611 1611
1612 1612 interface NodeListFilterCallback<T extends Node> {
1613 1613 (item: T, idx: number, nodeList: this): boolean;
1614 1614 }
1615 1615
1616 1616 type NodeListFilter<T extends Node> = string | NodeListFilterCallback<T>;
1617 1617
1618 1618 interface NodeList<T extends Node> extends ArrayLike<T> {
1619 1619 /**
1620 1620 * decorate an array to make it look like a `dojo/NodeList`.
1621 1621 */
1622 1622 _wrap<U extends Node, V extends Node>(a: U[], parent?: NodeList<V>, NodeListCtor?: NodeListConstructor): NodeList<U>;
1623 1623
1624 1624 _NodeListCtor: NodeListConstructor;
1625 1625 toString(): string;
1626 1626
1627 1627 /**
1628 1628 * private function to hold to a parent NodeList. end() to return the parent NodeList.
1629 1629 */
1630 1630 _stash(parent: Node): this;
1631 1631
1632 1632 /**
1633 1633 * Listen for events on the nodes in the NodeList.
1634 1634 */
1635 1635 on(eventName: string, listener: EventListener): Handle[];
1636 1636
1637 1637 /**
1638 1638 * Ends use of the current `NodeList` by returning the previous NodeList
1639 1639 * that generated the current NodeList.
1640 1640 */
1641 1641 end<U extends Node>(): NodeList<U>;
1642 1642
1643 1643 /**
1644 1644 * Returns a new NodeList, maintaining this one in place
1645 1645 */
1646 1646 slice(begin: number, end?: number): this;
1647 1647
1648 1648 /**
1649 1649 * Returns a new NodeList, manipulating this NodeList based on
1650 1650 * the arguments passed, potentially splicing in new elements
1651 1651 * at an offset, optionally deleting elements
1652 1652 */
1653 1653 splice(index: number, howmany?: number, ...items: T[]): this;
1654 1654
1655 1655 /**
1656 1656 * see `dojo/_base/array.indexOf()`. The primary difference is that the acted-on
1657 1657 * array is implicitly this NodeList
1658 1658 */
1659 1659 indexOf(value: T, fromIndex?: number, findLast?: boolean): number;
1660 1660
1661 1661 /**
1662 1662 * see `dojo/_base/array.lastIndexOf()`. The primary difference is that the
1663 1663 * acted-on array is implicitly this NodeList
1664 1664 */
1665 1665 lastIndexOf(value: T, fromIndex?: number): number;
1666 1666
1667 1667 /**
1668 1668 * see `dojo/_base/array.every()` and the [Array.every
1669 1669 * docs](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every).
1670 1670 * Takes the same structure of arguments and returns as
1671 1671 * dojo/_base/array.every() with the caveat that the passed array is
1672 1672 * implicitly this NodeList
1673 1673 */
1674 1674 every(callback: (item: T, idx: number, nodeList: this) => boolean | string, thisObj?: Object): boolean;
1675 1675
1676 1676 /**
1677 1677 * Takes the same structure of arguments and returns as
1678 1678 * `dojo/_base/array.some()` with the caveat that the passed array as
1679 1679 * implicitly this NodeList. See `dojo/_base/array.some()` and Mozillaas
1680 1680 * [Array.soas
1681 1681 * documentation](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some).
1682 1682 */
1683 1683 some(callback: (item: T, idx: number, nodeList: this) => boolean | string, thisObj?: Object): boolean;
1684 1684
1685 1685 /**
1686 1686 * Returns a new NodeList comprised of items in this NodeList
1687 1687 * as well as items passed in as parameters
1688 1688 */
1689 1689 concat(...items: T[]): this;
1690 1690
1691 1691 /**
1692 1692 * see `dojo/_base/array.map()`. The primary difference is that the acted-on
1693 1693 * array is implicitly this NodeList and the return is a
1694 1694 * NodeList (a subclass of Array)
1695 1695 */
1696 1696 map<U extends Node>(func: (item: T, idx: number, nodeList: this) => U, obj?: Object): NodeList<U>;
1697 1697
1698 1698 /**
1699 1699 * see `dojo/_base/array.forEach()`. The primary difference is that the acted-on
1700 1700 * array is implicitly this NodeList. If you want the option to break out
1701 1701 * of the forEach loop, use every() or some() instead.
1702 1702 */
1703 1703 forEach(callback: (item: T, idx: number, nodeList: this) => void, thisObj?: Object): this;
1704 1704
1705 1705 /**
1706 1706 * "masks" the built-in javascript filter() method (supported
1707 1707 * in Dojo via `dojo/_base/array.filter`) to support passing a simple
1708 1708 * string filter in addition to supporting filtering function
1709 1709 * objects.
1710 1710 */
1711 1711 filter<U extends Node>(filter: NodeListFilter<T>, thisObj?: Object): NodeList<U>;
1712 1712
1713 1713 /**
1714 1714 * Create a new instance of a specified class, using the
1715 1715 * specified properties and each node in the NodeList as a
1716 1716 * srcNodeRef.
1717 1717 */
1718 1718 instantiate(declaredClass: string | GenericConstructor<any>, properties?: Object): this;
1719 1719
1720 1720 /**
1721 1721 * Returns a new NodeList comprised of items in this NodeList
1722 1722 * at the given index or indices.
1723 1723 */
1724 1724 at(...indices: number[]): this;
1725 1725
1726 1726 }
1727 1727
1728 1728 interface NodeListConstructor {
1729 1729 new <T extends Node>(array: number | Array<T>): NodeList<T>;
1730 1730 new <T extends Node>(...args: T[]): NodeList<T>;
1731 1731 <T extends Node>(array: number | Array<T>): NodeList<T>;
1732 1732 <T extends Node>(...args: T[]): NodeList<T>;
1733 1733
1734 1734 prototype: NodeList<any>;
1735 1735
1736 1736 /**
1737 1737 * decorate an array to make it look like a `dojo/NodeList`.
1738 1738 */
1739 1739 _wrap<U extends Node, V extends Node>(a: U[], parent?: NodeList<V>, NodeListCtor?: NodeListConstructor): NodeList<U>;
1740 1740
1741 1741 /**
1742 1742 * adapts a single node function to be used in the map-type
1743 1743 * actions. The return is a new array of values, as via `dojo/_base/array.map`
1744 1744 */
1745 1745 _adaptAsMap<T extends Node, U extends Node>(f: (node: T) => U, o?: Object): NodeList<U>;
1746 1746
1747 1747 /**
1748 1748 * adapts a single node function to be used in the forEach-type
1749 1749 * actions. The initial object is returned from the specialized
1750 1750 * function.
1751 1751 */
1752 1752 _adaptAsForEach<T extends Node>(f: (node: T) => void, o?: Object): this;
1753 1753
1754 1754 /**
1755 1755 * adapts a single node function to be used in the filter-type actions
1756 1756 */
1757 1757 _adaptAsFilter<T extends Node>(f: (node: T) => boolean, o?: Object): this;
1758 1758
1759 1759 /**
1760 1760 * adapts a single node function to be used in the map-type
1761 1761 * actions, behaves like forEach() or map() depending on arguments
1762 1762 */
1763 1763 _adaptWithCondition<T extends Node, U extends Node>(f: (node: T) => U | void, g: (...args: any[]) => boolean, o?: Object): NodeList<U> | this;
1764 1764 }
1765 1765
1766 1766 interface Query {
1767 1767 /**
1768 1768 * Returns nodes which match the given CSS selector, searching the
1769 1769 * entire document by default but optionally taking a node to scope
1770 1770 * the search by. Returns an instance of NodeList.
1771 1771 */
1772 1772 <T extends Node>(query: string, root?: NodeOrString): NodeList<T>;
1773 1773
1774 1774 /**
1775 1775 * Test to see if a node matches a selector
1776 1776 */
1777 1777 matches(node: Node, selector: string, root?: NodeOrString): boolean;
1778 1778
1779 1779 /**
1780 1780 * Filters an array of nodes. Note that this does not guarantee to return a NodeList, just an array.
1781 1781 */
1782 1782 filter<T extends Node>(nodes: NodeList<T> | T[], select: string, root?: NodeOrString): T[] | NodeList<T>;
1783 1783
1784 1784 /**
1785 1785 * can be used as AMD plugin to conditionally load new query engine
1786 1786 */
1787 1787 load(id: string, parentRequire: Function, loaded: Function): void; /* TODO: Align with loader api */
1788 1788 }
1789 1789
1790 1790 /* dojo/ready */
1791 1791
1792 1792 interface Ready {
1793 1793 /**
1794 1794 * Add a function to execute on DOM content loaded and all requested modules have arrived and been evaluated.
1795 1795 * In most cases, the `domReady` plug-in should suffice and this method should not be needed.
1796 1796 *
1797 1797 * When called in a non-browser environment, just checks that all requested modules have arrived and been
1798 1798 * evaluated.
1799 1799 */
1800 1800 (callback: Function): void;
1801 1801 (context: Object, callback: Function | string): void;
1802 1802 (priority: number, callback: Function): void;
1803 1803 (priority: number, context: Object, callback: Function | string): void;
1804 1804 }
1805 1805
1806 1806 /* dojo/regexp */
1807 1807
1808 1808 interface RegExpModule {
1809 1809 /**
1810 1810 * Adds escape sequences for special characters in regular expressions
1811 1811 */
1812 1812 escapeString(str: string, except?: string): string;
1813 1813
1814 1814 /**
1815 1815 * Builds a regular expression that groups subexpressions
1816 1816 */
1817 1817 buildGroupRE(arr: any[] | Object, re: (item: any) => string, nonCapture?: boolean): string;
1818 1818
1819 1819 /**
1820 1820 * adds group match to expression
1821 1821 */
1822 1822 group(expression: string, nonCapture?: boolean): string;
1823 1823 }
1824 1824
1825 1825 /* dojo/request */
1826 1826
1827 1827 /* This is contained in request.d.ts */
1828 1828
1829 1829 /* dojo/require */
1830 1830
1831 1831 interface RequirePlugin {
1832 1832 dynamic: number;
1833 1833 normalize(id: string): string;
1834 1834 load(mid: string, require: any, loaded: (...modules: any[]) => void): void;
1835 1835 }
1836 1836
1837 1837 /* dojo/robot */
1838 1838
1839 1839 interface Robot extends doh.Robot {
1840 1840 _resolveNode(n: NodeOrString | (() => Node)): Node;
1841 1841 _scrollIntoView(n: Node): void;
1842 1842 _position(n: Node): DomGeometryBoxExtents;
1843 1843 _getWindowChain(n: Node): Window[];
1844 1844
1845 1845 /**
1846 1846 * Scroll the passed node into view, if it is not.
1847 1847 */
1848 1848 scrollIntoView(node: NodeOrString | (() => Node), delay?: number): void;
1849 1849
1850 1850 /**
1851 1851 * Moves the mouse over the specified node at the specified relative x,y offset.
1852 1852 */
1853 1853 mouseMoveAt(
1854 1854 node: NodeOrString | (() => Node),
1855 1855 delay?: number,
1856 1856 duration?: number,
1857 1857 offsetX?: number,
1858 1858 offsetY?: number
1859 1859 ): void;
1860 1860 }
1861 1861
1862 1862 /* dojo/robotx */
1863 1863
1864 1864 interface RobotX extends Robot {
1865 1865 /**
1866 1866 * Called every time a new page is loaded into the iframe, to setup variables
1867 1867 * Point dojo.global, dojo.publish, etc. to refer to iframe.
1868 1868 * Remove for 2.0?
1869 1869 */
1870 1870 _updateDocument(): void;
1871 1871
1872 1872 /**
1873 1873 * Opens the application at the specified URL for testing, redirecting dojo to point to the application
1874 1874 * environment instead of the test environment.
1875 1875 */
1876 1876 initRobot(url: string): void;
1877 1877
1878 1878 /**
1879 1879 * Notifies DOH that the doh.robot is about to make a page change in the application it is driving,
1880 1880 * returning a doh.Deferred object the user should return in their runTest function as part of a DOH test.
1881 1881 */
1882 1882 waitForPageToLoad(submitActions: () => void): any;
1883 1883 }
1884 1884
1885 1885 /* dojo/router */
1886 1886
1887 1887 /* Module just exports instance of dojo.router.BaseRouter */
1888 1888
1889 1889 /* dojo/sniff */
1890 1890
1891 1891 interface Has {
1892 1892 (name: 'air'): boolean;
1893 1893 (name: 'wp'): void | number;
1894 1894 (name: 'msapp'): void | number;
1895 1895 (name: 'khtml'): void | number;
1896 1896 (name: 'edge'): void | number;
1897 1897 (name: 'opr'): void | number;
1898 1898 (name: 'webkit'): void | number;
1899 1899 (name: 'chrome'): void | number;
1900 1900 (name: 'android'): void | number;
1901 1901 (name: 'safari'): void | number;
1902 1902 (name: 'mac'): boolean;
1903 1903 (name: 'quirks'): boolean;
1904 1904 (name: 'iphone'): void | number;
1905 1905 (name: 'ipod'): void | number;
1906 1906 (name: 'ipad'): void | number;
1907 1907 (name: 'ios'): void | number;
1908 1908 (name: 'bb'): void | number | boolean;
1909 1909 (name: 'trident'): void | number;
1910 1910 (name: 'svg'): boolean;
1911 1911 (name: 'opera'): void | number;
1912 1912 (name: 'mozilla'): void | number;
1913 1913 (name: 'ff'): void | number;
1914 1914 (name: 'ie'): void | number;
1915 1915 (name: 'wii'): boolean | any;
1916 1916 }
1917 1917
1918 1918 /* Just rexports has after adding features */
1919 1919
1920 1920 /* dojo/Stateful */
1921 1921
1922 1922 interface WatchHandle extends Handle {
1923 1923 unwatch(): void;
1924 1924 }
1925 1925
1926 1926 interface Stateful<T = any> {
1927 1927 /**
1928 1928 * Used across all instances a hash to cache attribute names and their getter
1929 1929 * and setter names.
1930 1930 */
1931 1931 _attrPairNames: { [attr: string]: string };
1932 1932
1933 1933 /**
1934 1934 * Helper function for get() and set().
1935 1935 * Caches attribute name values so we don't do the string ops every time.
1936 1936 */
1937 1937 _getAttrNames(name: string): string;
1938 1938
1939 1939 /**
1940 1940 * Automatic setting of params during construction
1941 1941 */
1942 1942 postscript(params?: Object): void;
1943 1943
1944 1944 /**
1945 1945 * Get a property on a Stateful instance.
1946 1946 */
1947 1947 get<K extends keyof T & string>(name: K): T[K];
1948 1948
1949 1949 /**
1950 1950 * Set a property on a Stateful instance
1951 1951 */
1952 1952 set<K extends keyof T & string>(name: K, value: T[K]): this;
1953 1953 set<K extends { [p in keyof T]: T[p] extends any[] ? p : never; }[keyof T & string] >(name: K, ...values: T[K]): this;
1954 1954 set(values: Partial<T>): this;
1955 1955
1956 1956 /**
1957 1957 * Internal helper for directly changing an attribute value.
1958 1958 */
1959 1959 _changeAttrValue(name: string, value: any): this;
1960 1960
1961 1961 /**
1962 1962 * Watches a property for changes
1963 1963 */
1964 watch(callback: <K extends keyof T>(prop: K, oldValue: T[K], newValue: T[K]) => void): WatchHandle;
1964 watch(callback:(prop: keyof any, oldValue: any, newValue: any) => void): WatchHandle;
1965 1965 watch<K extends keyof T>(name: K, callback: (prop: K, oldValue: T[K], newValue: T[K]) => void): WatchHandle;
1966 1966 }
1967 1967
1968 1968 interface StatefulConstructor extends _base.DeclareConstructor<Stateful> {
1969 1969 new <T>(params?: Partial<T>): Stateful<T>;
1970 1970 }
1971 1971
1972 1972 /* dojo/string */
1973 1973
1974 1974 interface String {
1975 1975
1976 1976 /**
1977 1977 * Efficiently escape a string for insertion into HTML (innerHTML or attributes), replacing &, <, >, ", ', and / characters.
1978 1978 */
1979 1979 escape(str: string): string;
1980 1980
1981 1981 /**
1982 1982 * Efficiently replicate a string `n` times.
1983 1983 */
1984 1984 rep(str: string, num: number): string;
1985 1985
1986 1986 /**
1987 1987 * Pad a string to guarantee that it is at least `size` length by
1988 1988 * filling with the character `ch` at either the start or end of the
1989 1989 * string. Pads at the start, by default.
1990 1990 */
1991 1991 pad(text: string, size: number, ch?: string, end?: boolean): string;
1992 1992
1993 1993 /**
1994 1994 * Performs parameterized substitutions on a string. Throws an
1995 1995 * exception if any parameter is unmatched.
1996 1996 */
1997 1997 substitute(template: string, map: Object | any[], transform?: (value: any, key: string) => any, thisObject?: Object): string;
1998 1998
1999 1999 /**
2000 2000 * Trims whitespace from both sides of the string
2001 2001 */
2002 2002 trim(str: string): string;
2003 2003 }
2004 2004
2005 2005 /* dojo/text */
2006 2006
2007 2007 /**
2008 2008 * A getter and setter for storing the string content associated with the
2009 2009 * module and url arguments.
2010 2010 */
2011 2011 interface Cache {
2012 2012 (module: string | GenericObject, url: string, value?: string | { value: string, sanitize?: boolean }): string;
2013 2013 }
2014 2014
2015 2015 interface Text {
2016 2016 /**
2017 2017 * the dojo/text caches it's own resources because of dojo.cache
2018 2018 */
2019 2019 dynamic: boolean;
2020 2020
2021 2021 normalize(id: string, toAbsMid: Function): string; /* TODO: Align with loader api */
2022 2022
2023 2023 load(id: string, parentRequire: Function, loaded: Function): void; /* TODO: Align with loader api */
2024 2024 }
2025 2025
2026 2026 /* dojo/throttle */
2027 2027
2028 2028 interface Throttle {
2029 2029 <T extends Function>(cb: T, wait: number): T;
2030 2030 }
2031 2031
2032 2032 /* dojo/topic */
2033 2033
2034 2034 interface Topic {
2035 2035 /**
2036 2036 * Publishes a message to a topic on the pub/sub hub. All arguments after
2037 2037 * the first will be passed to the subscribers, so any number of arguments
2038 2038 * can be provided (not just event).
2039 2039 */
2040 2040 publish(topic: string | ExtensionEvent, ...event: any[]): boolean;
2041 2041
2042 2042 /**
2043 2043 * Subscribes to a topic on the pub/sub hub
2044 2044 */
2045 2045 subscribe(topic: string | ExtensionEvent, listener: EventListener | Function): Handle;
2046 2046 }
2047 2047
2048 2048 /* dojo/touch */
2049 2049
2050 2050 interface Touch {
2051 2051 press: ExtensionEvent;
2052 2052 move: ExtensionEvent;
2053 2053 release: ExtensionEvent;
2054 2054 cancel: ExtensionEvent;
2055 2055 over: ExtensionEvent;
2056 2056 out: ExtensionEvent;
2057 2057 enter: ExtensionEvent;
2058 2058 leave: ExtensionEvent;
2059 2059 }
2060 2060
2061 2061 /* dojo/uacss */
2062 2062
2063 2063 /* rexports has after adding classes to dom */
2064 2064
2065 2065 /* dojo/when */
2066 2066
2067 2067 interface When {
2068 2068 /**
2069 2069 * Transparently applies callbacks to values and/or promises.
2070 2070 */
2071 2071 <T>(value: T | dojo.promise.Promise<T>): dojo.promise.Promise<T>;
2072 2072 <T>(value: T | dojo.promise.Promise<T>,
2073 2073 callback?: dojo.promise.PromiseCallback<T, T>,
2074 2074 errback?: dojo.promise.PromiseErrback<T>,
2075 2075 progress?: dojo.promise.PromiseProgback): T | dojo.promise.Promise<T>;
2076 2076 <T, U>(value: T | dojo.promise.Promise<T>,
2077 2077 callback?: dojo.promise.PromiseCallback<T, U>,
2078 2078 errback?: dojo.promise.PromiseErrback<U>,
2079 2079 progress?: dojo.promise.PromiseProgback): U | dojo.promise.Promise<U>;
2080 2080 }
2081 2081
2082 2082 /* dojo/window */
2083 2083
2084 2084 interface WindowModule {
2085 2085
2086 2086 /**
2087 2087 * Returns the dimensions and scroll position of the viewable area of a browser window
2088 2088 */
2089 2089 getBox(doc?: Document): DomGeometryBox;
2090 2090
2091 2091 /**
2092 2092 * Get window object associated with document doc.
2093 2093 */
2094 2094 get(doc?: Document): Window;
2095 2095
2096 2096 /**
2097 2097 * Scroll the passed node into view using minimal movement, if it is not already.
2098 2098 */
2099 2099 scrollIntoView(node: Element, pos?: DomGeometryXYBox): void;
2100 2100 }
2101 2101 }
@@ -1,824 +1,824
1 1 /// <reference path="index.d.ts" />
2 2
3 3 declare module 'dojo/_base/array' {
4 4 const dojoArray: dojo._base.Array;
5 5 export = dojoArray;
6 6 }
7 7
8 8 declare module 'dojo/_base/browser' {
9 9 const ready: dojo.Ready;
10 10 export = ready;
11 11 }
12 12
13 13 declare module 'dojo/_base/Color' {
14 14 type Color = dojo._base.Color;
15 15 const Color: dojo._base.ColorConstructor;
16 16 export = Color;
17 17 }
18 18
19 19 declare module 'dojo/_base/config' {
20 20 const config: dojo._base.Config;
21 21 export = config;
22 22 }
23 23
24 24 declare module 'dojo/_base/connect' {
25 25 const connect: dojo._base.Connect;
26 26 export = connect;
27 27 }
28 28
29 29 declare module 'dojo/_base/declare' {
30 30 const dojoDeclare: dojo._base.Declare;
31 31 export = dojoDeclare;
32 32 }
33 33
34 34 declare module 'dojo/_base/Deferred' {
35 35 type Deferred<T> = dojo._base.Deferred<T>;
36 36 const Deferred: dojo._base.DeferredConstructor;
37 37 export = Deferred;
38 38 }
39 39
40 40 declare module 'dojo/_base/event' {
41 41 const event: dojo._base.EventModule;
42 42 export = event;
43 43 }
44 44
45 45 declare module 'dojo/_base/fx' {
46 46 const fx: dojo._base.Fx;
47 47 export = fx;
48 48 }
49 49
50 50 declare module 'dojo/_base/html' {
51 51 const dojo: dojo._base.Dojo;
52 52 export = dojo;
53 53 }
54 54
55 55 declare module 'dojo/_base/json' {
56 56 const dojo: dojo._base.Dojo;
57 57 export = dojo;
58 58 }
59 59
60 60 declare module 'dojo/_base/kernel' {
61 61 const dojo: dojo._base.Dojo;
62 62 export = dojo;
63 63 }
64 64
65 65 declare module 'dojo/_base/lang' {
66 66 const lang: dojo._base.Lang;
67 67 export = lang;
68 68 }
69 69
70 70 declare module 'dojo/_base/loader' {
71 71 const loader: dojo._base.Loader;
72 72 export = loader;
73 73 }
74 74
75 75 declare module 'dojo/_base/NodeList' {
76 76 type NodeList<T extends Node> = dojo.NodeList<T>;
77 77 const NodeList: dojo.NodeListConstructor;
78 78 export = NodeList;
79 79 }
80 80
81 81 declare module 'dojo/_base/query' {
82 82 const query: dojo.Query;
83 83 export = query;
84 84 }
85 85
86 86 declare module 'dojo/_base/sniff' {
87 87 const has: dojo.Has;
88 88 export = has;
89 89 }
90 90
91 91 declare module 'dojo/_base/unload' {
92 92 const unload: dojo._base.Unload;
93 93 export = unload;
94 94 }
95 95
96 96 declare module 'dojo/_base/url' {
97 97 type Url = dojo._base.Url;
98 98 const Url: dojo._base.UrlConstructor;
99 99 export = Url;
100 100 }
101 101
102 102 declare module 'dojo/_base/window' {
103 103 const window: dojo._base.Window;
104 104 export = window;
105 105 }
106 106
107 107 declare module 'dojo/_base/xhr' {
108 108 const xhr: dojo._base.Xhr;
109 109 export = xhr;
110 110 }
111 111
112 112 declare module 'dojo/AdapterRegistry' {
113 113 type AdapterRegistry = dojo.AdapterRegistry;
114 114 const AdapterRegistry: dojo.AdapterRegistryConstructor;
115 115 export = AdapterRegistry;
116 116 }
117 117
118 118 declare module 'dojo/aspect' {
119 119 const aspect: dojo.Aspect;
120 120 export = aspect;
121 121 }
122 122
123 123 declare module 'dojo/back' {
124 124 const back: dojo.Back;
125 125 export = back;
126 126 }
127 127
128 128 declare module 'dojo/behavior' {
129 129 const behavior: dojo.Behavior;
130 130 export = behavior;
131 131 }
132 132
133 133 declare module 'dojo/cache' {
134 134 const cache: dojo.Cache;
135 135 export = cache;
136 136 }
137 137
138 138 declare module 'dojo/cldr/monetary' {
139 139 const monetary: dojo.cldr.Monetary;
140 140 export = monetary;
141 141 }
142 142
143 143 declare module 'dojo/cldr/supplemental' {
144 144 const supplemental: dojo.cldr.Supplemental;
145 145 export = supplemental;
146 146 }
147 147
148 148 declare module 'dojo/colors' {
149 149 type Color = dojo._base.Color;
150 150 const Color: dojo._base.ColorConstructor;
151 151 export = Color;
152 152 }
153 153
154 154 declare module 'dojo/cookie' {
155 155 const cookie: dojo.Cookie;
156 156 export = cookie;
157 157 }
158 158
159 159 declare module 'dojo/currency' {
160 160 const currency: dojo.Currency;
161 161 export = currency;
162 162 }
163 163
164 164 declare module 'dojo/data/api/Identity' {
165 165 type Identity<T> = dojo.data.api.Identity<T>;
166 166 const Identity: dojo.data.api.IdentityConstructor;
167 167 export = Identity;
168 168 }
169 169
170 170 declare module 'dojo/data/api/Item' {
171 171 type Item = dojo.data.api.Item;
172 172 const Item: dojo.data.api.ItemConstructor;
173 173 export = Item;
174 174 }
175 175
176 176 declare module 'dojo/data/api/Notification' {
177 177 type Notification<T> = dojo.data.api.Notification<T>;
178 178 const Notification: dojo.data.api.NotificationConstructor;
179 179 export = Notification;
180 180 }
181 181
182 182 declare module 'dojo/data/api/Read' {
183 183 type Read<T> = dojo.data.api.Read<T>;
184 184 const Read: dojo.data.api.ReadConstructor;
185 185 export = Read;
186 186 }
187 187
188 188 declare module 'dojo/data/api/Request' {
189 189 type Request = dojo.data.api.Request;
190 190 const Request: dojo.data.api.RequestConstructor;
191 191 export = Request;
192 192 }
193 193
194 194 declare module 'dojo/data/api/Write' {
195 195 type Write<T> = dojo.data.api.Write<T>;
196 196 const Write: dojo.data.api.WriteConstructor;
197 197 export = Write;
198 198 }
199 199
200 200 declare module 'dojo/data/util/filter' {
201 201 const filter: dojo.data.util.Filter;
202 202 export = filter;
203 203 }
204 204
205 205 declare module 'dojo/data/util/simpleFetch' {
206 206 const simpleFetch: dojo.data.util.SimpleFetch;
207 207 export = simpleFetch;
208 208 }
209 209
210 210 declare module 'dojo/data/util/sorter' {
211 211 const sorter: dojo.data.util.Sorter;
212 212 export = sorter;
213 213 }
214 214
215 215 declare module 'dojo/data/ItemFileReadStore' {
216 216 type ItemFileReadStore<T> = dojo.data.ItemFileReadStore<T>;
217 217 const ItemFileReadStore: dojo.data.ItemFileReadStoreConstructor;
218 218 export = ItemFileReadStore;
219 219 }
220 220
221 221 declare module 'dojo/data/ItemFileWriteStore' {
222 222 type ItemFileWriteStore<T> = dojo.data.ItemFileWriteStore<T>;
223 223 const ItemFileWriteStore: dojo.data.ItemFileWriteStoreConstructor;
224 224 export = ItemFileWriteStore;
225 225 }
226 226
227 227 declare module 'dojo/data/ObjectStore' {
228 228 type ObjectStore<T> = dojo.data.ObjectStore<T>;
229 229 const ObjectStore: dojo.data.ObjectStoreConstructor;
230 230 export = ObjectStore;
231 231 }
232 232
233 233 declare module 'dojo/date' {
234 234 const date: dojo.date.DateBase;
235 235 export = date;
236 236 }
237 237
238 238 declare module 'dojo/date/locale' {
239 239 const dateLocale: dojo.date.DateLocale;
240 240 export = dateLocale;
241 241 }
242 242
243 243 declare module 'dojo/date/stamp' {
244 244 const stamp: dojo.date.Stamp;
245 245 export = stamp;
246 246 }
247 247
248 248 declare module 'dojo/debounce' {
249 249 const debounce: dojo.Debounce;
250 250 export = debounce;
251 251 }
252 252
253 253 declare module 'dojo/Deferred' {
254 254 type Deferred<T> = dojo.Deferred<T>;
255 255 const Deferred: dojo.DeferredConstructor;
256 256 export = Deferred;
257 257 }
258 258
259 259 declare module 'dojo/DeferredList' {
260 260 type DeferredList<T> = dojo.DeferredList<T>;
261 261 const DeferredList: dojo.DeferredListConstructor;
262 262 export = DeferredList;
263 263 }
264 264
265 265 declare module 'dojo/dnd/autoscroll' {
266 266 const autoscroll: dojo.dnd.AutoScroll;
267 267 export = autoscroll;
268 268 }
269 269
270 270 declare module 'dojo/dnd/AutoSource' {
271 271 const AutoSource: dojo.dnd.AutoSourceConstructor;
272 272 export = AutoSource;
273 273 }
274 274
275 275 declare module 'dojo/dnd/Avatar' {
276 276 type Avatar = dojo.dnd.Avatar;
277 277 const Avatar: dojo.dnd.AvatarConstructor;
278 278 export = Avatar;
279 279 }
280 280
281 281 declare module 'dojo/dnd/common' {
282 282 const common: dojo.dnd.Common;
283 283 export = common;
284 284 }
285 285
286 286 declare module 'dojo/dnd/Container' {
287 287 type Container = dojo.dnd.Container;
288 288 const Container: dojo.dnd.ContainerConstructor;
289 289 export = Container;
290 290 }
291 291
292 292 declare module 'dojo/dnd/Manager' {
293 293 type Manager = dojo.dnd.Manager;
294 294 const Manager: dojo.dnd.ManagerConstructor;
295 295 export = Manager;
296 296 }
297 297
298 298 declare module 'dojo/dnd/move' {
299 299 const Move: dojo.dnd.Move;
300 300 export = Move;
301 301 }
302 302
303 303 declare module 'dojo/dnd/Moveable' {
304 304 type Moveable = dojo.dnd.Moveable;
305 305 const Moveable: dojo.dnd.Moveable;
306 306 export = Moveable;
307 307 }
308 308
309 309 declare module 'dojo/dnd/Mover' {
310 310 type Mover = dojo.dnd.Mover;
311 311 const Mover: dojo.dnd.MoverConstructor;
312 312 export = Mover;
313 313 }
314 314
315 315 declare module 'dojo/dnd/Selector' {
316 316 type Selector = dojo.dnd.Selector;
317 317 const Selector: dojo.dnd.SelectorConstructor;
318 318 export = Selector;
319 319 }
320 320
321 321 declare module 'dojo/dnd/Source' {
322 322 type Source = dojo.dnd.Source;
323 323 const Source: dojo.dnd.SourceConstructor;
324 324 export = Source;
325 325 }
326 326
327 327 declare module 'dojo/dnd/Target' {
328 328 type Target = dojo.dnd.Target;
329 329 const Target: dojo.dnd.TargetConstructor;
330 330 export = Target;
331 331 }
332 332
333 333 declare module 'dojo/dnd/TimedMoveable' {
334 334 type TimedMoveable = dojo.dnd.TimedMoveable;
335 335 const TimedMoveable: dojo.dnd.TimedMoveableConstructor;
336 336 export = TimedMoveable;
337 337 }
338 338
339 339 declare module 'dojo/dojo' {
340 340 const require: dojo.Require;
341 341 export = require;
342 342 }
343 343
344 344 declare module 'require' {
345 345 const require: dojo.Require;
346 346 export = require;
347 347 }
348 348
349 349 declare module 'dojo/dom' {
350 350 const dom: dojo.Dom;
351 351 export = dom;
352 352 }
353 353
354 354 declare module 'dojo/dom-attr' {
355 355 const domAttr: dojo.DomAttr;
356 356 export = domAttr;
357 357 }
358 358
359 359 declare module 'dojo/dom-class' {
360 360 const domClass: dojo.DomClass;
361 361 export = domClass;
362 362 }
363 363
364 364 declare module 'dojo/dom-construct' {
365 365 const domConstruct: dojo.DomConstruct;
366 366 export = domConstruct;
367 367 }
368 368
369 369 declare module 'dojo/dom-form' {
370 370 const domForm: dojo.DomForm;
371 371 export = domForm;
372 372 }
373 373
374 374 declare module 'dojo/dom-geometry' {
375 375 const domGeom: dojo.DomGeometry;
376 376 export = domGeom;
377 377 }
378 378
379 379 declare module 'dojo/dom-prop' {
380 380 const domProp: dojo.DomProp;
381 381 export = domProp;
382 382 }
383 383
384 384 declare module 'dojo/dom-style' {
385 385 const domStyle: dojo.DomStyle;
386 386 export = domStyle;
387 387 }
388 388
389 389 declare module 'dojo/domReady' {
390 390 const domReady: dojo.DomReady;
391 391 export = domReady;
392 392 }
393 393
394 394 declare module 'dojo/domReady!' {
395 395 const callback: any;
396 396 export = callback;
397 397 }
398 398
399 399 declare module 'dojo/errors/CancelError' {
400 400 type CancelError = dojo.errors.CancelError;
401 401 const CancelError: dojo.errors.CancelErrorConstructor;
402 402 export = CancelError;
403 403 }
404 404
405 405 declare module 'dojo/errors/create' {
406 406 const create: dojo.errors.Create;
407 407 export = create;
408 408 }
409 409
410 410 declare module 'dojo/errors/RequestError' {
411 411 type RequestError = dojo.errors.RequestError;
412 412 const RequestError: dojo.errors.RequestErrorConstructor;
413 413 export = RequestError;
414 414 }
415 415
416 416 declare module 'dojo/errors/RequestTimeoutError' {
417 417 type RequestTimeoutError = dojo.errors.RequestError;
418 418 const RequestTimeoutError: dojo.errors.RequestTimeoutErrorConstructor;
419 419 export = RequestTimeoutError;
420 420 }
421 421
422 422 declare module 'dojo/Evented' {
423 423 type Evented = dojo.Evented;
424 424 const Evented: dojo.EventedConstructor;
425 425 export = Evented;
426 426 }
427 427
428 428 declare module 'dojo/gears' {
429 429 const gears: dojo.Gears;
430 430 export = gears;
431 431 }
432 432
433 433 declare module 'dojo/has' {
434 434 const has: dojo.Has;
435 435 export = has;
436 436 }
437 437
438 438 declare module 'dojo/hash' {
439 439 const hash: dojo.Hash;
440 440 export = hash;
441 441 }
442 442
443 443 declare module 'dojo/hccss' {
444 444 const hccss: dojo.Has;
445 445 export = hccss;
446 446 }
447 447
448 448 declare module 'dojo/html' {
449 449 const html: dojo.Html;
450 450 export = html;
451 451 }
452 452
453 453 declare module 'dojo/i18n' {
454 454 const i18n: dojo.I18n;
455 455 export = i18n;
456 456 }
457 457
458 458 declare module 'dojo/io/iframe' {
459 459 const iframe: dojo.io.IFrame;
460 460 export = iframe;
461 461 }
462 462
463 463 declare module 'dojo/io/script' {
464 464 const script: dojo.io.Script;
465 465 export = script;
466 466 }
467 467
468 468 declare module 'dojo/io-query' {
469 469 const ioQuery: dojo.IoQuery;
470 470 export = ioQuery;
471 471 }
472 472
473 473 declare module 'dojo/json' {
474 474 const json: dojo.Json;
475 475 export = json;
476 476 }
477 477
478 478 declare module 'dojo/keys' {
479 479 const keys: dojo.Keys;
480 480 export = keys;
481 481 }
482 482
483 483 declare module 'dojo/loadInit' {
484 484 const loadInit: dojo.LoadInit;
485 485 export = loadInit;
486 486 }
487 487
488 488 declare module 'dojo/loadInit!' {
489 489 const loadInit: (mid: string, require: any, loaded: (...modules: any[]) => void) => void;
490 490 export = loadInit;
491 491 }
492 492
493 493 declare module 'dojo/main' {
494 494 const main: dojo._base.Dojo;
495 495 export = main;
496 496 }
497 497
498 498 declare module 'dojo/mouse' {
499 499 const mouse: dojo.Mouse;
500 500 export = mouse;
501 501 }
502 502
503 503 declare module 'dojo/NodeList' {
504 504 type NodeList<T extends Node> = dojo.NodeList<T>;
505 505 const NodeList: dojo.NodeListConstructor;
506 506 export = NodeList;
507 507 }
508 508
509 509 declare module 'dojo/number' {
510 510 const value: dojo.Number;
511 511 export = value;
512 512 }
513 513
514 514 declare module 'dojo/on' {
515 515 const on: dojo.On;
516 516 export = on;
517 517 }
518 518
519 519 declare module 'dojo/on/asyncEventListener' {
520 520 const asyncEventListener: dojo.on.AsyncEventListener;
521 521 export = asyncEventListener;
522 522 }
523 523
524 524 declare module 'dojo/on/debounce' {
525 525 const debounce: dojo.on.Debounce;
526 526 export = debounce;
527 527 }
528 528
529 529 declare module 'dojo/on/throttle' {
530 530 const throttle: dojo.on.Throttle;
531 531 export = throttle;
532 532 }
533 533
534 534 declare module 'dojo/parser' {
535 535 const parser: dojo.Parser;
536 536 export = parser;
537 537 }
538 538
539 539 declare module 'dojo/promise/all' {
540 540 const all: dojo.promise.All;
541 541 export = all;
542 542 }
543 543
544 544 declare module 'dojo/promise/first' {
545 545 const first: dojo.promise.First;
546 546 export = first;
547 547 }
548 548
549 549 declare module 'dojo/promise/instrumentation' {
550 550 const instrumentation: dojo.promise.Instrumentation;
551 551 export = instrumentation;
552 552 }
553 553
554 554 declare module 'dojo/promise/Promise' {
555 555 type Promise<T> = dojo.promise.Promise<T>;
556 556 const Promise: dojo.promise.PromiseConstructor;
557 557 export = Promise;
558 558 }
559 559
560 560 declare module 'dojo/promise/tracer' {
561 561 const tracer: dojo.promise.Tracer;
562 562 export = tracer;
563 563 }
564 564
565 565 declare module 'dojo/query' {
566 566 const query: dojo.Query;
567 567 export = query;
568 568 }
569 569
570 570 /* modules for included selector engines */
571 571
572 572 declare module 'dojo/query!acme' {
573 573 const query: dojo.Query;
574 574 export = query;
575 575 }
576 576
577 577 declare module 'dojo/query!lite' {
578 578 const query: dojo.Query;
579 579 export = query;
580 580 }
581 581
582 582 declare module 'dojo/ready' {
583 583 const ready: dojo.Ready;
584 584 export = ready;
585 585 }
586 586
587 587 declare module 'dojo/regexp' {
588 588 const regexp: dojo.RegExpModule;
589 589 export = regexp;
590 590 }
591 591
592 592 declare module 'dojo/request' {
593 593 const request: dojo.request.Request;
594 594 export = request;
595 595 }
596 596
597 597 declare module 'dojo/request/default' {
598 598 const def: dojo.request.Default;
599 599 export = def;
600 600 }
601 601
602 602 declare module 'dojo/request/default!' {
603 603 const def: dojo.request.Request;
604 604 export = def;
605 605 }
606 606
607 607 declare module 'dojo/request/handlers' {
608 608 const handlers: dojo.request.Handlers;
609 609 export = handlers;
610 610 }
611 611
612 612 declare module 'dojo/request/iframe' {
613 613 const iframe: dojo.request.IFrame;
614 614 export = iframe;
615 615 }
616 616
617 617 declare module 'dojo/request/node' {
618 618 const node: dojo.request.Node;
619 619 export = node;
620 620 }
621 621
622 622 declare module 'dojo/request/registry' {
623 623 const registry: dojo.request.Registry;
624 624 export = registry;
625 625 }
626 626
627 627 declare module 'dojo/request/script' {
628 628 const script: dojo.request.Script;
629 629 export = script;
630 630 }
631 631
632 632 declare module 'dojo/request/util' {
633 633 const util: dojo.request.Util;
634 634 export = util;
635 635 }
636 636
637 637 declare module 'dojo/request/watch' {
638 638 const watch: dojo.request.Watch;
639 639 export = watch;
640 640 }
641 641
642 642 declare module 'dojo/request/xhr' {
643 643 const xhr: dojo.request.Xhr;
644 644 export = xhr;
645 645 }
646 646
647 647 declare module 'dojo/require' {
648 648 const require: dojo.RequirePlugin;
649 649 export = require;
650 650 }
651 651
652 652 declare module 'dojo/robot' {
653 653 const robot: dojo.Robot;
654 654 export = robot;
655 655 }
656 656
657 657 declare module 'dojo/robotx' {
658 658 const robotx: dojo.RobotX;
659 659 export = robotx;
660 660 }
661 661
662 662 declare module 'dojo/router' {
663 663 const router: dojo.router.RouterBase;
664 664 export = router;
665 665 }
666 666
667 667 declare module 'dojo/router/RouterBase' {
668 668 type RouterBase = dojo.router.RouterBase;
669 669 const RouterBase: dojo.router.RouterBaseConstructor;
670 670 export = RouterBase;
671 671 }
672 672
673 673 declare module 'dojo/rpc/JsonpService' {
674 674 type JsonpService<T> = dojo.rpc.JsonpService<T>;
675 675 const JsonpService: dojo.rpc.JsonpServiceConstructor;
676 676 export = JsonpService;
677 677 }
678 678
679 679 declare module 'dojo/rpc/JsonService' {
680 680 type JsonService<T> = dojo.rpc.JsonService<T>;
681 681 const JsonService: dojo.rpc.JsonServiceConstructor;
682 682 export = JsonService;
683 683 }
684 684
685 685 declare module 'dojo/rpc/RpcService' {
686 686 type RpcService<T> = dojo.rpc.RpcService<T>;
687 687 const RpcService: dojo.rpc.RpcServiceConstructor;
688 688 export = RpcService;
689 689 }
690 690
691 691 declare module 'dojo/selector/_loader' {
692 692 const loader: dojo.selector.Loader;
693 693 export = loader;
694 694 }
695 695
696 696 declare module 'dojo/selector/_loader!' {
697 697 const lite: dojo.selector.LiteQueryEnegine;
698 698 export = lite;
699 699 }
700 700
701 701 declare module 'dojo/selector/_loader!acme' {
702 702 const acme: dojo.selector.AcmeQueryEngine;
703 703 export = acme;
704 704 }
705 705
706 706 declare module 'dojo/selector/_loader!lite' {
707 707 const lite: dojo.selector.LiteQueryEnegine;
708 708 export = lite;
709 709 }
710 710
711 711 declare module 'dojo/selector/acme' {
712 712 const acme: dojo.selector.AcmeQueryEngine;
713 713 export = acme;
714 714 }
715 715
716 716 declare module 'dojo/selector/lite' {
717 717 const lite: dojo.selector.LiteQueryEnegine;
718 718 export = lite;
719 719 }
720 720
721 721 declare module 'dojo/sniff' {
722 722 const sniff: dojo.Has;
723 723 export = sniff;
724 724 }
725 725
726 726 declare module 'dojo/Stateful' {
727 type Stateful<T = any> = dojo.Stateful<any>;
727 type Stateful<T = any> = dojo.Stateful<T>;
728 728 const Stateful: dojo.StatefulConstructor;
729 729 export = Stateful;
730 730 }
731 731
732 732 declare module 'dojo/store/api/Store' {
733 733 type Store<T extends Object, Q extends string | Object | Function, O extends dojo.store.api.QueryOptions> = dojo.store.api.Store<T, Q, O>;
734 734 const Store: dojo.store.api.StoreConstructor;
735 735 export = Store;
736 736 }
737 737
738 738 declare module 'dojo/store/util/QueryResults' {
739 739 const QueryResults: dojo.store.util.QueryResultsFunction;
740 740 export = QueryResults;
741 741 }
742 742
743 743 declare module 'dojo/store/util/SimpleQueryEngine' {
744 744 const SimpleQueryEngine: dojo.store.util.SimpleQueryEngine;
745 745 export = SimpleQueryEngine;
746 746 }
747 747
748 748 declare module 'dojo/store/Cache' {
749 749 const Cache: dojo.store.Cache;
750 750 export = Cache;
751 751 }
752 752
753 753 declare module 'dojo/store/DataStore' {
754 754 type DataStore<T extends Object> = dojo.store.DataStore<T>;
755 755 const DataStore: dojo.store.DataStoreConstructor;
756 756 export = DataStore;
757 757 }
758 758
759 759 declare module 'dojo/store/JsonRest' {
760 760 type JsonRest<T extends object, Q extends dojo.store.api.BaseQueryType, O extends dojo.store.JsonRestQueryOptions> = dojo.store.JsonRest<T, Q, O>;
761 761 const JsonRest: dojo.store.JsonRestConstructor;
762 762 export = JsonRest;
763 763 }
764 764
765 765 declare module 'dojo/store/Memory' {
766 766 type Memory<T extends Object> = dojo.store.Memory<T>;
767 767 const Memory: dojo.store.MemoryConstructor;
768 768 export = Memory;
769 769 }
770 770
771 771 declare module 'dojo/store/Observable' {
772 772 const Observerable: dojo.store.Observable;
773 773 export = Observerable;
774 774 }
775 775
776 776 declare module 'dojo/string' {
777 777 const value: dojo.String;
778 778 export = value;
779 779 }
780 780
781 781 declare module 'dojo/text' {
782 782 const text: dojo.Text;
783 783 export = text;
784 784 }
785 785
786 786 declare module 'dojo/throttle' {
787 787 const throttle: dojo.Throttle;
788 788 export = throttle;
789 789 }
790 790
791 791 declare module 'dojo/topic' {
792 792 const hub: dojo.Topic;
793 793 export = hub;
794 794 }
795 795
796 796 declare module 'dojo/touch' {
797 797 const touch: dojo.Touch;
798 798 export = touch;
799 799 }
800 800
801 801 declare module 'dojo/uacss' {
802 802 const uacss: dojo.Has;
803 803 export = uacss;
804 804 }
805 805
806 806 declare module 'dojo/when' {
807 807 const when: dojo.When;
808 808 export = when;
809 809 }
810 810
811 811 declare module 'dojo/window' {
812 812 const window: dojo.WindowModule;
813 813 export = window;
814 814 }
815 815
816 816 declare module 'dojo/i18n!*' {
817 817 const value: any;
818 818 export = value;
819 819 }
820 820
821 821 declare module 'dojo/text!*' {
822 822 const content: string;
823 823 export = content;
824 824 }
@@ -1,21 +1,26
1 import Stateful = require("dojo/Stateful");
1 import * as Stateful from "dojo/Stateful";
2 import { StatefulAttrs, watch } from "./traits";
2 3
3 4 interface ScheduleAttrs {
4 5 title: string;
5 6
6 7 duration: number;
7 8
8 9 }
9 10
10 11 declare class Schedule extends Stateful<ScheduleAttrs> {
11 12 title: string;
12 13
13 14
14 15 }
15 16
16 17 const model = new Schedule({duration: 10, title: "Test event"});
17 18
18 19 model.get("title");
19 20 model.get("duration");
20 21
21 model.set("duration", 12); No newline at end of file
22 model.set("duration", 12);
23
24 watch(model, "duration", v => v);
25
26 declare const o : StatefulAttrs<Schedule>; No newline at end of file
@@ -1,28 +1,26
1 import Memory = require("dojo/store/Memory");
2 import Observable = require("dojo/store/Observable");
1 import * as Memory from "dojo/store/Memory";
2 import * as Observable from "dojo/store/Observable";
3 3
4 4 interface Schedule {
5 5
6 6 id?: string;
7 7
8 8 title: string;
9 9
10 10 duration: number;
11 11 }
12 12
13 13 declare const store: dojo.store.api.Store<Schedule>;
14 14
15 15 const observable = new Observable(store);
16 16
17 17 const mem = new Memory<Schedule>();
18 18
19 (async () => {
20 observable.query().observe(() => {});
21 store.query().forEach(() => {});
22 const total = await store.query().total;
23 const result = await store.query();
19 observable.query().observe(() => { });
20 store.query().forEach(() => { });
21 const total = await store.query().total;
22 const result = await store.query();
24 23
25 mem.query();
24 mem.query();
26 25
27 mem.add({duration: 10, title: "Test event"});
28 })(); No newline at end of file
26 mem.add({ duration: 10, title: "Test event" });
@@ -1,17 +1,41
1 import _WidgetBase = require("dijit/_WidgetBase");
1 import * as _WidgetBase from "dijit/_WidgetBase";
2 import { watch } from "./traits";
2 3
3 4 interface ScheduleWidgetAttrs {
4 5 data: string[];
5 6 }
6 7
7 declare const w0: _WidgetBase<ScheduleWidgetAttrs>;
8 interface ScheduleWidgetEvents {
9 "scheduled": Event & {
10 detail: {
11 startDate: Date,
12 endDate: Date
13 }
14 };
15 }
8 16
9 w0.get("data");
10
11 declare class ScheduleWidget extends _WidgetBase {
17 declare class ScheduleWidget extends _WidgetBase<ScheduleWidgetAttrs, ScheduleWidgetEvents> {
12 18 data: string[];
13 19 }
14 20
15 21 const w = new ScheduleWidget({title: "Year schedule", data: ["a", "b"] });
16 22
17 w.get("data"); No newline at end of file
23 w.get("data");
24
25 w.watch((p, o, n) => [p,o,n]);
26
27 w.watch("data", (p, o, n) => [p,o,n]);
28
29 watch(w, "title", v => String(v) );
30 watch(w, "data", v => String(v) );
31
32 w.emit("scheduled", { detail: { startDate: new Date(), endDate: new Date()} });
33
34 w.emit("click", {} );
35
36 w.emit("click", {} );
37
38 w.emit("some-extra-event", {});
39
40 w.on("click", e => e);
41 w.on("some-extra-event", e => e);
@@ -1,22 +1,24
1 1 {
2 2 "extends": "../tsconfig",
3 3 "compilerOptions": {
4 4 "baseUrl": ".",
5 5 "rootDir": "ts",
6 6 "rootDirs": [
7 7 "ts",
8 "typings",
8 9 "../main/ts"
9 10 ],
10 11 "types": [
11 12 "requirejs",
12 13 "../main/typings/dojo/modules",
13 14 "../main/typings/dijit/modules"
14 15 ],
15 "module": "amd"
16 "module": "ESNext",
17 "target": "ESNext"
16 18 },
17 19 "include": [
18 20 "typings/**/*.ts",
19 21 "ts/**/*.ts",
20 22 "ts/**/*.tsx"
21 23 ]
22 24 } No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now