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.
@@ -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 () {