ember-source 2.11.0.beta.4 → 2.11.0.beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 () {
|