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.
@@ -1,12 +1,12 @@
1
1
  ;(function() {
2
2
  /*!
3
3
  * @overview Ember - JavaScript Application Framework
4
- * @copyright Copyright 2011-2016 Tilde Inc. and contributors
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.4
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
- ```handlebars
6211
- {{app-profile person=currentUser}}
6210
+ ```app/components/my-foo.hbs
6211
+ {{person-profile person=currentUser}}
6212
6212
  ```
6213
6213
 
6214
- ```handlebars
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
- {{#app-profile person=currentUser}}
6226
+ {{#person-profile person=currentUser}}
6228
6227
  <p>Admin mode</p>
6229
6228
  {{! Executed in the controller's context. }}
6230
- {{/app-profile}}
6229
+ {{/person-profile}}
6231
6230
  ```
6232
6231
 
6233
- ```handlebars
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. Note that `Component` needs to be appended to the name of
6244
- your subclass like `AppProfileComponent`.
6241
+ component.
6245
6242
 
6246
6243
  For example, you could implement the action
6247
- `hello` for the `app-profile` component:
6244
+ `hello` for the `person-profile` component:
6248
6245
 
6249
- ```javascript
6250
- App.AppProfileComponent = Ember.Component.extend({
6246
+ ```app/components/person-profile.js
6247
+ import Ember from 'ember';
6248
+
6249
+ export default Ember.Component.extend({
6251
6250
  actions: {
6252
- hello: function(name) {
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
- ```handlebars
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
- MyComponent.reopenClass({
6355
- positionalParams: ['name', 'age']
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: {{attrs.name}}, Age: {{attrs.age}}.
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
- MyComponent.reopenClass({
6371
- positionalParams: 'names'
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 attrs.names as |name|}}{{name}}{{/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
- @private
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/curly-component', ['exports', 'ember-utils', 'glimmer-runtime', 'ember-glimmer/utils/bindings', 'ember-glimmer/component', 'ember-metal', 'ember-views', 'ember-glimmer/utils/process-args', 'container'], function (exports, _emberUtils, _glimmerRuntime, _emberGlimmerUtilsBindings, _emberGlimmerComponent, _emberMetal, _emberViews, _emberGlimmerUtilsProcessArgs, _container) {
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
- function CurlyComponentManager() {}
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
- function MountManager() {}
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
- function OutletComponentManager() {}
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
- function AbstractRenderManager() {}
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 && key in cache) {
14804
- return cache[key];
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
- members.lastRenderedFrom = ownMap; // FIXME: not used in production, remove me from prod builds
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 ref = meta.readableLastRenderedFrom();
21220
- var parts = [];
21221
- var lastRef = ref[key];
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
- color.length(); // 3
32214
- colors.clear(); // []
32215
- colors.length(); // 0
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.optionsForType('connection', { singleton: false });
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 with an owner.
36706
- @return {Object} An owner object.
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.4";
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
- return new _glimmerRuntimeLibCompiledExpressionsArgs.CompiledNamedArgs(keys, values.map(function (value) {
49920
- return value.compile(compiler, env, symbolTable);
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 EMPTY_ARRAY = Object.freeze([]);
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 () {