ember-source 2.11.0.beta.4 → 2.11.0.beta.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +42 -34
- data/dist/ember-template-compiler.js +77 -38
- data/dist/ember-testing.js +2 -2
- data/dist/ember-tests.js +73071 -0
- data/dist/ember-tests.prod.js +72592 -0
- data/dist/ember.debug.js +810 -561
- data/dist/ember.js +810 -561
- data/dist/ember.min.js +200 -191
- data/dist/ember.prod.js +606 -557
- metadata +4 -3
data/dist/ember.prod.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
;(function() {
|
2
2
|
/*!
|
3
3
|
* @overview Ember - JavaScript Application Framework
|
4
|
-
* @copyright Copyright 2011-
|
4
|
+
* @copyright Copyright 2011-2017 Tilde Inc. and contributors
|
5
5
|
* Portions Copyright 2006-2011 Strobe Inc.
|
6
6
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
7
7
|
* @license Licensed under MIT license
|
8
8
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
9
|
-
* @version 2.11.0-beta.
|
9
|
+
* @version 2.11.0-beta.8
|
10
10
|
*/
|
11
11
|
|
12
12
|
var enifed, requireModule, Ember;
|
@@ -6203,16 +6203,15 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6203
6203
|
|
6204
6204
|
The easiest way to create an `Ember.Component` is via
|
6205
6205
|
a template. If you name a template
|
6206
|
-
`components/my-foo`, you will be able to use
|
6206
|
+
`app/components/my-foo.hbs`, you will be able to use
|
6207
6207
|
`{{my-foo}}` in other templates, which will make
|
6208
6208
|
an instance of the isolated component.
|
6209
6209
|
|
6210
|
-
```
|
6211
|
-
{{
|
6210
|
+
```app/components/my-foo.hbs
|
6211
|
+
{{person-profile person=currentUser}}
|
6212
6212
|
```
|
6213
6213
|
|
6214
|
-
```
|
6215
|
-
<!-- app-profile template -->
|
6214
|
+
```app/components/person-profile.hbs
|
6216
6215
|
<h1>{{person.title}}</h1>
|
6217
6216
|
<img src={{person.avatar}}>
|
6218
6217
|
<p class='signature'>{{person.signature}}</p>
|
@@ -6224,14 +6223,13 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6224
6223
|
context of the surrounding context or outer controller:
|
6225
6224
|
|
6226
6225
|
```handlebars
|
6227
|
-
{{#
|
6226
|
+
{{#person-profile person=currentUser}}
|
6228
6227
|
<p>Admin mode</p>
|
6229
6228
|
{{! Executed in the controller's context. }}
|
6230
|
-
{{/
|
6229
|
+
{{/person-profile}}
|
6231
6230
|
```
|
6232
6231
|
|
6233
|
-
```
|
6234
|
-
<!-- app-profile template -->
|
6232
|
+
```app/components/person-profile.hbs
|
6235
6233
|
<h1>{{person.title}}</h1>
|
6236
6234
|
{{! Executed in the component's context. }}
|
6237
6235
|
{{yield}} {{! block contents }}
|
@@ -6240,16 +6238,17 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6240
6238
|
If you want to customize the component, in order to
|
6241
6239
|
handle events or actions, you implement a subclass
|
6242
6240
|
of `Ember.Component` named after the name of the
|
6243
|
-
component.
|
6244
|
-
your subclass like `AppProfileComponent`.
|
6241
|
+
component.
|
6245
6242
|
|
6246
6243
|
For example, you could implement the action
|
6247
|
-
`hello` for the `
|
6244
|
+
`hello` for the `person-profile` component:
|
6248
6245
|
|
6249
|
-
```
|
6250
|
-
|
6246
|
+
```app/components/person-profile.js
|
6247
|
+
import Ember from 'ember';
|
6248
|
+
|
6249
|
+
export default Ember.Component.extend({
|
6251
6250
|
actions: {
|
6252
|
-
hello
|
6251
|
+
hello(name) {
|
6253
6252
|
console.log("Hello", name);
|
6254
6253
|
}
|
6255
6254
|
}
|
@@ -6258,19 +6257,423 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6258
6257
|
|
6259
6258
|
And then use it in the component's template:
|
6260
6259
|
|
6261
|
-
```
|
6262
|
-
<!-- app-profile template -->
|
6260
|
+
```app/templates/components/person-profile.hbs
|
6263
6261
|
<h1>{{person.title}}</h1>
|
6264
6262
|
{{yield}} <!-- block contents -->
|
6265
6263
|
<button {{action 'hello' person.name}}>
|
6266
6264
|
Say Hello to {{person.name}}
|
6267
6265
|
</button>
|
6268
6266
|
```
|
6267
|
+
|
6269
6268
|
Components must have a `-` in their name to avoid
|
6270
6269
|
conflicts with built-in controls that wrap HTML
|
6271
6270
|
elements. This is consistent with the same
|
6272
6271
|
requirement in web components.
|
6273
6272
|
|
6273
|
+
|
6274
|
+
## HTML Tag
|
6275
|
+
|
6276
|
+
The default HTML tag name used for a component's DOM representation is `div`.
|
6277
|
+
This can be customized by setting the `tagName` property.
|
6278
|
+
The following component class:
|
6279
|
+
|
6280
|
+
```app/components/emphasized-paragraph.js
|
6281
|
+
import Ember from 'ember';
|
6282
|
+
|
6283
|
+
export default Ember.Component.extend({
|
6284
|
+
tagName: 'em'
|
6285
|
+
});
|
6286
|
+
```
|
6287
|
+
|
6288
|
+
Would result in instances with the following HTML:
|
6289
|
+
|
6290
|
+
```html
|
6291
|
+
<em id="ember1" class="ember-view"></em>
|
6292
|
+
```
|
6293
|
+
|
6294
|
+
|
6295
|
+
## HTML `class` Attribute
|
6296
|
+
|
6297
|
+
The HTML `class` attribute of a component's tag can be set by providing a
|
6298
|
+
`classNames` property that is set to an array of strings:
|
6299
|
+
|
6300
|
+
```app/components/my-widget.js
|
6301
|
+
import Ember from 'ember';
|
6302
|
+
|
6303
|
+
export default Ember.Component.extend({
|
6304
|
+
classNames: ['my-class', 'my-other-class']
|
6305
|
+
});
|
6306
|
+
```
|
6307
|
+
|
6308
|
+
Will result in component instances with an HTML representation of:
|
6309
|
+
|
6310
|
+
```html
|
6311
|
+
<div id="ember1" class="ember-view my-class my-other-class"></div>
|
6312
|
+
```
|
6313
|
+
|
6314
|
+
`class` attribute values can also be set by providing a `classNameBindings`
|
6315
|
+
property set to an array of properties names for the component. The return value
|
6316
|
+
of these properties will be added as part of the value for the components's `class`
|
6317
|
+
attribute. These properties can be computed properties:
|
6318
|
+
|
6319
|
+
```app/components/my-widget.js
|
6320
|
+
import Ember from 'ember';
|
6321
|
+
|
6322
|
+
export default Ember.Component.extend({
|
6323
|
+
classNameBindings: ['propertyA', 'propertyB'],
|
6324
|
+
propertyA: 'from-a',
|
6325
|
+
propertyB: Ember.computed(function() {
|
6326
|
+
if (someLogic) { return 'from-b'; }
|
6327
|
+
})
|
6328
|
+
});
|
6329
|
+
```
|
6330
|
+
|
6331
|
+
Will result in component instances with an HTML representation of:
|
6332
|
+
|
6333
|
+
```html
|
6334
|
+
<div id="ember1" class="ember-view from-a from-b"></div>
|
6335
|
+
```
|
6336
|
+
|
6337
|
+
If the value of a class name binding returns a boolean the property name
|
6338
|
+
itself will be used as the class name if the property is true.
|
6339
|
+
The class name will not be added if the value is `false` or `undefined`.
|
6340
|
+
|
6341
|
+
```app/components/my-widget.js
|
6342
|
+
import Ember from 'ember';
|
6343
|
+
|
6344
|
+
export default Ember.Component.extend({
|
6345
|
+
classNameBindings: ['hovered'],
|
6346
|
+
hovered: true
|
6347
|
+
});
|
6348
|
+
```
|
6349
|
+
|
6350
|
+
Will result in component instances with an HTML representation of:
|
6351
|
+
|
6352
|
+
```html
|
6353
|
+
<div id="ember1" class="ember-view hovered"></div>
|
6354
|
+
```
|
6355
|
+
|
6356
|
+
When using boolean class name bindings you can supply a string value other
|
6357
|
+
than the property name for use as the `class` HTML attribute by appending the
|
6358
|
+
preferred value after a ":" character when defining the binding:
|
6359
|
+
|
6360
|
+
```app/components/my-widget.js
|
6361
|
+
import Ember from 'ember';
|
6362
|
+
|
6363
|
+
export default Ember.Component.extend({
|
6364
|
+
classNameBindings: ['awesome:so-very-cool'],
|
6365
|
+
awesome: true
|
6366
|
+
});
|
6367
|
+
```
|
6368
|
+
|
6369
|
+
Will result in component instances with an HTML representation of:
|
6370
|
+
|
6371
|
+
```html
|
6372
|
+
<div id="ember1" class="ember-view so-very-cool"></div>
|
6373
|
+
```
|
6374
|
+
|
6375
|
+
Boolean value class name bindings whose property names are in a
|
6376
|
+
camelCase-style format will be converted to a dasherized format:
|
6377
|
+
|
6378
|
+
```app/components/my-widget.js
|
6379
|
+
import Ember from 'ember';
|
6380
|
+
|
6381
|
+
export default Ember.Component.extend({
|
6382
|
+
classNameBindings: ['isUrgent'],
|
6383
|
+
isUrgent: true
|
6384
|
+
});
|
6385
|
+
```
|
6386
|
+
|
6387
|
+
Will result in component instances with an HTML representation of:
|
6388
|
+
|
6389
|
+
```html
|
6390
|
+
<div id="ember1" class="ember-view is-urgent"></div>
|
6391
|
+
```
|
6392
|
+
|
6393
|
+
Class name bindings can also refer to object values that are found by
|
6394
|
+
traversing a path relative to the component itself:
|
6395
|
+
|
6396
|
+
```app/components/my-widget.js
|
6397
|
+
import Ember from 'ember';
|
6398
|
+
|
6399
|
+
export default Ember.Component.extend({
|
6400
|
+
classNameBindings: ['messages.empty'],
|
6401
|
+
messages: Ember.Object.create({
|
6402
|
+
empty: true
|
6403
|
+
})
|
6404
|
+
});
|
6405
|
+
```
|
6406
|
+
|
6407
|
+
Will result in component instances with an HTML representation of:
|
6408
|
+
|
6409
|
+
```html
|
6410
|
+
<div id="ember1" class="ember-view empty"></div>
|
6411
|
+
```
|
6412
|
+
|
6413
|
+
If you want to add a class name for a property which evaluates to true and
|
6414
|
+
and a different class name if it evaluates to false, you can pass a binding
|
6415
|
+
like this:
|
6416
|
+
|
6417
|
+
```app/components/my-widget.js
|
6418
|
+
import Ember from 'ember';
|
6419
|
+
|
6420
|
+
export default Ember.Component.extend({
|
6421
|
+
classNameBindings: ['isEnabled:enabled:disabled'],
|
6422
|
+
isEnabled: true
|
6423
|
+
});
|
6424
|
+
```
|
6425
|
+
|
6426
|
+
Will result in component instances with an HTML representation of:
|
6427
|
+
|
6428
|
+
```html
|
6429
|
+
<div id="ember1" class="ember-view enabled"></div>
|
6430
|
+
```
|
6431
|
+
|
6432
|
+
When isEnabled is `false`, the resulting HTML representation looks like
|
6433
|
+
this:
|
6434
|
+
|
6435
|
+
```html
|
6436
|
+
<div id="ember1" class="ember-view disabled"></div>
|
6437
|
+
```
|
6438
|
+
|
6439
|
+
This syntax offers the convenience to add a class if a property is `false`:
|
6440
|
+
|
6441
|
+
```app/components/my-widget.js
|
6442
|
+
import Ember from 'ember';
|
6443
|
+
|
6444
|
+
// Applies no class when isEnabled is true and class 'disabled' when isEnabled is false
|
6445
|
+
export default Ember.Component.extend({
|
6446
|
+
classNameBindings: ['isEnabled::disabled'],
|
6447
|
+
isEnabled: true
|
6448
|
+
});
|
6449
|
+
```
|
6450
|
+
|
6451
|
+
Will result in component instances with an HTML representation of:
|
6452
|
+
|
6453
|
+
```html
|
6454
|
+
<div id="ember1" class="ember-view"></div>
|
6455
|
+
```
|
6456
|
+
|
6457
|
+
When the `isEnabled` property on the component is set to `false`, it will result
|
6458
|
+
in component instances with an HTML representation of:
|
6459
|
+
|
6460
|
+
```html
|
6461
|
+
<div id="ember1" class="ember-view disabled"></div>
|
6462
|
+
```
|
6463
|
+
|
6464
|
+
Updates to the value of a class name binding will result in automatic
|
6465
|
+
update of the HTML `class` attribute in the component's rendered HTML
|
6466
|
+
representation. If the value becomes `false` or `undefined` the class name
|
6467
|
+
will be removed.
|
6468
|
+
Both `classNames` and `classNameBindings` are concatenated properties. See
|
6469
|
+
[Ember.Object](/api/classes/Ember.Object.html) documentation for more
|
6470
|
+
information about concatenated properties.
|
6471
|
+
|
6472
|
+
|
6473
|
+
## HTML Attributes
|
6474
|
+
|
6475
|
+
The HTML attribute section of a component's tag can be set by providing an
|
6476
|
+
`attributeBindings` property set to an array of property names on the component.
|
6477
|
+
The return value of these properties will be used as the value of the component's
|
6478
|
+
HTML associated attribute:
|
6479
|
+
|
6480
|
+
```app/components/my-anchor.js
|
6481
|
+
import Ember from 'ember';
|
6482
|
+
|
6483
|
+
export default Ember.Component.extend({
|
6484
|
+
tagName: 'a',
|
6485
|
+
attributeBindings: ['href'],
|
6486
|
+
href: 'http://google.com'
|
6487
|
+
});
|
6488
|
+
```
|
6489
|
+
|
6490
|
+
Will result in component instances with an HTML representation of:
|
6491
|
+
|
6492
|
+
```html
|
6493
|
+
<a id="ember1" class="ember-view" href="http://google.com"></a>
|
6494
|
+
```
|
6495
|
+
|
6496
|
+
One property can be mapped on to another by placing a ":" between
|
6497
|
+
the source property and the destination property:
|
6498
|
+
|
6499
|
+
```app/components/my-anchor.js
|
6500
|
+
import Ember from 'ember';
|
6501
|
+
|
6502
|
+
export default Ember.Component.extend({
|
6503
|
+
tagName: 'a',
|
6504
|
+
attributeBindings: ['url:href'],
|
6505
|
+
url: 'http://google.com'
|
6506
|
+
});
|
6507
|
+
```
|
6508
|
+
|
6509
|
+
Will result in component instances with an HTML representation of:
|
6510
|
+
|
6511
|
+
```html
|
6512
|
+
<a id="ember1" class="ember-view" href="http://google.com"></a>
|
6513
|
+
```
|
6514
|
+
|
6515
|
+
Namespaced attributes (e.g. `xlink:href`) are supported, but have to be
|
6516
|
+
mapped, since `:` is not a valid character for properties in Javascript:
|
6517
|
+
|
6518
|
+
```app/components/my-use.js
|
6519
|
+
import Ember from 'ember';
|
6520
|
+
|
6521
|
+
export default Ember.Component.extend({
|
6522
|
+
tagName: 'use',
|
6523
|
+
attributeBindings: ['xlinkHref:xlink:href'],
|
6524
|
+
xlinkHref: '#triangle'
|
6525
|
+
});
|
6526
|
+
```
|
6527
|
+
|
6528
|
+
Will result in component instances with an HTML representation of:
|
6529
|
+
|
6530
|
+
```html
|
6531
|
+
<use xlink:href="#triangle"></use>
|
6532
|
+
```
|
6533
|
+
|
6534
|
+
If the return value of an `attributeBindings` monitored property is a boolean
|
6535
|
+
the attribute will be present or absent depending on the value:
|
6536
|
+
|
6537
|
+
```app/components/my-text-input.js
|
6538
|
+
import Ember from 'ember';
|
6539
|
+
|
6540
|
+
export default Ember.Component.extend({
|
6541
|
+
tagName: 'input',
|
6542
|
+
attributeBindings: ['disabled'],
|
6543
|
+
disabled: false
|
6544
|
+
});
|
6545
|
+
```
|
6546
|
+
|
6547
|
+
Will result in a component instance with an HTML representation of:
|
6548
|
+
|
6549
|
+
```html
|
6550
|
+
<input id="ember1" class="ember-view" />
|
6551
|
+
```
|
6552
|
+
|
6553
|
+
`attributeBindings` can refer to computed properties:
|
6554
|
+
|
6555
|
+
```app/components/my-text-input.js
|
6556
|
+
import Ember from 'ember';
|
6557
|
+
|
6558
|
+
export default Ember.Component.extend({
|
6559
|
+
tagName: 'input',
|
6560
|
+
attributeBindings: ['disabled'],
|
6561
|
+
disabled: Ember.computed(function() {
|
6562
|
+
if (someLogic) {
|
6563
|
+
return true;
|
6564
|
+
} else {
|
6565
|
+
return false;
|
6566
|
+
}
|
6567
|
+
})
|
6568
|
+
});
|
6569
|
+
```
|
6570
|
+
|
6571
|
+
To prevent setting an attribute altogether, use `null` or `undefined` as the
|
6572
|
+
return value of the `attributeBindings` monitored property:
|
6573
|
+
|
6574
|
+
```app/components/my-text-input.js
|
6575
|
+
import Ember from 'ember';
|
6576
|
+
|
6577
|
+
export default Ember.Component.extend({
|
6578
|
+
tagName: 'form',
|
6579
|
+
attributeBindings: ['novalidate'],
|
6580
|
+
novalidate: null
|
6581
|
+
});
|
6582
|
+
```
|
6583
|
+
|
6584
|
+
Updates to the property of an attribute binding will result in automatic
|
6585
|
+
update of the HTML attribute in the component's rendered HTML representation.
|
6586
|
+
`attributeBindings` is a concatenated property. See [Ember.Object](/api/classes/Ember.Object.html)
|
6587
|
+
documentation for more information about concatenated properties.
|
6588
|
+
|
6589
|
+
|
6590
|
+
## Layouts
|
6591
|
+
|
6592
|
+
See [Ember.Templates.helpers.yield](/api/classes/Ember.Templates.helpers.html#method_yield)
|
6593
|
+
for more information.
|
6594
|
+
|
6595
|
+
|
6596
|
+
## Responding to Browser Events
|
6597
|
+
|
6598
|
+
Components can respond to user-initiated events in one of three ways: method
|
6599
|
+
implementation, through an event manager, and through `{{action}}` helper use
|
6600
|
+
in their template or layout.
|
6601
|
+
|
6602
|
+
|
6603
|
+
### Method Implementation
|
6604
|
+
|
6605
|
+
Components can respond to user-initiated events by implementing a method that
|
6606
|
+
matches the event name. A `jQuery.Event` object will be passed as the
|
6607
|
+
argument to this method.
|
6608
|
+
|
6609
|
+
```app/components/my-widget.js
|
6610
|
+
import Ember from 'ember';
|
6611
|
+
|
6612
|
+
export default Ember.Component.extend({
|
6613
|
+
click(event) {
|
6614
|
+
// will be called when an instance's
|
6615
|
+
// rendered element is clicked
|
6616
|
+
}
|
6617
|
+
});
|
6618
|
+
```
|
6619
|
+
|
6620
|
+
|
6621
|
+
### `{{action}}` Helper
|
6622
|
+
|
6623
|
+
See [Ember.Templates.helpers.action](/api/classes/Ember.Templates.helpers.html#method_action).
|
6624
|
+
|
6625
|
+
|
6626
|
+
### Event Names
|
6627
|
+
|
6628
|
+
All of the event handling approaches described above respond to the same set
|
6629
|
+
of events. The names of the built-in events are listed below. (The hash of
|
6630
|
+
built-in events exists in `Ember.EventDispatcher`.) Additional, custom events
|
6631
|
+
can be registered by using `Ember.Application.customEvents`.
|
6632
|
+
|
6633
|
+
Touch events:
|
6634
|
+
|
6635
|
+
* `touchStart`
|
6636
|
+
* `touchMove`
|
6637
|
+
* `touchEnd`
|
6638
|
+
* `touchCancel`
|
6639
|
+
|
6640
|
+
Keyboard events:
|
6641
|
+
|
6642
|
+
* `keyDown`
|
6643
|
+
* `keyUp`
|
6644
|
+
* `keyPress`
|
6645
|
+
|
6646
|
+
Mouse events:
|
6647
|
+
|
6648
|
+
* `mouseDown`
|
6649
|
+
* `mouseUp`
|
6650
|
+
* `contextMenu`
|
6651
|
+
* `click`
|
6652
|
+
* `doubleClick`
|
6653
|
+
* `mouseMove`
|
6654
|
+
* `focusIn`
|
6655
|
+
* `focusOut`
|
6656
|
+
* `mouseEnter`
|
6657
|
+
* `mouseLeave`
|
6658
|
+
|
6659
|
+
Form events:
|
6660
|
+
|
6661
|
+
* `submit`
|
6662
|
+
* `change`
|
6663
|
+
* `focusIn`
|
6664
|
+
* `focusOut`
|
6665
|
+
* `input`
|
6666
|
+
|
6667
|
+
HTML5 drag and drop events:
|
6668
|
+
|
6669
|
+
* `dragStart`
|
6670
|
+
* `drag`
|
6671
|
+
* `dragEnter`
|
6672
|
+
* `dragLeave`
|
6673
|
+
* `dragOver`
|
6674
|
+
* `dragEnd`
|
6675
|
+
* `drop`
|
6676
|
+
|
6274
6677
|
@class Component
|
6275
6678
|
@namespace Ember
|
6276
6679
|
@extends Ember.CoreView
|
@@ -6278,6 +6681,7 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6278
6681
|
@uses Ember.ClassNamesSupport
|
6279
6682
|
@uses Ember.ActionSupport
|
6280
6683
|
@uses Ember.ViewMixin
|
6684
|
+
@uses Ember.ViewStateSupport
|
6281
6685
|
@public
|
6282
6686
|
*/
|
6283
6687
|
var Component = _emberViews.CoreView.extend(_emberViews.ChildViewsSupport, _emberViews.ViewStateSupport, _emberViews.ClassNamesSupport, _emberRuntime.TargetActionSupport, _emberViews.ActionSupport, _emberViews.ViewMixin, (_CoreView$extend = {
|
@@ -6299,9 +6703,9 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6299
6703
|
}
|
6300
6704
|
|
6301
6705
|
// If in a tagless component, assert that no event handlers are defined
|
6706
|
+
// indicate that the assertion should be triggered
|
6302
6707
|
},
|
6303
6708
|
|
6304
|
-
// indicate that the assertion should be triggered
|
6305
6709
|
rerender: function () {
|
6306
6710
|
this[DIRTY_TAG].dirty();
|
6307
6711
|
this._super();
|
@@ -6351,8 +6755,8 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6351
6755
|
`name` and `age`:
|
6352
6756
|
```javascript
|
6353
6757
|
let MyComponent = Ember.Component.extend;
|
6354
|
-
|
6355
|
-
|
6758
|
+
MyComponent.reopenClass({
|
6759
|
+
positionalParams: ['name', 'age']
|
6356
6760
|
});
|
6357
6761
|
```
|
6358
6762
|
It can then be invoked like this:
|
@@ -6361,14 +6765,14 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6361
6765
|
```
|
6362
6766
|
The parameters can be referred to just like named parameters:
|
6363
6767
|
```hbs
|
6364
|
-
Name: {{
|
6768
|
+
Name: {{name}}, Age: {{age}}.
|
6365
6769
|
```
|
6366
6770
|
Using a string instead of an array allows for an arbitrary number of
|
6367
6771
|
parameters:
|
6368
6772
|
```javascript
|
6369
6773
|
let MyComponent = Ember.Component.extend;
|
6370
|
-
|
6371
|
-
|
6774
|
+
MyComponent.reopenClass({
|
6775
|
+
positionalParams: 'names'
|
6372
6776
|
});
|
6373
6777
|
```
|
6374
6778
|
It can then be invoked like this:
|
@@ -6377,7 +6781,7 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6377
6781
|
```
|
6378
6782
|
The parameters can then be referred to by enumerating over the list:
|
6379
6783
|
```hbs
|
6380
|
-
{{#each
|
6784
|
+
{{#each names as |name|}}{{name}}{{/each}}
|
6381
6785
|
```
|
6382
6786
|
@static
|
6383
6787
|
@public
|
@@ -6485,6 +6889,67 @@ enifed('ember-glimmer/component', ['exports', 'ember-utils', 'ember-views', 'emb
|
|
6485
6889
|
@since 1.13.0
|
6486
6890
|
*/
|
6487
6891
|
|
6892
|
+
/**
|
6893
|
+
A component may contain a layout. A layout is a regular template but
|
6894
|
+
supersedes the `template` property during rendering. It is the
|
6895
|
+
responsibility of the layout template to retrieve the `template`
|
6896
|
+
property from the component (or alternatively, call `Handlebars.helpers.yield`,
|
6897
|
+
`{{yield}}`) to render it in the correct location.
|
6898
|
+
This is useful for a component that has a shared wrapper, but which delegates
|
6899
|
+
the rendering of the contents of the wrapper to the `template` property
|
6900
|
+
on a subclass.
|
6901
|
+
@property layout
|
6902
|
+
@type Function
|
6903
|
+
@public
|
6904
|
+
*/
|
6905
|
+
|
6906
|
+
/**
|
6907
|
+
The name of the layout to lookup if no layout is provided.
|
6908
|
+
By default `Ember.Component` will lookup a template with this name in
|
6909
|
+
`Ember.TEMPLATES` (a shared global object).
|
6910
|
+
@property layoutName
|
6911
|
+
@type String
|
6912
|
+
@default null
|
6913
|
+
@private
|
6914
|
+
*/
|
6915
|
+
|
6916
|
+
/**
|
6917
|
+
Returns a jQuery object for this component's element. If you pass in a selector
|
6918
|
+
string, this method will return a jQuery object, using the current element
|
6919
|
+
as its buffer.
|
6920
|
+
For example, calling `component.$('li')` will return a jQuery object containing
|
6921
|
+
all of the `li` elements inside the DOM element of this component.
|
6922
|
+
@method $
|
6923
|
+
@param {String} [selector] a jQuery-compatible selector string
|
6924
|
+
@return {jQuery} the jQuery object for the DOM node
|
6925
|
+
@public
|
6926
|
+
*/
|
6927
|
+
|
6928
|
+
/**
|
6929
|
+
The HTML `id` of the component's element in the DOM. You can provide this
|
6930
|
+
value yourself but it must be unique (just as in HTML):
|
6931
|
+
```handlebars
|
6932
|
+
{{my-component elementId="a-really-cool-id"}}
|
6933
|
+
```
|
6934
|
+
If not manually set a default value will be provided by the framework.
|
6935
|
+
Once rendered an element's `elementId` is considered immutable and you
|
6936
|
+
should never change it. If you need to compute a dynamic value for the
|
6937
|
+
`elementId`, you should do this when the component or element is being
|
6938
|
+
instantiated:
|
6939
|
+
```javascript
|
6940
|
+
export default Ember.Component.extend({
|
6941
|
+
init() {
|
6942
|
+
this._super(...arguments);
|
6943
|
+
var index = this.get('index');
|
6944
|
+
this.set('elementId', `component-id${index}`);
|
6945
|
+
}
|
6946
|
+
});
|
6947
|
+
```
|
6948
|
+
@property elementId
|
6949
|
+
@type String
|
6950
|
+
@public
|
6951
|
+
*/
|
6952
|
+
|
6488
6953
|
/**
|
6489
6954
|
If `false`, the view will appear hidden in DOM.
|
6490
6955
|
@property isVisible
|
@@ -6908,7 +7373,7 @@ enifed('ember-glimmer/components/link-to', ['exports', 'ember-console', 'ember-m
|
|
6908
7373
|
@namespace Ember
|
6909
7374
|
@extends Ember.Component
|
6910
7375
|
@see {Ember.Templates.helpers.link-to}
|
6911
|
-
@
|
7376
|
+
@public
|
6912
7377
|
**/
|
6913
7378
|
var LinkComponent = _emberGlimmerComponent.default.extend({
|
6914
7379
|
layout: _emberGlimmerTemplatesLinkTo.default,
|
@@ -7752,7 +8217,7 @@ enifed('ember-glimmer/dom', ['exports', 'glimmer-runtime', 'glimmer-node'], func
|
|
7752
8217
|
exports.DOMTreeConstruction = _glimmerRuntime.DOMTreeConstruction;
|
7753
8218
|
exports.NodeDOMTreeConstruction = _glimmerNode.NodeDOMTreeConstruction;
|
7754
8219
|
});
|
7755
|
-
enifed('ember-glimmer/environment', ['exports', 'ember-utils', 'ember-metal', 'ember-views', 'glimmer-runtime', 'ember-glimmer/syntax/curly-component', 'ember-glimmer/syntax', 'ember-glimmer/syntax/dynamic-component', 'ember-glimmer/utils/iterable', 'ember-glimmer/utils/references', 'ember-glimmer/helpers/if-unless', 'ember-glimmer/utils/bindings', 'ember-glimmer/helpers/action', 'ember-glimmer/helpers/component', 'ember-glimmer/helpers/concat', 'ember-glimmer/helpers/debugger', 'ember-glimmer/helpers/get', 'ember-glimmer/helpers/hash', 'ember-glimmer/helpers/loc', 'ember-glimmer/helpers/log', 'ember-glimmer/helpers/mut', 'ember-glimmer/helpers/readonly', 'ember-glimmer/helpers/unbound', 'ember-glimmer/helpers/-class', 'ember-glimmer/helpers/-input-type', 'ember-glimmer/helpers/query-param', 'ember-glimmer/helpers/each-in', 'ember-glimmer/helpers/-normalize-class', 'ember-glimmer/helpers/-html-safe', 'ember-glimmer/protocol-for-url', 'ember-glimmer/modifiers/action'], function (exports, _emberUtils, _emberMetal, _emberViews, _glimmerRuntime, _emberGlimmerSyntaxCurlyComponent, _emberGlimmerSyntax, _emberGlimmerSyntaxDynamicComponent, _emberGlimmerUtilsIterable, _emberGlimmerUtilsReferences, _emberGlimmerHelpersIfUnless, _emberGlimmerUtilsBindings, _emberGlimmerHelpersAction, _emberGlimmerHelpersComponent, _emberGlimmerHelpersConcat, _emberGlimmerHelpersDebugger, _emberGlimmerHelpersGet, _emberGlimmerHelpersHash, _emberGlimmerHelpersLoc, _emberGlimmerHelpersLog, _emberGlimmerHelpersMut, _emberGlimmerHelpersReadonly, _emberGlimmerHelpersUnbound, _emberGlimmerHelpersClass, _emberGlimmerHelpersInputType, _emberGlimmerHelpersQueryParam, _emberGlimmerHelpersEachIn, _emberGlimmerHelpersNormalizeClass, _emberGlimmerHelpersHtmlSafe, _emberGlimmerProtocolForUrl, _emberGlimmerModifiersAction) {
|
8220
|
+
enifed('ember-glimmer/environment', ['exports', 'ember-utils', 'ember-metal', 'ember-views', 'glimmer-runtime', 'ember-glimmer/syntax/curly-component', 'ember-glimmer/syntax', 'ember-glimmer/syntax/dynamic-component', 'ember-glimmer/utils/iterable', 'ember-glimmer/utils/references', 'ember-glimmer/utils/debug-stack', 'ember-glimmer/helpers/if-unless', 'ember-glimmer/utils/bindings', 'ember-glimmer/helpers/action', 'ember-glimmer/helpers/component', 'ember-glimmer/helpers/concat', 'ember-glimmer/helpers/debugger', 'ember-glimmer/helpers/get', 'ember-glimmer/helpers/hash', 'ember-glimmer/helpers/loc', 'ember-glimmer/helpers/log', 'ember-glimmer/helpers/mut', 'ember-glimmer/helpers/readonly', 'ember-glimmer/helpers/unbound', 'ember-glimmer/helpers/-class', 'ember-glimmer/helpers/-input-type', 'ember-glimmer/helpers/query-param', 'ember-glimmer/helpers/each-in', 'ember-glimmer/helpers/-normalize-class', 'ember-glimmer/helpers/-html-safe', 'ember-glimmer/protocol-for-url', 'ember-glimmer/modifiers/action'], function (exports, _emberUtils, _emberMetal, _emberViews, _glimmerRuntime, _emberGlimmerSyntaxCurlyComponent, _emberGlimmerSyntax, _emberGlimmerSyntaxDynamicComponent, _emberGlimmerUtilsIterable, _emberGlimmerUtilsReferences, _emberGlimmerUtilsDebugStack, _emberGlimmerHelpersIfUnless, _emberGlimmerUtilsBindings, _emberGlimmerHelpersAction, _emberGlimmerHelpersComponent, _emberGlimmerHelpersConcat, _emberGlimmerHelpersDebugger, _emberGlimmerHelpersGet, _emberGlimmerHelpersHash, _emberGlimmerHelpersLoc, _emberGlimmerHelpersLog, _emberGlimmerHelpersMut, _emberGlimmerHelpersReadonly, _emberGlimmerHelpersUnbound, _emberGlimmerHelpersClass, _emberGlimmerHelpersInputType, _emberGlimmerHelpersQueryParam, _emberGlimmerHelpersEachIn, _emberGlimmerHelpersNormalizeClass, _emberGlimmerHelpersHtmlSafe, _emberGlimmerProtocolForUrl, _emberGlimmerModifiersAction) {
|
7756
8221
|
'use strict';
|
7757
8222
|
|
7758
8223
|
var builtInComponents = {
|
@@ -11095,7 +11560,14 @@ enifed('ember-glimmer/syntax', ['exports', 'ember-glimmer/syntax/render', 'ember
|
|
11095
11560
|
return _class2;
|
11096
11561
|
})());
|
11097
11562
|
});
|
11098
|
-
enifed('ember-glimmer/syntax/
|
11563
|
+
enifed('ember-glimmer/syntax/abstract-manager', ['exports', 'ember-metal'], function (exports, _emberMetal) {
|
11564
|
+
'use strict';
|
11565
|
+
|
11566
|
+
var AbstractManager = function AbstractManager() {};
|
11567
|
+
|
11568
|
+
exports.default = AbstractManager;
|
11569
|
+
});
|
11570
|
+
enifed('ember-glimmer/syntax/curly-component', ['exports', 'ember-utils', 'glimmer-runtime', 'ember-glimmer/utils/bindings', 'ember-glimmer/component', 'ember-metal', 'ember-views', 'ember-glimmer/utils/process-args', 'container', 'ember-glimmer/syntax/abstract-manager'], function (exports, _emberUtils, _glimmerRuntime, _emberGlimmerUtilsBindings, _emberGlimmerComponent, _emberMetal, _emberViews, _emberGlimmerUtilsProcessArgs, _container, _emberGlimmerSyntaxAbstractManager) {
|
11099
11571
|
'use strict';
|
11100
11572
|
|
11101
11573
|
exports.validatePositionalParameters = validatePositionalParameters;
|
@@ -11205,8 +11677,12 @@ babelHelpers.inherits(CurlyComponentSyntax, _StatementSyntax);
|
|
11205
11677
|
return component.instrumentDetails({ initialRender: false });
|
11206
11678
|
}
|
11207
11679
|
|
11208
|
-
var CurlyComponentManager = (function () {
|
11209
|
-
|
11680
|
+
var CurlyComponentManager = (function (_AbstractManager) {
|
11681
|
+
babelHelpers.inherits(CurlyComponentManager, _AbstractManager);
|
11682
|
+
|
11683
|
+
function CurlyComponentManager() {
|
11684
|
+
_AbstractManager.apply(this, arguments);
|
11685
|
+
}
|
11210
11686
|
|
11211
11687
|
CurlyComponentManager.prototype.prepareArgs = function prepareArgs(definition, args) {
|
11212
11688
|
validatePositionalParameters(args.named, args.positional.values, definition.ComponentClass.positionalParams);
|
@@ -11215,6 +11691,7 @@ babelHelpers.inherits(CurlyComponentSyntax, _StatementSyntax);
|
|
11215
11691
|
};
|
11216
11692
|
|
11217
11693
|
CurlyComponentManager.prototype.create = function create(environment, definition, args, dynamicScope, callerSelfRef, hasBlock) {
|
11694
|
+
|
11218
11695
|
var parentView = dynamicScope.view;
|
11219
11696
|
|
11220
11697
|
var klass = definition.ComponentClass;
|
@@ -11416,7 +11893,7 @@ babelHelpers.inherits(CurlyComponentSyntax, _StatementSyntax);
|
|
11416
11893
|
};
|
11417
11894
|
|
11418
11895
|
return CurlyComponentManager;
|
11419
|
-
})();
|
11896
|
+
})(_emberGlimmerSyntaxAbstractManager.default);
|
11420
11897
|
|
11421
11898
|
var MANAGER = new CurlyComponentManager();
|
11422
11899
|
|
@@ -11775,7 +12252,7 @@ enifed('ember-glimmer/syntax/input', ['exports', 'ember-metal', 'ember-glimmer/s
|
|
11775
12252
|
};
|
11776
12253
|
exports.InputSyntax = InputSyntax;
|
11777
12254
|
});
|
11778
|
-
enifed('ember-glimmer/syntax/mount', ['exports', 'glimmer-runtime', 'glimmer-reference', 'ember-metal', 'ember-glimmer/utils/references', 'ember-routing', 'ember-glimmer/syntax/outlet'], function (exports, _glimmerRuntime, _glimmerReference, _emberMetal, _emberGlimmerUtilsReferences, _emberRouting, _emberGlimmerSyntaxOutlet) {
|
12255
|
+
enifed('ember-glimmer/syntax/mount', ['exports', 'glimmer-runtime', 'glimmer-reference', 'ember-metal', 'ember-glimmer/utils/references', 'ember-routing', 'ember-glimmer/syntax/outlet', 'ember-glimmer/syntax/abstract-manager'], function (exports, _glimmerRuntime, _glimmerReference, _emberMetal, _emberGlimmerUtilsReferences, _emberRouting, _emberGlimmerSyntaxOutlet, _emberGlimmerSyntaxAbstractManager) {
|
11779
12256
|
/**
|
11780
12257
|
@module ember
|
11781
12258
|
@submodule ember-glimmer
|
@@ -11830,8 +12307,12 @@ enifed('ember-glimmer/syntax/mount', ['exports', 'glimmer-runtime', 'glimmer-ref
|
|
11830
12307
|
|
11831
12308
|
exports.MountSyntax = MountSyntax;
|
11832
12309
|
|
11833
|
-
var MountManager = (function () {
|
11834
|
-
|
12310
|
+
var MountManager = (function (_AbstractManager) {
|
12311
|
+
babelHelpers.inherits(MountManager, _AbstractManager);
|
12312
|
+
|
12313
|
+
function MountManager() {
|
12314
|
+
_AbstractManager.apply(this, arguments);
|
12315
|
+
}
|
11835
12316
|
|
11836
12317
|
MountManager.prototype.prepareArgs = function prepareArgs(definition, args) {
|
11837
12318
|
return args;
|
@@ -11887,7 +12368,7 @@ enifed('ember-glimmer/syntax/mount', ['exports', 'glimmer-runtime', 'glimmer-ref
|
|
11887
12368
|
MountManager.prototype.didUpdate = function didUpdate(state) {};
|
11888
12369
|
|
11889
12370
|
return MountManager;
|
11890
|
-
})();
|
12371
|
+
})(_emberGlimmerSyntaxAbstractManager.default);
|
11891
12372
|
|
11892
12373
|
var MOUNT_MANAGER = new MountManager();
|
11893
12374
|
|
@@ -11902,7 +12383,7 @@ enifed('ember-glimmer/syntax/mount', ['exports', 'glimmer-runtime', 'glimmer-ref
|
|
11902
12383
|
return MountDefinition;
|
11903
12384
|
})(_glimmerRuntime.ComponentDefinition);
|
11904
12385
|
});
|
11905
|
-
enifed('ember-glimmer/syntax/outlet', ['exports', 'ember-utils', 'glimmer-runtime', 'ember-metal', 'ember-glimmer/utils/references', 'glimmer-reference'], function (exports, _emberUtils, _glimmerRuntime, _emberMetal, _emberGlimmerUtilsReferences, _glimmerReference) {
|
12386
|
+
enifed('ember-glimmer/syntax/outlet', ['exports', 'ember-utils', 'glimmer-runtime', 'ember-metal', 'ember-glimmer/utils/references', 'glimmer-reference', 'ember-glimmer/syntax/abstract-manager'], function (exports, _emberUtils, _glimmerRuntime, _emberMetal, _emberGlimmerUtilsReferences, _glimmerReference, _emberGlimmerSyntaxAbstractManager) {
|
11906
12387
|
/**
|
11907
12388
|
@module ember
|
11908
12389
|
@submodule ember-glimmer
|
@@ -12085,14 +12566,19 @@ enifed('ember-glimmer/syntax/outlet', ['exports', 'ember-utils', 'glimmer-runtim
|
|
12085
12566
|
return StateBucket;
|
12086
12567
|
})();
|
12087
12568
|
|
12088
|
-
var OutletComponentManager = (function () {
|
12089
|
-
|
12569
|
+
var OutletComponentManager = (function (_AbstractManager) {
|
12570
|
+
babelHelpers.inherits(OutletComponentManager, _AbstractManager);
|
12571
|
+
|
12572
|
+
function OutletComponentManager() {
|
12573
|
+
_AbstractManager.apply(this, arguments);
|
12574
|
+
}
|
12090
12575
|
|
12091
12576
|
OutletComponentManager.prototype.prepareArgs = function prepareArgs(definition, args) {
|
12092
12577
|
return args;
|
12093
12578
|
};
|
12094
12579
|
|
12095
12580
|
OutletComponentManager.prototype.create = function create(environment, definition, args, dynamicScope) {
|
12581
|
+
|
12096
12582
|
var outletStateReference = dynamicScope.outletState = dynamicScope.outletState.get('outlets').get(definition.outletName);
|
12097
12583
|
var outletState = outletStateReference.value();
|
12098
12584
|
return new StateBucket(outletState);
|
@@ -12131,7 +12617,7 @@ enifed('ember-glimmer/syntax/outlet', ['exports', 'ember-utils', 'glimmer-runtim
|
|
12131
12617
|
OutletComponentManager.prototype.didUpdate = function didUpdate(state) {};
|
12132
12618
|
|
12133
12619
|
return OutletComponentManager;
|
12134
|
-
})();
|
12620
|
+
})(_emberGlimmerSyntaxAbstractManager.default);
|
12135
12621
|
|
12136
12622
|
var MANAGER = new OutletComponentManager();
|
12137
12623
|
|
@@ -12143,6 +12629,7 @@ enifed('ember-glimmer/syntax/outlet', ['exports', 'ember-utils', 'glimmer-runtim
|
|
12143
12629
|
}
|
12144
12630
|
|
12145
12631
|
TopLevelOutletComponentManager.prototype.create = function create(environment, definition, args, dynamicScope) {
|
12632
|
+
|
12146
12633
|
return new StateBucket(dynamicScope.outletState.value());
|
12147
12634
|
};
|
12148
12635
|
|
@@ -12215,7 +12702,7 @@ enifed('ember-glimmer/syntax/outlet', ['exports', 'ember-utils', 'glimmer-runtim
|
|
12215
12702
|
|
12216
12703
|
OutletLayoutCompiler.id = 'outlet';
|
12217
12704
|
});
|
12218
|
-
enifed('ember-glimmer/syntax/render', ['exports', 'glimmer-runtime', 'glimmer-reference', 'ember-metal', 'ember-glimmer/utils/references', 'ember-routing', 'ember-glimmer/syntax/outlet'], function (exports, _glimmerRuntime, _glimmerReference, _emberMetal, _emberGlimmerUtilsReferences, _emberRouting, _emberGlimmerSyntaxOutlet) {
|
12705
|
+
enifed('ember-glimmer/syntax/render', ['exports', 'glimmer-runtime', 'glimmer-reference', 'ember-metal', 'ember-glimmer/utils/references', 'ember-routing', 'ember-glimmer/syntax/outlet', 'ember-glimmer/syntax/abstract-manager'], function (exports, _glimmerRuntime, _glimmerReference, _emberMetal, _emberGlimmerUtilsReferences, _emberRouting, _emberGlimmerSyntaxOutlet, _emberGlimmerSyntaxAbstractManager) {
|
12219
12706
|
/**
|
12220
12707
|
@module ember
|
12221
12708
|
@submodule ember-glimmer
|
@@ -12343,8 +12830,12 @@ enifed('ember-glimmer/syntax/render', ['exports', 'glimmer-runtime', 'glimmer-re
|
|
12343
12830
|
|
12344
12831
|
exports.RenderSyntax = RenderSyntax;
|
12345
12832
|
|
12346
|
-
var AbstractRenderManager = (function () {
|
12347
|
-
|
12833
|
+
var AbstractRenderManager = (function (_AbstractManager) {
|
12834
|
+
babelHelpers.inherits(AbstractRenderManager, _AbstractManager);
|
12835
|
+
|
12836
|
+
function AbstractRenderManager() {
|
12837
|
+
_AbstractManager.apply(this, arguments);
|
12838
|
+
}
|
12348
12839
|
|
12349
12840
|
AbstractRenderManager.prototype.prepareArgs = function prepareArgs(definition, args) {
|
12350
12841
|
return args;
|
@@ -12383,7 +12874,7 @@ enifed('ember-glimmer/syntax/render', ['exports', 'glimmer-runtime', 'glimmer-re
|
|
12383
12874
|
AbstractRenderManager.prototype.didUpdate = function didUpdate() {};
|
12384
12875
|
|
12385
12876
|
return AbstractRenderManager;
|
12386
|
-
})();
|
12877
|
+
})(_emberGlimmerSyntaxAbstractManager.default);
|
12387
12878
|
|
12388
12879
|
var SingletonRenderManager = (function (_AbstractRenderManager) {
|
12389
12880
|
babelHelpers.inherits(SingletonRenderManager, _AbstractRenderManager);
|
@@ -12752,6 +13243,13 @@ enifed('ember-glimmer/utils/bindings', ['exports', 'glimmer-reference', 'glimmer
|
|
12752
13243
|
return ColonClassNameBindingReference;
|
12753
13244
|
})(_glimmerReference.CachedReference);
|
12754
13245
|
});
|
13246
|
+
enifed('ember-glimmer/utils/debug-stack', ['exports', 'ember-metal'], function (exports, _emberMetal) {
|
13247
|
+
'use strict';
|
13248
|
+
|
13249
|
+
var DebugStack = undefined;
|
13250
|
+
|
13251
|
+
exports.default = DebugStack;
|
13252
|
+
});
|
12755
13253
|
enifed('ember-glimmer/utils/iterable', ['exports', 'ember-utils', 'ember-metal', 'ember-runtime', 'ember-glimmer/utils/references', 'ember-glimmer/helpers/each-in', 'glimmer-reference'], function (exports, _emberUtils, _emberMetal, _emberRuntime, _emberGlimmerUtilsReferences, _emberGlimmerHelpersEachIn, _glimmerReference) {
|
12756
13254
|
'use strict';
|
12757
13255
|
|
@@ -14615,7 +15113,7 @@ enifed('ember-metal/cache', ['exports', 'ember-utils', 'ember-metal/meta'], func
|
|
14615
15113
|
return DefaultStore;
|
14616
15114
|
})();
|
14617
15115
|
});
|
14618
|
-
enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_get', 'ember-metal/meta', 'ember-metal/watch_key', 'ember-metal/watch_path'], function (exports, _emberUtils, _emberMetalProperty_get, _emberMetalMeta, _emberMetalWatch_key, _emberMetalWatch_path) {
|
15116
|
+
enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_get', 'ember-metal/meta', 'ember-metal/watch_key', 'ember-metal/computed', 'ember-metal/watch_path'], function (exports, _emberUtils, _emberMetalProperty_get, _emberMetalMeta, _emberMetalWatch_key, _emberMetalComputed, _emberMetalWatch_path) {
|
14619
15117
|
'use strict';
|
14620
15118
|
|
14621
15119
|
exports.finishChains = finishChains;
|
@@ -14800,8 +15298,8 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
|
|
14800
15298
|
// Otherwise attempt to get the cached value of the computed property
|
14801
15299
|
} else {
|
14802
15300
|
var cache = meta.readableCache();
|
14803
|
-
if (cache
|
14804
|
-
return cache
|
15301
|
+
if (cache) {
|
15302
|
+
return _emberMetalComputed.cacheFor.get(cache, key);
|
14805
15303
|
}
|
14806
15304
|
}
|
14807
15305
|
}
|
@@ -17629,7 +18127,7 @@ enifed('ember-metal/merge', ['exports'], function (exports) {
|
|
17629
18127
|
return original;
|
17630
18128
|
}
|
17631
18129
|
});
|
17632
|
-
enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'ember-metal/meta_listeners', 'ember-metal/debug', 'ember-metal/chains'], function (exports, _emberUtils, _emberMetalFeatures, _emberMetalMeta_listeners, _emberMetalDebug, _emberMetalChains) {
|
18130
|
+
enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'ember-metal/meta_listeners', 'ember-metal/debug', 'ember-metal/chains', 'require'], function (exports, _emberUtils, _emberMetalFeatures, _emberMetalMeta_listeners, _emberMetalDebug, _emberMetalChains, _require) {
|
17633
18131
|
'no use strict';
|
17634
18132
|
// Remove "use strict"; from transpiled module until
|
17635
18133
|
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
@@ -17694,7 +18192,11 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
17694
18192
|
|
17695
18193
|
if (false || false) {
|
17696
18194
|
members.lastRendered = ownMap;
|
17697
|
-
|
18195
|
+
if (_require.has('ember-debug')) {
|
18196
|
+
//https://github.com/emberjs/ember.js/issues/14732
|
18197
|
+
members.lastRenderedReferenceMap = ownMap;
|
18198
|
+
members.lastRenderedTemplateMap = ownMap;
|
18199
|
+
}
|
17698
18200
|
}
|
17699
18201
|
|
17700
18202
|
var memberNames = Object.keys(members);
|
@@ -17733,7 +18235,6 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
17733
18235
|
|
17734
18236
|
if (false || false) {
|
17735
18237
|
this._lastRendered = undefined;
|
17736
|
-
this._lastRenderedFrom = undefined; // FIXME: not used in production, remove me from prod builds
|
17737
18238
|
}
|
17738
18239
|
|
17739
18240
|
this._initializeListeners();
|
@@ -18095,24 +18596,11 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
|
|
18095
18596
|
};
|
18096
18597
|
}
|
18097
18598
|
|
18098
|
-
var HAS_NATIVE_WEAKMAP = (function () {
|
18099
|
-
// detect if `WeakMap` is even present
|
18100
|
-
var hasWeakMap = typeof WeakMap === 'function';
|
18101
|
-
if (!hasWeakMap) {
|
18102
|
-
return false;
|
18103
|
-
}
|
18104
|
-
|
18105
|
-
var instance = new WeakMap();
|
18106
|
-
// use `Object`'s `.toString` directly to prevent us from detecting
|
18107
|
-
// polyfills as native weakmaps
|
18108
|
-
return Object.prototype.toString.call(instance) === '[object WeakMap]';
|
18109
|
-
})();
|
18110
|
-
|
18111
18599
|
var setMeta = undefined,
|
18112
18600
|
peekMeta = undefined;
|
18113
18601
|
|
18114
18602
|
// choose the one appropriate for given platform
|
18115
|
-
if (HAS_NATIVE_WEAKMAP) {
|
18603
|
+
if (_emberUtils.HAS_NATIVE_WEAKMAP) {
|
18116
18604
|
(function () {
|
18117
18605
|
var getPrototypeOf = Object.getPrototypeOf;
|
18118
18606
|
var metaStore = new WeakMap();
|
@@ -21191,10 +21679,12 @@ enifed('ember-metal/transaction', ['exports', 'ember-metal/meta', 'ember-metal/d
|
|
21191
21679
|
var counter = 0;
|
21192
21680
|
var inTransaction = false;
|
21193
21681
|
var shouldReflush = undefined;
|
21682
|
+
var debugStack = undefined;
|
21194
21683
|
|
21195
21684
|
exports.default = runInTransaction = function (context, methodName) {
|
21196
21685
|
shouldReflush = false;
|
21197
21686
|
inTransaction = true;
|
21687
|
+
|
21198
21688
|
context[methodName]();
|
21199
21689
|
inTransaction = false;
|
21200
21690
|
counter++;
|
@@ -21216,10 +21706,13 @@ enifed('ember-metal/transaction', ['exports', 'ember-metal/meta', 'ember-metal/d
|
|
21216
21706
|
|
21217
21707
|
if (lastRendered && lastRendered[key] === counter) {
|
21218
21708
|
raise((function () {
|
21219
|
-
var
|
21220
|
-
var
|
21221
|
-
var
|
21709
|
+
var templateMap = meta.readableLastRenderedTemplateMap();
|
21710
|
+
var lastRenderedIn = templateMap[key];
|
21711
|
+
var currentlyIn = debugStack.peek();
|
21222
21712
|
|
21713
|
+
var referenceMap = meta.readableLastRenderedReferenceMap();
|
21714
|
+
var lastRef = referenceMap[key];
|
21715
|
+
var parts = [];
|
21223
21716
|
var label = undefined;
|
21224
21717
|
|
21225
21718
|
if (lastRef) {
|
@@ -21228,12 +21721,12 @@ enifed('ember-metal/transaction', ['exports', 'ember-metal/meta', 'ember-metal/d
|
|
21228
21721
|
lastRef = lastRef._parentReference;
|
21229
21722
|
}
|
21230
21723
|
|
21231
|
-
label = parts.join();
|
21724
|
+
label = parts.join('.');
|
21232
21725
|
} else {
|
21233
21726
|
label = 'the same value';
|
21234
21727
|
}
|
21235
21728
|
|
21236
|
-
return 'You modified ' + label + ' twice on ' + object + ' in a single render. This was unreliable and slow in Ember 1.x and ' + implication;
|
21729
|
+
return 'You modified "' + label + '" twice on ' + object + ' in a single render. It was rendered in ' + lastRenderedIn + ' and modified in ' + currentlyIn + '. This was unreliable and slow in Ember 1.x and ' + implication;
|
21237
21730
|
})(), false);
|
21238
21731
|
|
21239
21732
|
shouldReflush = true;
|
@@ -32210,9 +32703,9 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal', 'ember-r
|
|
32210
32703
|
want to reuse an existing array without having to recreate it.
|
32211
32704
|
```javascript
|
32212
32705
|
let colors = ['red', 'green', 'blue'];
|
32213
|
-
|
32214
|
-
colors.clear();
|
32215
|
-
colors.length
|
32706
|
+
colors.length; // 3
|
32707
|
+
colors.clear(); // []
|
32708
|
+
colors.length; // 0
|
32216
32709
|
```
|
32217
32710
|
@method clear
|
32218
32711
|
@return {Ember.Array} An empty Array.
|
@@ -33389,7 +33882,7 @@ enifed('ember-runtime/mixins/registry_proxy', ['exports', 'ember-metal'], functi
|
|
33389
33882
|
let App = Ember.Application.create();
|
33390
33883
|
let appInstance = App.buildInstance();
|
33391
33884
|
// if all of type `connection` must not be singletons
|
33392
|
-
appInstance.
|
33885
|
+
appInstance.registerOptionsForType('connection', { singleton: false });
|
33393
33886
|
appInstance.register('connection:twitter', TwitterConnection);
|
33394
33887
|
appInstance.register('connection:facebook', FacebookConnection);
|
33395
33888
|
let twitter = appInstance.lookup('connection:twitter');
|
@@ -36364,7 +36857,7 @@ enifed('ember-utils/guid', ['exports', 'ember-utils/intern'], function (exports,
|
|
36364
36857
|
}
|
36365
36858
|
}
|
36366
36859
|
});
|
36367
|
-
enifed('ember-utils/index', ['exports', 'ember-utils/symbol', 'ember-utils/owner', 'ember-utils/assign', 'ember-utils/empty-object', 'ember-utils/dictionary', 'ember-utils/guid', 'ember-utils/intern', 'ember-utils/super', 'ember-utils/inspect', 'ember-utils/lookup-descriptor', 'ember-utils/invoke', 'ember-utils/make-array', 'ember-utils/apply-str', 'ember-utils/name', 'ember-utils/to-string'], function (exports, _emberUtilsSymbol, _emberUtilsOwner, _emberUtilsAssign, _emberUtilsEmptyObject, _emberUtilsDictionary, _emberUtilsGuid, _emberUtilsIntern, _emberUtilsSuper, _emberUtilsInspect, _emberUtilsLookupDescriptor, _emberUtilsInvoke, _emberUtilsMakeArray, _emberUtilsApplyStr, _emberUtilsName, _emberUtilsToString) {
|
36860
|
+
enifed('ember-utils/index', ['exports', 'ember-utils/symbol', 'ember-utils/owner', 'ember-utils/assign', 'ember-utils/empty-object', 'ember-utils/dictionary', 'ember-utils/guid', 'ember-utils/intern', 'ember-utils/super', 'ember-utils/inspect', 'ember-utils/lookup-descriptor', 'ember-utils/invoke', 'ember-utils/make-array', 'ember-utils/apply-str', 'ember-utils/name', 'ember-utils/to-string', 'ember-utils/weak-map-utils'], function (exports, _emberUtilsSymbol, _emberUtilsOwner, _emberUtilsAssign, _emberUtilsEmptyObject, _emberUtilsDictionary, _emberUtilsGuid, _emberUtilsIntern, _emberUtilsSuper, _emberUtilsInspect, _emberUtilsLookupDescriptor, _emberUtilsInvoke, _emberUtilsMakeArray, _emberUtilsApplyStr, _emberUtilsName, _emberUtilsToString, _emberUtilsWeakMapUtils) {
|
36368
36861
|
/*
|
36369
36862
|
This package will be eagerly parsed and should have no dependencies on external
|
36370
36863
|
packages.
|
@@ -36402,6 +36895,7 @@ enifed('ember-utils/index', ['exports', 'ember-utils/symbol', 'ember-utils/owner
|
|
36402
36895
|
exports.applyStr = _emberUtilsApplyStr.default;
|
36403
36896
|
exports.NAME_KEY = _emberUtilsName.default;
|
36404
36897
|
exports.toString = _emberUtilsToString.default;
|
36898
|
+
exports.HAS_NATIVE_WEAKMAP = _emberUtilsWeakMapUtils.HAS_NATIVE_WEAKMAP;
|
36405
36899
|
});
|
36406
36900
|
enifed('ember-utils/inspect', ['exports'], function (exports) {
|
36407
36901
|
'use strict';
|
@@ -36702,8 +37196,8 @@ enifed('ember-utils/owner', ['exports', 'ember-utils/symbol'], function (exports
|
|
36702
37196
|
|
36703
37197
|
@method setOwner
|
36704
37198
|
@for Ember
|
36705
|
-
@param {Object} object An object
|
36706
|
-
@
|
37199
|
+
@param {Object} object An object instance.
|
37200
|
+
@param {Object} object The new owner object of the object instance.
|
36707
37201
|
@since 2.3.0
|
36708
37202
|
@public
|
36709
37203
|
*/
|
@@ -36819,6 +37313,23 @@ enifed('ember-utils/to-string', ['exports'], function (exports) {
|
|
36819
37313
|
}
|
36820
37314
|
}
|
36821
37315
|
});
|
37316
|
+
enifed('ember-utils/weak-map-utils', ['exports'], function (exports) {
|
37317
|
+
'use strict';
|
37318
|
+
|
37319
|
+
var HAS_NATIVE_WEAKMAP = (function () {
|
37320
|
+
// detect if `WeakMap` is even present
|
37321
|
+
var hasWeakMap = typeof WeakMap === 'function';
|
37322
|
+
if (!hasWeakMap) {
|
37323
|
+
return false;
|
37324
|
+
}
|
37325
|
+
|
37326
|
+
var instance = new WeakMap();
|
37327
|
+
// use `Object`'s `.toString` directly to prevent us from detecting
|
37328
|
+
// polyfills as native weakmaps
|
37329
|
+
return Object.prototype.toString.call(instance) === '[object WeakMap]';
|
37330
|
+
})();
|
37331
|
+
exports.HAS_NATIVE_WEAKMAP = HAS_NATIVE_WEAKMAP;
|
37332
|
+
});
|
36822
37333
|
enifed('ember-views/compat/attrs', ['exports', 'ember-utils'], function (exports, _emberUtils) {
|
36823
37334
|
'use strict';
|
36824
37335
|
|
@@ -38722,481 +39233,6 @@ enifed("ember-views/views/view", ["exports"], function (exports) {
|
|
38722
39233
|
*/
|
38723
39234
|
|
38724
39235
|
/**
|
38725
|
-
`Ember.View` is the class in Ember responsible for encapsulating templates of
|
38726
|
-
HTML content, combining templates with data to render as sections of a page's
|
38727
|
-
DOM, and registering and responding to user-initiated events.
|
38728
|
-
|
38729
|
-
## HTML Tag
|
38730
|
-
|
38731
|
-
The default HTML tag name used for a view's DOM representation is `div`. This
|
38732
|
-
can be customized by setting the `tagName` property. The following view
|
38733
|
-
class:
|
38734
|
-
|
38735
|
-
```javascript
|
38736
|
-
ParagraphView = Ember.View.extend({
|
38737
|
-
tagName: 'em'
|
38738
|
-
});
|
38739
|
-
```
|
38740
|
-
|
38741
|
-
Would result in instances with the following HTML:
|
38742
|
-
|
38743
|
-
```html
|
38744
|
-
<em id="ember1" class="ember-view"></em>
|
38745
|
-
```
|
38746
|
-
|
38747
|
-
## HTML `class` Attribute
|
38748
|
-
|
38749
|
-
The HTML `class` attribute of a view's tag can be set by providing a
|
38750
|
-
`classNames` property that is set to an array of strings:
|
38751
|
-
|
38752
|
-
```javascript
|
38753
|
-
MyView = Ember.View.extend({
|
38754
|
-
classNames: ['my-class', 'my-other-class']
|
38755
|
-
});
|
38756
|
-
```
|
38757
|
-
|
38758
|
-
Will result in view instances with an HTML representation of:
|
38759
|
-
|
38760
|
-
```html
|
38761
|
-
<div id="ember1" class="ember-view my-class my-other-class"></div>
|
38762
|
-
```
|
38763
|
-
|
38764
|
-
`class` attribute values can also be set by providing a `classNameBindings`
|
38765
|
-
property set to an array of properties names for the view. The return value
|
38766
|
-
of these properties will be added as part of the value for the view's `class`
|
38767
|
-
attribute. These properties can be computed properties:
|
38768
|
-
|
38769
|
-
```javascript
|
38770
|
-
MyView = Ember.View.extend({
|
38771
|
-
classNameBindings: ['propertyA', 'propertyB'],
|
38772
|
-
propertyA: 'from-a',
|
38773
|
-
propertyB: Ember.computed(function() {
|
38774
|
-
if (someLogic) { return 'from-b'; }
|
38775
|
-
})
|
38776
|
-
});
|
38777
|
-
```
|
38778
|
-
|
38779
|
-
Will result in view instances with an HTML representation of:
|
38780
|
-
|
38781
|
-
```html
|
38782
|
-
<div id="ember1" class="ember-view from-a from-b"></div>
|
38783
|
-
```
|
38784
|
-
|
38785
|
-
If the value of a class name binding returns a boolean the property name
|
38786
|
-
itself will be used as the class name if the property is true. The class name
|
38787
|
-
will not be added if the value is `false` or `undefined`.
|
38788
|
-
|
38789
|
-
```javascript
|
38790
|
-
MyView = Ember.View.extend({
|
38791
|
-
classNameBindings: ['hovered'],
|
38792
|
-
hovered: true
|
38793
|
-
});
|
38794
|
-
```
|
38795
|
-
|
38796
|
-
Will result in view instances with an HTML representation of:
|
38797
|
-
|
38798
|
-
```html
|
38799
|
-
<div id="ember1" class="ember-view hovered"></div>
|
38800
|
-
```
|
38801
|
-
|
38802
|
-
When using boolean class name bindings you can supply a string value other
|
38803
|
-
than the property name for use as the `class` HTML attribute by appending the
|
38804
|
-
preferred value after a ":" character when defining the binding:
|
38805
|
-
|
38806
|
-
```javascript
|
38807
|
-
MyView = Ember.View.extend({
|
38808
|
-
classNameBindings: ['awesome:so-very-cool'],
|
38809
|
-
awesome: true
|
38810
|
-
});
|
38811
|
-
```
|
38812
|
-
|
38813
|
-
Will result in view instances with an HTML representation of:
|
38814
|
-
|
38815
|
-
```html
|
38816
|
-
<div id="ember1" class="ember-view so-very-cool"></div>
|
38817
|
-
```
|
38818
|
-
|
38819
|
-
Boolean value class name bindings whose property names are in a
|
38820
|
-
camelCase-style format will be converted to a dasherized format:
|
38821
|
-
|
38822
|
-
```javascript
|
38823
|
-
MyView = Ember.View.extend({
|
38824
|
-
classNameBindings: ['isUrgent'],
|
38825
|
-
isUrgent: true
|
38826
|
-
});
|
38827
|
-
```
|
38828
|
-
|
38829
|
-
Will result in view instances with an HTML representation of:
|
38830
|
-
|
38831
|
-
```html
|
38832
|
-
<div id="ember1" class="ember-view is-urgent"></div>
|
38833
|
-
```
|
38834
|
-
|
38835
|
-
Class name bindings can also refer to object values that are found by
|
38836
|
-
traversing a path relative to the view itself:
|
38837
|
-
|
38838
|
-
```javascript
|
38839
|
-
MyView = Ember.View.extend({
|
38840
|
-
classNameBindings: ['messages.empty']
|
38841
|
-
messages: Ember.Object.create({
|
38842
|
-
empty: true
|
38843
|
-
})
|
38844
|
-
});
|
38845
|
-
```
|
38846
|
-
|
38847
|
-
Will result in view instances with an HTML representation of:
|
38848
|
-
|
38849
|
-
```html
|
38850
|
-
<div id="ember1" class="ember-view empty"></div>
|
38851
|
-
```
|
38852
|
-
|
38853
|
-
If you want to add a class name for a property which evaluates to true and
|
38854
|
-
and a different class name if it evaluates to false, you can pass a binding
|
38855
|
-
like this:
|
38856
|
-
|
38857
|
-
```javascript
|
38858
|
-
// Applies 'enabled' class when isEnabled is true and 'disabled' when isEnabled is false
|
38859
|
-
Ember.View.extend({
|
38860
|
-
classNameBindings: ['isEnabled:enabled:disabled']
|
38861
|
-
isEnabled: true
|
38862
|
-
});
|
38863
|
-
```
|
38864
|
-
|
38865
|
-
Will result in view instances with an HTML representation of:
|
38866
|
-
|
38867
|
-
```html
|
38868
|
-
<div id="ember1" class="ember-view enabled"></div>
|
38869
|
-
```
|
38870
|
-
|
38871
|
-
When isEnabled is `false`, the resulting HTML representation looks like
|
38872
|
-
this:
|
38873
|
-
|
38874
|
-
```html
|
38875
|
-
<div id="ember1" class="ember-view disabled"></div>
|
38876
|
-
```
|
38877
|
-
|
38878
|
-
This syntax offers the convenience to add a class if a property is `false`:
|
38879
|
-
|
38880
|
-
```javascript
|
38881
|
-
// Applies no class when isEnabled is true and class 'disabled' when isEnabled is false
|
38882
|
-
Ember.View.extend({
|
38883
|
-
classNameBindings: ['isEnabled::disabled']
|
38884
|
-
isEnabled: true
|
38885
|
-
});
|
38886
|
-
```
|
38887
|
-
|
38888
|
-
Will result in view instances with an HTML representation of:
|
38889
|
-
|
38890
|
-
```html
|
38891
|
-
<div id="ember1" class="ember-view"></div>
|
38892
|
-
```
|
38893
|
-
|
38894
|
-
When the `isEnabled` property on the view is set to `false`, it will result
|
38895
|
-
in view instances with an HTML representation of:
|
38896
|
-
|
38897
|
-
```html
|
38898
|
-
<div id="ember1" class="ember-view disabled"></div>
|
38899
|
-
```
|
38900
|
-
|
38901
|
-
Updates to the value of a class name binding will result in automatic
|
38902
|
-
update of the HTML `class` attribute in the view's rendered HTML
|
38903
|
-
representation. If the value becomes `false` or `undefined` the class name
|
38904
|
-
will be removed.
|
38905
|
-
|
38906
|
-
Both `classNames` and `classNameBindings` are concatenated properties. See
|
38907
|
-
[Ember.Object](/api/classes/Ember.Object.html) documentation for more
|
38908
|
-
information about concatenated properties.
|
38909
|
-
|
38910
|
-
## HTML Attributes
|
38911
|
-
|
38912
|
-
The HTML attribute section of a view's tag can be set by providing an
|
38913
|
-
`attributeBindings` property set to an array of property names on the view.
|
38914
|
-
The return value of these properties will be used as the value of the view's
|
38915
|
-
HTML associated attribute:
|
38916
|
-
|
38917
|
-
```javascript
|
38918
|
-
AnchorView = Ember.View.extend({
|
38919
|
-
tagName: 'a',
|
38920
|
-
attributeBindings: ['href'],
|
38921
|
-
href: 'http://google.com'
|
38922
|
-
});
|
38923
|
-
```
|
38924
|
-
|
38925
|
-
Will result in view instances with an HTML representation of:
|
38926
|
-
|
38927
|
-
```html
|
38928
|
-
<a id="ember1" class="ember-view" href="http://google.com"></a>
|
38929
|
-
```
|
38930
|
-
|
38931
|
-
One property can be mapped on to another by placing a ":" between
|
38932
|
-
the source property and the destination property:
|
38933
|
-
|
38934
|
-
```javascript
|
38935
|
-
AnchorView = Ember.View.extend({
|
38936
|
-
tagName: 'a',
|
38937
|
-
attributeBindings: ['url:href'],
|
38938
|
-
url: 'http://google.com'
|
38939
|
-
});
|
38940
|
-
```
|
38941
|
-
|
38942
|
-
Will result in view instances with an HTML representation of:
|
38943
|
-
|
38944
|
-
```html
|
38945
|
-
<a id="ember1" class="ember-view" href="http://google.com"></a>
|
38946
|
-
```
|
38947
|
-
|
38948
|
-
Namespaced attributes (e.g. `xlink:href`) are supported, but have to be
|
38949
|
-
mapped, since `:` is not a valid character for properties in Javascript:
|
38950
|
-
|
38951
|
-
```javascript
|
38952
|
-
UseView = Ember.View.extend({
|
38953
|
-
tagName: 'use',
|
38954
|
-
attributeBindings: ['xlinkHref:xlink:href'],
|
38955
|
-
xlinkHref: '#triangle'
|
38956
|
-
});
|
38957
|
-
```
|
38958
|
-
Will result in view instances with an HTML representation of:
|
38959
|
-
|
38960
|
-
```html
|
38961
|
-
<use xlink:href="#triangle"></use>
|
38962
|
-
```
|
38963
|
-
|
38964
|
-
If the return value of an `attributeBindings` monitored property is a boolean
|
38965
|
-
the attribute will be present or absent depending on the value:
|
38966
|
-
|
38967
|
-
```javascript
|
38968
|
-
MyTextInput = Ember.View.extend({
|
38969
|
-
tagName: 'input',
|
38970
|
-
attributeBindings: ['disabled'],
|
38971
|
-
disabled: false
|
38972
|
-
});
|
38973
|
-
```
|
38974
|
-
|
38975
|
-
Will result in a view instance with an HTML representation of:
|
38976
|
-
|
38977
|
-
```html
|
38978
|
-
<input id="ember1" class="ember-view" />
|
38979
|
-
```
|
38980
|
-
|
38981
|
-
`attributeBindings` can refer to computed properties:
|
38982
|
-
|
38983
|
-
```javascript
|
38984
|
-
MyTextInput = Ember.View.extend({
|
38985
|
-
tagName: 'input',
|
38986
|
-
attributeBindings: ['disabled'],
|
38987
|
-
disabled: Ember.computed(function() {
|
38988
|
-
if (someLogic) {
|
38989
|
-
return true;
|
38990
|
-
} else {
|
38991
|
-
return false;
|
38992
|
-
}
|
38993
|
-
})
|
38994
|
-
});
|
38995
|
-
```
|
38996
|
-
|
38997
|
-
To prevent setting an attribute altogether, use `null` or `undefined` as the
|
38998
|
-
return value of the `attributeBindings` monitored property:
|
38999
|
-
|
39000
|
-
```javascript
|
39001
|
-
MyTextInput = Ember.View.extend({
|
39002
|
-
tagName: 'form',
|
39003
|
-
attributeBindings: ['novalidate'],
|
39004
|
-
novalidate: null
|
39005
|
-
});
|
39006
|
-
```
|
39007
|
-
|
39008
|
-
Updates to the property of an attribute binding will result in automatic
|
39009
|
-
update of the HTML attribute in the view's rendered HTML representation.
|
39010
|
-
|
39011
|
-
`attributeBindings` is a concatenated property. See [Ember.Object](/api/classes/Ember.Object.html)
|
39012
|
-
documentation for more information about concatenated properties.
|
39013
|
-
|
39014
|
-
## Layouts
|
39015
|
-
|
39016
|
-
Views can have a secondary template that wraps their main template. Like
|
39017
|
-
primary templates, layouts can be any function that accepts an optional
|
39018
|
-
context parameter and returns a string of HTML that will be inserted inside
|
39019
|
-
view's tag. Views whose HTML element is self closing (e.g. `<input />`)
|
39020
|
-
cannot have a layout and this property will be ignored.
|
39021
|
-
|
39022
|
-
Most typically in Ember a layout will be a compiled template.
|
39023
|
-
|
39024
|
-
A view's layout can be set directly with the `layout` property or reference
|
39025
|
-
an existing template by name with the `layoutName` property.
|
39026
|
-
|
39027
|
-
A template used as a layout must contain a single use of the
|
39028
|
-
`{{yield}}` helper. The HTML contents of a view's rendered `template` will be
|
39029
|
-
inserted at this location:
|
39030
|
-
|
39031
|
-
```javascript
|
39032
|
-
AViewWithLayout = Ember.View.extend({
|
39033
|
-
layout: Ember.HTMLBars.compile("<div class='my-decorative-class'>{{yield}}</div>"),
|
39034
|
-
template: Ember.HTMLBars.compile("I got wrapped")
|
39035
|
-
});
|
39036
|
-
```
|
39037
|
-
|
39038
|
-
Will result in view instances with an HTML representation of:
|
39039
|
-
|
39040
|
-
```html
|
39041
|
-
<div id="ember1" class="ember-view">
|
39042
|
-
<div class="my-decorative-class">
|
39043
|
-
I got wrapped
|
39044
|
-
</div>
|
39045
|
-
</div>
|
39046
|
-
```
|
39047
|
-
|
39048
|
-
See [Ember.Templates.helpers.yield](/api/classes/Ember.Templates.helpers.html#method_yield)
|
39049
|
-
for more information.
|
39050
|
-
|
39051
|
-
## Responding to Browser Events
|
39052
|
-
|
39053
|
-
Views can respond to user-initiated events in one of three ways: method
|
39054
|
-
implementation, through an event manager, and through `{{action}}` helper use
|
39055
|
-
in their template or layout.
|
39056
|
-
|
39057
|
-
### Method Implementation
|
39058
|
-
|
39059
|
-
Views can respond to user-initiated events by implementing a method that
|
39060
|
-
matches the event name. A `jQuery.Event` object will be passed as the
|
39061
|
-
argument to this method.
|
39062
|
-
|
39063
|
-
```javascript
|
39064
|
-
AView = Ember.View.extend({
|
39065
|
-
click: function(event) {
|
39066
|
-
// will be called when an instance's
|
39067
|
-
// rendered element is clicked
|
39068
|
-
}
|
39069
|
-
});
|
39070
|
-
```
|
39071
|
-
|
39072
|
-
### Event Managers
|
39073
|
-
|
39074
|
-
Views can define an object as their `eventManager` property. This object can
|
39075
|
-
then implement methods that match the desired event names. Matching events
|
39076
|
-
that occur on the view's rendered HTML or the rendered HTML of any of its DOM
|
39077
|
-
descendants will trigger this method. A `jQuery.Event` object will be passed
|
39078
|
-
as the first argument to the method and an `Ember.View` object as the
|
39079
|
-
second. The `Ember.View` will be the view whose rendered HTML was interacted
|
39080
|
-
with. This may be the view with the `eventManager` property or one of its
|
39081
|
-
descendant views.
|
39082
|
-
|
39083
|
-
```javascript
|
39084
|
-
AView = Ember.View.extend({
|
39085
|
-
eventManager: Ember.Object.create({
|
39086
|
-
doubleClick: function(event, view) {
|
39087
|
-
// will be called when an instance's
|
39088
|
-
// rendered element or any rendering
|
39089
|
-
// of this view's descendant
|
39090
|
-
// elements is clicked
|
39091
|
-
}
|
39092
|
-
})
|
39093
|
-
});
|
39094
|
-
```
|
39095
|
-
|
39096
|
-
An event defined for an event manager takes precedence over events of the
|
39097
|
-
same name handled through methods on the view.
|
39098
|
-
|
39099
|
-
```javascript
|
39100
|
-
AView = Ember.View.extend({
|
39101
|
-
mouseEnter: function(event) {
|
39102
|
-
// will never trigger.
|
39103
|
-
},
|
39104
|
-
eventManager: Ember.Object.create({
|
39105
|
-
mouseEnter: function(event, view) {
|
39106
|
-
// takes precedence over AView#mouseEnter
|
39107
|
-
}
|
39108
|
-
})
|
39109
|
-
});
|
39110
|
-
```
|
39111
|
-
|
39112
|
-
Similarly a view's event manager will take precedence for events of any views
|
39113
|
-
rendered as a descendant. A method name that matches an event name will not
|
39114
|
-
be called if the view instance was rendered inside the HTML representation of
|
39115
|
-
a view that has an `eventManager` property defined that handles events of the
|
39116
|
-
name. Events not handled by the event manager will still trigger method calls
|
39117
|
-
on the descendant.
|
39118
|
-
|
39119
|
-
```javascript
|
39120
|
-
var App = Ember.Application.create();
|
39121
|
-
App.OuterView = Ember.View.extend({
|
39122
|
-
template: Ember.HTMLBars.compile("outer {{#view 'inner'}}inner{{/view}} outer"),
|
39123
|
-
eventManager: Ember.Object.create({
|
39124
|
-
mouseEnter: function(event, view) {
|
39125
|
-
// view might be instance of either
|
39126
|
-
// OuterView or InnerView depending on
|
39127
|
-
// where on the page the user interaction occurred
|
39128
|
-
}
|
39129
|
-
})
|
39130
|
-
});
|
39131
|
-
|
39132
|
-
App.InnerView = Ember.View.extend({
|
39133
|
-
click: function(event) {
|
39134
|
-
// will be called if rendered inside
|
39135
|
-
// an OuterView because OuterView's
|
39136
|
-
// eventManager doesn't handle click events
|
39137
|
-
},
|
39138
|
-
mouseEnter: function(event) {
|
39139
|
-
// will never be called if rendered inside
|
39140
|
-
// an OuterView.
|
39141
|
-
}
|
39142
|
-
});
|
39143
|
-
```
|
39144
|
-
|
39145
|
-
### `{{action}}` Helper
|
39146
|
-
|
39147
|
-
See [Ember.Templates.helpers.action](/api/classes/Ember.Templates.helpers.html#method_action).
|
39148
|
-
|
39149
|
-
### Event Names
|
39150
|
-
|
39151
|
-
All of the event handling approaches described above respond to the same set
|
39152
|
-
of events. The names of the built-in events are listed below. (The hash of
|
39153
|
-
built-in events exists in `Ember.EventDispatcher`.) Additional, custom events
|
39154
|
-
can be registered by using `Ember.Application.customEvents`.
|
39155
|
-
|
39156
|
-
Touch events:
|
39157
|
-
|
39158
|
-
* `touchStart`
|
39159
|
-
* `touchMove`
|
39160
|
-
* `touchEnd`
|
39161
|
-
* `touchCancel`
|
39162
|
-
|
39163
|
-
Keyboard events
|
39164
|
-
|
39165
|
-
* `keyDown`
|
39166
|
-
* `keyUp`
|
39167
|
-
* `keyPress`
|
39168
|
-
|
39169
|
-
Mouse events
|
39170
|
-
|
39171
|
-
* `mouseDown`
|
39172
|
-
* `mouseUp`
|
39173
|
-
* `contextMenu`
|
39174
|
-
* `click`
|
39175
|
-
* `doubleClick`
|
39176
|
-
* `mouseMove`
|
39177
|
-
* `focusIn`
|
39178
|
-
* `focusOut`
|
39179
|
-
* `mouseEnter`
|
39180
|
-
* `mouseLeave`
|
39181
|
-
|
39182
|
-
Form events:
|
39183
|
-
|
39184
|
-
* `submit`
|
39185
|
-
* `change`
|
39186
|
-
* `focusIn`
|
39187
|
-
* `focusOut`
|
39188
|
-
* `input`
|
39189
|
-
|
39190
|
-
HTML5 drag and drop events:
|
39191
|
-
|
39192
|
-
* `dragStart`
|
39193
|
-
* `drag`
|
39194
|
-
* `dragEnter`
|
39195
|
-
* `dragLeave`
|
39196
|
-
* `dragOver`
|
39197
|
-
* `dragEnd`
|
39198
|
-
* `drop`
|
39199
|
-
|
39200
39236
|
@class View
|
39201
39237
|
@namespace Ember
|
39202
39238
|
@extends Ember.CoreView
|
@@ -39740,7 +39776,7 @@ enifed('ember/index', ['exports', 'require', 'ember-environment', 'ember-utils',
|
|
39740
39776
|
enifed("ember/version", ["exports"], function (exports) {
|
39741
39777
|
"use strict";
|
39742
39778
|
|
39743
|
-
exports.default = "2.11.0-beta.
|
39779
|
+
exports.default = "2.11.0-beta.8";
|
39744
39780
|
});
|
39745
39781
|
enifed('internal-test-helpers/apply-mixins', ['exports', 'ember-utils'], function (exports, _emberUtils) {
|
39746
39782
|
'use strict';
|
@@ -49916,9 +49952,11 @@ enifed('glimmer-runtime/lib/syntax/core', ['exports', 'glimmer-runtime/lib/synta
|
|
49916
49952
|
var keys = this.keys;
|
49917
49953
|
var values = this.values;
|
49918
49954
|
|
49919
|
-
|
49920
|
-
|
49921
|
-
|
49955
|
+
var compiledValues = new Array(values.length);
|
49956
|
+
for (var i = 0; i < compiledValues.length; i++) {
|
49957
|
+
compiledValues[i] = values[i].compile(compiler, env, symbolTable);
|
49958
|
+
}
|
49959
|
+
return new _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs(keys, compiledValues);
|
49922
49960
|
};
|
49923
49961
|
|
49924
49962
|
return NamedArgs;
|
@@ -50253,9 +50291,20 @@ enifed('glimmer-runtime/lib/upsert', ['exports', 'glimmer-runtime/lib/bounds'],
|
|
50253
50291
|
enifed('glimmer-runtime/lib/utils', ['exports', 'glimmer-util'], function (exports, _glimmerUtil) {
|
50254
50292
|
'use strict';
|
50255
50293
|
|
50256
|
-
var
|
50294
|
+
var HAS_NATIVE_WEAKMAP = (function () {
|
50295
|
+
// detect if `WeakMap` is even present
|
50296
|
+
var hasWeakMap = typeof WeakMap === 'function';
|
50297
|
+
if (!hasWeakMap) {
|
50298
|
+
return false;
|
50299
|
+
}
|
50300
|
+
var instance = new WeakMap();
|
50301
|
+
// use `Object`'s `.toString` directly to prevent us from detecting
|
50302
|
+
// polyfills as native weakmaps
|
50303
|
+
return Object.prototype.toString.call(instance) === '[object WeakMap]';
|
50304
|
+
})();
|
50305
|
+
var EMPTY_ARRAY = HAS_NATIVE_WEAKMAP ? Object.freeze([]) : [];
|
50257
50306
|
exports.EMPTY_ARRAY = EMPTY_ARRAY;
|
50258
|
-
var EMPTY_DICT = Object.freeze(_glimmerUtil.dict());
|
50307
|
+
var EMPTY_DICT = HAS_NATIVE_WEAKMAP ? Object.freeze(_glimmerUtil.dict()) : _glimmerUtil.dict();
|
50259
50308
|
exports.EMPTY_DICT = EMPTY_DICT;
|
50260
50309
|
|
50261
50310
|
var ListRange = (function () {
|