ember-source 2.0.0.beta.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ember-source might be problematic. Click here for more details.

@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 2.0.0-beta.5
8
+ * @version 2.0.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 2.0.0-beta.5
8
+ * @version 2.0.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -3570,7 +3570,9 @@ enifed('ember-application/system/application-instance', ['exports', 'ember-metal
3570
3570
  */
3571
3571
  setupEventDispatcher: function () {
3572
3572
  var dispatcher = this.container.lookup('event_dispatcher:main');
3573
- dispatcher.setup(this.customEvents, this.rootElement);
3573
+ var applicationCustomEvents = _emberMetalProperty_get.get(this.application, 'customEvents');
3574
+
3575
+ dispatcher.setup(applicationCustomEvents, this.rootElement);
3574
3576
 
3575
3577
  return dispatcher;
3576
3578
  },
@@ -3855,7 +3857,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
3855
3857
  */
3856
3858
  buildInstance: function () {
3857
3859
  return _emberApplicationSystemApplicationInstance.default.create({
3858
- customEvents: _emberMetalProperty_get.get(this, 'customEvents'),
3860
+ application: this,
3859
3861
  rootElement: _emberMetalProperty_get.get(this, 'rootElement'),
3860
3862
  applicationRegistry: this.registry
3861
3863
  });
@@ -6229,7 +6231,6 @@ enifed('ember-htmlbars/env', ['exports', 'ember-metal', 'ember-metal/features',
6229
6231
  _emberHtmlbarsKeywords.registerKeyword('partial', _emberHtmlbarsKeywordsPartial.default);
6230
6232
  _emberHtmlbarsKeywords.registerKeyword('input', _emberHtmlbarsKeywordsInput.default);
6231
6233
  _emberHtmlbarsKeywords.registerKeyword('textarea', _emberHtmlbarsKeywordsTextarea.default);
6232
- _emberHtmlbarsKeywords.registerKeyword('collection', _emberHtmlbarsKeywordsCollection.default);
6233
6234
  _emberHtmlbarsKeywords.registerKeyword('legacy-yield', _emberHtmlbarsKeywordsLegacyYield.default);
6234
6235
  _emberHtmlbarsKeywords.registerKeyword('mut', _emberHtmlbarsKeywordsMut.default);
6235
6236
  _emberHtmlbarsKeywords.registerKeyword('@mut', _emberHtmlbarsKeywordsMut.privateMut);
@@ -6237,6 +6238,7 @@ enifed('ember-htmlbars/env', ['exports', 'ember-metal', 'ember-metal/features',
6237
6238
  _emberHtmlbarsKeywords.registerKeyword('readonly', _emberHtmlbarsKeywordsReadonly.default);
6238
6239
 
6239
6240
  if (_emberMetal.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
6241
+ _emberHtmlbarsKeywords.registerKeyword('collection', _emberHtmlbarsKeywordsCollection.default);
6240
6242
  _emberHtmlbarsKeywords.registerKeyword('view', _emberHtmlbarsKeywordsView.default);
6241
6243
  }
6242
6244
 
@@ -6606,8 +6608,38 @@ enifed('ember-htmlbars/helpers/-normalize-class', ['exports', 'ember-runtime/sys
6606
6608
  }
6607
6609
  });
6608
6610
  enifed('ember-htmlbars/helpers/each-in', ['exports', 'ember-metal/features', 'ember-views/streams/should_display'], function (exports, _emberMetalFeatures, _emberViewsStreamsShould_display) {
6611
+ /**
6612
+ @module ember
6613
+ @submodule ember-templates
6614
+ */
6615
+
6609
6616
  'use strict';
6610
6617
 
6618
+ /**
6619
+ The `{{each-in}}` helper loops over properties on an object. It is unbound,
6620
+ in that new (or removed) properties added to the target object will not be
6621
+ rendered.
6622
+ For example, given a `user` object that looks like:
6623
+ ```javascript
6624
+ {
6625
+ "name": "Shelly Sails",
6626
+ "age": 42
6627
+ }
6628
+ ```
6629
+ This template would display all properties on the `user`
6630
+ object in a list:
6631
+ ```handlebars
6632
+ <ul>
6633
+ {{#each-in user as |key value|}}
6634
+ <li>{{key}}: {{value}}</li>
6635
+ {{/each-in}}
6636
+ </ul>
6637
+ ```
6638
+ Outputting their name and age.
6639
+ @method each-in
6640
+ @for Ember.Templates.helpers
6641
+ @public
6642
+ */
6611
6643
  var eachInHelper = function (_ref, hash, blocks) {
6612
6644
  var object = _ref[0];
6613
6645
 
@@ -6625,6 +6657,11 @@ enifed('ember-htmlbars/helpers/each-in', ['exports', 'ember-metal/features', 'em
6625
6657
  exports.default = eachInHelper;
6626
6658
  });
6627
6659
  enifed('ember-htmlbars/helpers/each', ['exports', 'ember-views/streams/should_display', 'ember-htmlbars/utils/decode-each-key'], function (exports, _emberViewsStreamsShould_display, _emberHtmlbarsUtilsDecodeEachKey) {
6660
+ /**
6661
+ @module ember
6662
+ @submodule ember-templates
6663
+ */
6664
+
6628
6665
  'use strict';
6629
6666
 
6630
6667
  exports.default = eachHelper;
@@ -7738,11 +7775,135 @@ enifed('ember-htmlbars/keywords', ['exports', 'htmlbars-runtime'], function (exp
7738
7775
  enifed('ember-htmlbars/keywords/collection', ['exports', 'ember-views/streams/utils', 'ember-views/views/collection_view', 'ember-htmlbars/node-managers/view-node-manager', 'ember-metal/merge'], function (exports, _emberViewsStreamsUtils, _emberViewsViewsCollection_view, _emberHtmlbarsNodeManagersViewNodeManager, _emberMetalMerge) {
7739
7776
  /**
7740
7777
  @module ember
7741
- @submodule ember-htmlbars
7778
+ @submodule ember-templates
7742
7779
  */
7743
7780
 
7744
7781
  'use strict';
7745
7782
 
7783
+ /**
7784
+ `{{collection}}` is a template helper for adding instances of
7785
+ `Ember.CollectionView` to a template. See [Ember.CollectionView](/api/classes/Ember.CollectionView.html)
7786
+ for additional information on how a `CollectionView` functions.
7787
+
7788
+ `{{collection}}`'s primary use is as a block helper with a `contentBinding`
7789
+ option pointing towards an `Ember.Array`-compatible object. An `Ember.View`
7790
+ instance will be created for each item in its `content` property. Each view
7791
+ will have its own `content` property set to the appropriate item in the
7792
+ collection.
7793
+
7794
+ The provided block will be applied as the template for each item's view.
7795
+
7796
+ Given an empty `<body>` the following template:
7797
+
7798
+ ```handlebars
7799
+ {{! application.hbs }}
7800
+ {{#collection content=model}}
7801
+ Hi {{view.content.name}}
7802
+ {{/collection}}
7803
+ ```
7804
+
7805
+ And the following application code
7806
+
7807
+ ```javascript
7808
+ App = Ember.Application.create();
7809
+ App.ApplicationRoute = Ember.Route.extend({
7810
+ model: function() {
7811
+ return [{name: 'Yehuda'},{name: 'Tom'},{name: 'Peter'}];
7812
+ }
7813
+ });
7814
+ ```
7815
+
7816
+ The following HTML will result:
7817
+
7818
+ ```html
7819
+ <div class="ember-view">
7820
+ <div class="ember-view">Hi Yehuda</div>
7821
+ <div class="ember-view">Hi Tom</div>
7822
+ <div class="ember-view">Hi Peter</div>
7823
+ </div>
7824
+ ```
7825
+
7826
+ ### Non-block version of collection
7827
+
7828
+ If you provide an `itemViewClass` option that has its own `template` you may
7829
+ omit the block.
7830
+
7831
+ The following template:
7832
+
7833
+ ```handlebars
7834
+ {{! application.hbs }}
7835
+ {{collection content=model itemViewClass="an-item"}}
7836
+ ```
7837
+
7838
+ And application code
7839
+
7840
+ ```javascript
7841
+ App = Ember.Application.create();
7842
+ App.ApplicationRoute = Ember.Route.extend({
7843
+ model: function() {
7844
+ return [{name: 'Yehuda'},{name: 'Tom'},{name: 'Peter'}];
7845
+ }
7846
+ });
7847
+
7848
+ App.AnItemView = Ember.View.extend({
7849
+ template: Ember.Handlebars.compile("Greetings {{view.content.name}}")
7850
+ });
7851
+ ```
7852
+
7853
+ Will result in the HTML structure below
7854
+
7855
+ ```html
7856
+ <div class="ember-view">
7857
+ <div class="ember-view">Greetings Yehuda</div>
7858
+ <div class="ember-view">Greetings Tom</div>
7859
+ <div class="ember-view">Greetings Peter</div>
7860
+ </div>
7861
+ ```
7862
+
7863
+ ### Specifying a CollectionView subclass
7864
+
7865
+ By default the `{{collection}}` helper will create an instance of
7866
+ `Ember.CollectionView`. You can supply a `Ember.CollectionView` subclass to
7867
+ the helper by passing it as the first argument:
7868
+
7869
+ ```handlebars
7870
+ {{#collection "my-custom-collection" content=model}}
7871
+ Hi {{view.content.name}}
7872
+ {{/collection}}
7873
+ ```
7874
+
7875
+ This example would look for the class `App.MyCustomCollection`.
7876
+
7877
+ ### Forwarded `item.*`-named Options
7878
+
7879
+ As with the `{{view}}`, helper options passed to the `{{collection}}` will be
7880
+ set on the resulting `Ember.CollectionView` as properties. Additionally,
7881
+ options prefixed with `item` will be applied to the views rendered for each
7882
+ item (note the camelcasing):
7883
+
7884
+ ```handlebars
7885
+ {{#collection content=model
7886
+ itemTagName="p"
7887
+ itemClassNames="greeting"}}
7888
+ Howdy {{view.content.name}}
7889
+ {{/collection}}
7890
+ ```
7891
+
7892
+ Will result in the following HTML structure:
7893
+
7894
+ ```html
7895
+ <div class="ember-view">
7896
+ <p class="ember-view greeting">Howdy Yehuda</p>
7897
+ <p class="ember-view greeting">Howdy Tom</p>
7898
+ <p class="ember-view greeting">Howdy Peter</p>
7899
+ </div>
7900
+ ```
7901
+
7902
+ @method collection
7903
+ @for Ember.Templates.helpers
7904
+ @deprecated Use `{{each}}` helper instead.
7905
+ @public
7906
+ */
7746
7907
  exports.default = {
7747
7908
  setupState: function (state, env, scope, params, hash) {
7748
7909
  var read = env.hooks.getValue;
@@ -8148,8 +8309,158 @@ enifed('ember-htmlbars/keywords/get', ['exports', 'ember-metal/core', 'ember-met
8148
8309
  exports.default = getKeyword;
8149
8310
  });
8150
8311
  enifed('ember-htmlbars/keywords/input', ['exports', 'ember-metal/core', 'ember-metal/merge'], function (exports, _emberMetalCore, _emberMetalMerge) {
8312
+ /**
8313
+ @module ember
8314
+ @submodule ember-templates
8315
+ */
8151
8316
  'use strict';
8152
8317
 
8318
+ /**
8319
+ The `{{input}}` helper lets you create an HTML `<input />` component.
8320
+ It causes an `Ember.TextField` component to be rendered. For more info,
8321
+ see the [Ember.TextField](/api/classes/Ember.TextField.html) docs and
8322
+ the [templates guide](http://emberjs.com/guides/templates/input-helpers/).
8323
+
8324
+ ```handlebars
8325
+ {{input value="987"}}
8326
+ ```
8327
+
8328
+ renders as:
8329
+
8330
+ ```HTML
8331
+ <input type="text" value="987" />
8332
+ ```
8333
+
8334
+ ### Text field
8335
+
8336
+ If no `type` option is specified, a default of type 'text' is used.
8337
+
8338
+ Many of the standard HTML attributes may be passed to this helper.
8339
+
8340
+ <table>
8341
+ <tr><td>`readonly`</td><td>`required`</td><td>`autofocus`</td></tr>
8342
+ <tr><td>`value`</td><td>`placeholder`</td><td>`disabled`</td></tr>
8343
+ <tr><td>`size`</td><td>`tabindex`</td><td>`maxlength`</td></tr>
8344
+ <tr><td>`name`</td><td>`min`</td><td>`max`</td></tr>
8345
+ <tr><td>`pattern`</td><td>`accept`</td><td>`autocomplete`</td></tr>
8346
+ <tr><td>`autosave`</td><td>`formaction`</td><td>`formenctype`</td></tr>
8347
+ <tr><td>`formmethod`</td><td>`formnovalidate`</td><td>`formtarget`</td></tr>
8348
+ <tr><td>`height`</td><td>`inputmode`</td><td>`multiple`</td></tr>
8349
+ <tr><td>`step`</td><td>`width`</td><td>`form`</td></tr>
8350
+ <tr><td>`selectionDirection`</td><td>`spellcheck`</td><td>&nbsp;</td></tr>
8351
+ </table>
8352
+
8353
+
8354
+ When set to a quoted string, these values will be directly applied to the HTML
8355
+ element. When left unquoted, these values will be bound to a property on the
8356
+ template's current rendering context (most typically a controller instance).
8357
+
8358
+
8359
+ A very common use of this helper is to bind the `value` of an input to an Object's attribute:
8360
+
8361
+ ```handlebars
8362
+ Search:
8363
+ {{input value=searchWord}}
8364
+ ```
8365
+
8366
+ In this example, the inital value in the `<input />` will be set to the value of `searchWord`.
8367
+ If the user changes the text, the value of `searchWord` will also be updated.
8368
+
8369
+ ### Actions
8370
+ The helper can send multiple actions based on user events.
8371
+ The action property defines the action which is sent when
8372
+ the user presses the return key.
8373
+
8374
+ ```handlebars
8375
+ {{input action="submit"}}
8376
+ ```
8377
+
8378
+ The helper allows some user events to send actions.
8379
+
8380
+ * `enter`
8381
+ * `insert-newline`
8382
+ * `escape-press`
8383
+ * `focus-in`
8384
+ * `focus-out`
8385
+ * `key-press`
8386
+ * `key-up`
8387
+
8388
+
8389
+ For example, if you desire an action to be sent when the input is blurred,
8390
+ you only need to setup the action name to the event name property.
8391
+
8392
+ ```handlebars
8393
+ {{input focus-in="alertMessage"}}
8394
+ ```
8395
+
8396
+ See more about [Text Support Actions](/api/classes/Ember.TextField.html)
8397
+
8398
+
8399
+ ### Extending `Ember.TextField`
8400
+
8401
+ Internally, `{{input type="text"}}` creates an instance of `Ember.TextField`, passing
8402
+ arguments from the helper to `Ember.TextField`'s `create` method. You can extend the
8403
+ capabilities of text inputs in your applications by reopening this class. For example,
8404
+ if you are building a Bootstrap project where `data-*` attributes are used, you
8405
+ can add one to the `TextField`'s `attributeBindings` property:
8406
+
8407
+
8408
+ ```javascript
8409
+ Ember.TextField.reopen({
8410
+ attributeBindings: ['data-error']
8411
+ });
8412
+ ```
8413
+
8414
+ Keep in mind when writing `Ember.TextField` subclasses that `Ember.TextField`
8415
+ itself extends `Ember.Component`. Expect isolated component semantics, not
8416
+ legacy 1.x view semantics (like `controller` being present).
8417
+
8418
+ See more about [Ember components](/api/classes/Ember.Component.html)
8419
+
8420
+
8421
+ ### Checkbox
8422
+
8423
+ Checkboxes are special forms of the `{{input}}` helper. To create a `<checkbox />`:
8424
+
8425
+ ```handlebars
8426
+ Emberize Everything:
8427
+ {{input type="checkbox" name="isEmberized" checked=isEmberized}}
8428
+ ```
8429
+
8430
+ This will bind checked state of this checkbox to the value of `isEmberized` -- if either one changes,
8431
+ it will be reflected in the other.
8432
+
8433
+
8434
+ The following HTML attributes can be set via the helper:
8435
+
8436
+ * `checked`
8437
+ * `disabled`
8438
+ * `tabindex`
8439
+ * `indeterminate`
8440
+ * `name`
8441
+ * `autofocus`
8442
+ * `form`
8443
+
8444
+
8445
+ ### Extending `Ember.Checkbox`
8446
+
8447
+ Internally, `{{input type="checkbox"}}` creates an instance of `Ember.Checkbox`, passing
8448
+ arguments from the helper to `Ember.Checkbox`'s `create` method. You can extend the
8449
+ capablilties of checkbox inputs in your applications by reopening this class. For example,
8450
+ if you wanted to add a css class to all checkboxes in your application:
8451
+
8452
+ ```javascript
8453
+ Ember.Checkbox.reopen({
8454
+ classNames: ['my-app-checkbox']
8455
+ });
8456
+ ```
8457
+
8458
+
8459
+ @method input
8460
+ @for Ember.Templates.helpers
8461
+ @param {Hash} options
8462
+ @public
8463
+ */
8153
8464
  exports.default = {
8154
8465
  setupState: function (lastState, env, scope, params, hash) {
8155
8466
  var type = env.hooks.getValue(hash.type);
@@ -8219,7 +8530,7 @@ enifed('ember-htmlbars/keywords/mut', ['exports', 'ember-metal/core', 'ember-met
8219
8530
  exports.MUTABLE_REFERENCE = MUTABLE_REFERENCE;
8220
8531
  /**
8221
8532
  The `mut` helper lets you __clearly specify__ that a child `Component` can update the
8222
- (mutable) value passed to it, which will __change the value of the parent compnent__.
8533
+ (mutable) value passed to it, which will __change the value of the parent component__.
8223
8534
 
8224
8535
  This is very helpful for passing mutable values to a `Component` of any size, but
8225
8536
  critical to understanding the logic of a large/complex `Component`.
@@ -8336,7 +8647,7 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/core', 'ember-
8336
8647
 
8337
8648
  'use strict';
8338
8649
 
8339
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.0.0-beta.5';
8650
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.0.0';
8340
8651
 
8341
8652
  /**
8342
8653
  The `{{outlet}}` helper lets you specify where a child routes will render in
@@ -8498,11 +8809,52 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/core', 'ember-
8498
8809
  enifed('ember-htmlbars/keywords/partial', ['exports', 'ember-views/system/lookup_partial', 'htmlbars-runtime'], function (exports, _emberViewsSystemLookup_partial, _htmlbarsRuntime) {
8499
8810
  /**
8500
8811
  @module ember
8501
- @submodule ember-htmlbars
8812
+ @submodule ember-templates
8502
8813
  */
8503
8814
 
8504
8815
  'use strict';
8505
8816
 
8817
+ /**
8818
+ The `partial` helper renders another template without
8819
+ changing the template context:
8820
+
8821
+ ```handlebars
8822
+ {{foo}}
8823
+ {{partial "nav"}}
8824
+ ```
8825
+
8826
+ The above example template will render a template named
8827
+ "_nav", which has the same context as the parent template
8828
+ it's rendered into, so if the "_nav" template also referenced
8829
+ `{{foo}}`, it would print the same thing as the `{{foo}}`
8830
+ in the above example.
8831
+
8832
+ If a "_nav" template isn't found, the `partial` helper will
8833
+ fall back to a template named "nav".
8834
+
8835
+ ### Bound template names
8836
+
8837
+ The parameter supplied to `partial` can also be a path
8838
+ to a property containing a template name, e.g.:
8839
+
8840
+ ```handlebars
8841
+ {{partial someTemplateName}}
8842
+ ```
8843
+
8844
+ The above example will look up the value of `someTemplateName`
8845
+ on the template context (e.g. a controller) and use that
8846
+ value as the name of the template to render. If the resolved
8847
+ value is falsy, nothing will be rendered. If `someTemplateName`
8848
+ changes, the partial will be re-rendered using the new template
8849
+ name.
8850
+
8851
+
8852
+ @method partial
8853
+ @for Ember.Templates.helpers
8854
+ @param {String} partialName the name of the template to render minus the leading underscore
8855
+ @public
8856
+ */
8857
+
8506
8858
  exports.default = {
8507
8859
  setupState: function (state, env, scope, params, hash) {
8508
8860
  return { partialName: env.hooks.getValue(params[0]) };
@@ -8525,6 +8877,11 @@ enifed('ember-htmlbars/keywords/partial', ['exports', 'ember-views/system/lookup
8525
8877
  };
8526
8878
  });
8527
8879
  enifed('ember-htmlbars/keywords/readonly', ['exports', 'ember-htmlbars/keywords/mut'], function (exports, _emberHtmlbarsKeywordsMut) {
8880
+ /**
8881
+ @module ember
8882
+ @submodule ember-templates
8883
+ */
8884
+
8528
8885
  'use strict';
8529
8886
 
8530
8887
  exports.default = readonly;
@@ -8545,9 +8902,195 @@ enifed('ember-htmlbars/keywords/readonly', ['exports', 'ember-htmlbars/keywords/
8545
8902
  enifed('ember-htmlbars/keywords/textarea', ['exports'], function (exports) {
8546
8903
  /**
8547
8904
  @module ember
8548
- @submodule ember-htmlbars
8905
+ @submodule ember-templates
8549
8906
  */
8550
8907
 
8908
+ /**
8909
+ `{{textarea}}` inserts a new instance of `<textarea>` tag into the template.
8910
+ The attributes of `{{textarea}}` match those of the native HTML tags as
8911
+ closely as possible.
8912
+
8913
+ The following HTML attributes can be set:
8914
+
8915
+ * `value`
8916
+ * `name`
8917
+ * `rows`
8918
+ * `cols`
8919
+ * `placeholder`
8920
+ * `disabled`
8921
+ * `maxlength`
8922
+ * `tabindex`
8923
+ * `selectionEnd`
8924
+ * `selectionStart`
8925
+ * `selectionDirection`
8926
+ * `wrap`
8927
+ * `readonly`
8928
+ * `autofocus`
8929
+ * `form`
8930
+ * `spellcheck`
8931
+ * `required`
8932
+
8933
+ When set to a quoted string, these value will be directly applied to the HTML
8934
+ element. When left unquoted, these values will be bound to a property on the
8935
+ template's current rendering context (most typically a controller instance).
8936
+
8937
+ Unbound:
8938
+
8939
+ ```handlebars
8940
+ {{textarea value="Lots of static text that ISN'T bound"}}
8941
+ ```
8942
+
8943
+ Would result in the following HTML:
8944
+
8945
+ ```html
8946
+ <textarea class="ember-text-area">
8947
+ Lots of static text that ISN'T bound
8948
+ </textarea>
8949
+ ```
8950
+
8951
+ Bound:
8952
+
8953
+ In the following example, the `writtenWords` property on `App.ApplicationController`
8954
+ will be updated live as the user types 'Lots of text that IS bound' into
8955
+ the text area of their browser's window.
8956
+
8957
+ ```javascript
8958
+ App.ApplicationController = Ember.Controller.extend({
8959
+ writtenWords: "Lots of text that IS bound"
8960
+ });
8961
+ ```
8962
+
8963
+ ```handlebars
8964
+ {{textarea value=writtenWords}}
8965
+ ```
8966
+
8967
+ Would result in the following HTML:
8968
+
8969
+ ```html
8970
+ <textarea class="ember-text-area">
8971
+ Lots of text that IS bound
8972
+ </textarea>
8973
+ ```
8974
+
8975
+ If you wanted a one way binding between the text area and a div tag
8976
+ somewhere else on your screen, you could use `Ember.computed.oneWay`:
8977
+
8978
+ ```javascript
8979
+ App.ApplicationController = Ember.Controller.extend({
8980
+ writtenWords: "Lots of text that IS bound",
8981
+ outputWrittenWords: Ember.computed.oneWay("writtenWords")
8982
+ });
8983
+ ```
8984
+
8985
+ ```handlebars
8986
+ {{textarea value=writtenWords}}
8987
+
8988
+ <div>
8989
+ {{outputWrittenWords}}
8990
+ </div>
8991
+ ```
8992
+
8993
+ Would result in the following HTML:
8994
+
8995
+ ```html
8996
+ <textarea class="ember-text-area">
8997
+ Lots of text that IS bound
8998
+ </textarea>
8999
+
9000
+ <-- the following div will be updated in real time as you type -->
9001
+
9002
+ <div>
9003
+ Lots of text that IS bound
9004
+ </div>
9005
+ ```
9006
+
9007
+ Finally, this example really shows the power and ease of Ember when two
9008
+ properties are bound to eachother via `Ember.computed.alias`. Type into
9009
+ either text area box and they'll both stay in sync. Note that
9010
+ `Ember.computed.alias` costs more in terms of performance, so only use it when
9011
+ your really binding in both directions:
9012
+
9013
+ ```javascript
9014
+ App.ApplicationController = Ember.Controller.extend({
9015
+ writtenWords: "Lots of text that IS bound",
9016
+ twoWayWrittenWords: Ember.computed.alias("writtenWords")
9017
+ });
9018
+ ```
9019
+
9020
+ ```handlebars
9021
+ {{textarea value=writtenWords}}
9022
+ {{textarea value=twoWayWrittenWords}}
9023
+ ```
9024
+
9025
+ ```html
9026
+ <textarea id="ember1" class="ember-text-area">
9027
+ Lots of text that IS bound
9028
+ </textarea>
9029
+
9030
+ <-- both updated in real time -->
9031
+
9032
+ <textarea id="ember2" class="ember-text-area">
9033
+ Lots of text that IS bound
9034
+ </textarea>
9035
+ ```
9036
+
9037
+ ### Actions
9038
+
9039
+ The helper can send multiple actions based on user events.
9040
+
9041
+ The action property defines the action which is send when
9042
+ the user presses the return key.
9043
+
9044
+ ```handlebars
9045
+ {{input action="submit"}}
9046
+ ```
9047
+
9048
+ The helper allows some user events to send actions.
9049
+
9050
+ * `enter`
9051
+ * `insert-newline`
9052
+ * `escape-press`
9053
+ * `focus-in`
9054
+ * `focus-out`
9055
+ * `key-press`
9056
+
9057
+ For example, if you desire an action to be sent when the input is blurred,
9058
+ you only need to setup the action name to the event name property.
9059
+
9060
+ ```handlebars
9061
+ {{textarea focus-in="alertMessage"}}
9062
+ ```
9063
+
9064
+ See more about [Text Support Actions](/api/classes/Ember.TextArea.html)
9065
+
9066
+ ### Extension
9067
+
9068
+ Internally, `{{textarea}}` creates an instance of `Ember.TextArea`, passing
9069
+ arguments from the helper to `Ember.TextArea`'s `create` method. You can
9070
+ extend the capabilities of text areas in your application by reopening this
9071
+ class. For example, if you are building a Bootstrap project where `data-*`
9072
+ attributes are used, you can globally add support for a `data-*` attribute
9073
+ on all `{{textarea}}`s' in your app by reopening `Ember.TextArea` or
9074
+ `Ember.TextSupport` and adding it to the `attributeBindings` concatenated
9075
+ property:
9076
+
9077
+ ```javascript
9078
+ Ember.TextArea.reopen({
9079
+ attributeBindings: ['data-error']
9080
+ });
9081
+ ```
9082
+
9083
+ Keep in mind when writing `Ember.TextArea` subclasses that `Ember.TextArea`
9084
+ itself extends `Ember.Component`. Expect isolated component semantics, not
9085
+ legacy 1.x view semantics (like `controller` being present).
9086
+
9087
+ See more about [Ember components](/api/classes/Ember.Component.html)
9088
+
9089
+ @method textarea
9090
+ @for Ember.Templates.helpers
9091
+ @param {Hash} options
9092
+ @public
9093
+ */
8551
9094
  'use strict';
8552
9095
 
8553
9096
  exports.default = textarea;
@@ -8635,11 +9178,189 @@ enifed('ember-htmlbars/keywords/unbound', ['exports', 'ember-metal/core', 'ember
8635
9178
  enifed('ember-htmlbars/keywords/view', ['exports', 'ember-views/streams/utils', 'ember-views/views/view', 'ember-htmlbars/node-managers/view-node-manager'], function (exports, _emberViewsStreamsUtils, _emberViewsViewsView, _emberHtmlbarsNodeManagersViewNodeManager) {
8636
9179
  /**
8637
9180
  @module ember
8638
- @submodule ember-htmlbars
9181
+ @submodule ember-templates
8639
9182
  */
8640
9183
 
8641
9184
  'use strict';
8642
9185
 
9186
+ /**
9187
+ `{{view}}` inserts a new instance of an `Ember.View` into a template passing its
9188
+ options to the `Ember.View`'s `create` method and using the supplied block as
9189
+ the view's own template.
9190
+
9191
+ An empty `<body>` and the following template:
9192
+
9193
+ ```handlebars
9194
+ A span:
9195
+ {{#view tagName="span"}}
9196
+ hello.
9197
+ {{/view}}
9198
+ ```
9199
+
9200
+ Will result in HTML structure:
9201
+
9202
+ ```html
9203
+ <body>
9204
+ <!-- Note: the handlebars template script
9205
+ also results in a rendered Ember.View
9206
+ which is the outer <div> here -->
9207
+
9208
+ <div class="ember-view">
9209
+ A span:
9210
+ <span id="ember1" class="ember-view">
9211
+ Hello.
9212
+ </span>
9213
+ </div>
9214
+ </body>
9215
+ ```
9216
+
9217
+ ### `parentView` setting
9218
+
9219
+ The `parentView` property of the new `Ember.View` instance created through
9220
+ `{{view}}` will be set to the `Ember.View` instance of the template where
9221
+ `{{view}}` was called.
9222
+
9223
+ ```javascript
9224
+ aView = Ember.View.create({
9225
+ template: Ember.Handlebars.compile("{{#view}} my parent: {{parentView.elementId}} {{/view}}")
9226
+ });
9227
+
9228
+ aView.appendTo('body');
9229
+ ```
9230
+
9231
+ Will result in HTML structure:
9232
+
9233
+ ```html
9234
+ <div id="ember1" class="ember-view">
9235
+ <div id="ember2" class="ember-view">
9236
+ my parent: ember1
9237
+ </div>
9238
+ </div>
9239
+ ```
9240
+
9241
+ ### Setting CSS id and class attributes
9242
+
9243
+ The HTML `id` attribute can be set on the `{{view}}`'s resulting element with
9244
+ the `id` option. This option will _not_ be passed to `Ember.View.create`.
9245
+
9246
+ ```handlebars
9247
+ {{#view tagName="span" id="a-custom-id"}}
9248
+ hello.
9249
+ {{/view}}
9250
+ ```
9251
+
9252
+ Results in the following HTML structure:
9253
+
9254
+ ```html
9255
+ <div class="ember-view">
9256
+ <span id="a-custom-id" class="ember-view">
9257
+ hello.
9258
+ </span>
9259
+ </div>
9260
+ ```
9261
+
9262
+ The HTML `class` attribute can be set on the `{{view}}`'s resulting element
9263
+ with the `class` or `classNameBindings` options. The `class` option will
9264
+ directly set the CSS `class` attribute and will not be passed to
9265
+ `Ember.View.create`. `classNameBindings` will be passed to `create` and use
9266
+ `Ember.View`'s class name binding functionality:
9267
+
9268
+ ```handlebars
9269
+ {{#view tagName="span" class="a-custom-class"}}
9270
+ hello.
9271
+ {{/view}}
9272
+ ```
9273
+
9274
+ Results in the following HTML structure:
9275
+
9276
+ ```html
9277
+ <div class="ember-view">
9278
+ <span id="ember2" class="ember-view a-custom-class">
9279
+ hello.
9280
+ </span>
9281
+ </div>
9282
+ ```
9283
+
9284
+ ### Supplying a different view class
9285
+
9286
+ `{{view}}` can take an optional first argument before its supplied options to
9287
+ specify a path to a custom view class.
9288
+
9289
+ ```handlebars
9290
+ {{#view "custom"}}{{! will look up App.CustomView }}
9291
+ hello.
9292
+ {{/view}}
9293
+ ```
9294
+
9295
+ The first argument can also be a relative path accessible from the current
9296
+ context.
9297
+
9298
+ ```javascript
9299
+ MyApp = Ember.Application.create({});
9300
+ MyApp.OuterView = Ember.View.extend({
9301
+ innerViewClass: Ember.View.extend({
9302
+ classNames: ['a-custom-view-class-as-property']
9303
+ }),
9304
+ template: Ember.Handlebars.compile('{{#view view.innerViewClass}} hi {{/view}}')
9305
+ });
9306
+
9307
+ MyApp.OuterView.create().appendTo('body');
9308
+ ```
9309
+
9310
+ Will result in the following HTML:
9311
+
9312
+ ```html
9313
+ <div id="ember1" class="ember-view">
9314
+ <div id="ember2" class="ember-view a-custom-view-class-as-property">
9315
+ hi
9316
+ </div>
9317
+ </div>
9318
+ ```
9319
+
9320
+ ### Blockless use
9321
+
9322
+ If you supply a custom `Ember.View` subclass that specifies its own template
9323
+ or provide a `templateName` option to `{{view}}` it can be used without
9324
+ supplying a block. Attempts to use both a `templateName` option and supply a
9325
+ block will throw an error.
9326
+
9327
+ ```javascript
9328
+ var App = Ember.Application.create();
9329
+ App.WithTemplateDefinedView = Ember.View.extend({
9330
+ templateName: 'defined-template'
9331
+ });
9332
+ ```
9333
+
9334
+ ```handlebars
9335
+ {{! application.hbs }}
9336
+ {{view 'with-template-defined'}}
9337
+ ```
9338
+
9339
+ ```handlebars
9340
+ {{! defined-template.hbs }}
9341
+ Some content for the defined template view.
9342
+ ```
9343
+
9344
+ ### `viewName` property
9345
+
9346
+ You can supply a `viewName` option to `{{view}}`. The `Ember.View` instance
9347
+ will be referenced as a property of its parent view by this name.
9348
+
9349
+ ```javascript
9350
+ aView = Ember.View.create({
9351
+ template: Ember.Handlebars.compile('{{#view viewName="aChildByName"}} hi {{/view}}')
9352
+ });
9353
+
9354
+ aView.appendTo('body');
9355
+ aView.get('aChildByName') // the instance of Ember.View created by {{view}} helper
9356
+ ```
9357
+
9358
+ @method view
9359
+ @for Ember.Templates.helpers
9360
+ @public
9361
+ @deprecated
9362
+ */
9363
+
8643
9364
  exports.default = {
8644
9365
  setupState: function (state, env, scope, params, hash) {
8645
9366
  var read = env.hooks.getValue;
@@ -8744,6 +9465,11 @@ enifed('ember-htmlbars/keywords/view', ['exports', 'ember-views/streams/utils',
8744
9465
  }
8745
9466
  });
8746
9467
  enifed('ember-htmlbars/keywords/with', ['exports', 'ember-metal/core', 'htmlbars-runtime'], function (exports, _emberMetalCore, _htmlbarsRuntime) {
9468
+ /**
9469
+ @module ember
9470
+ @submodule ember-templates
9471
+ */
9472
+
8747
9473
  'use strict';
8748
9474
 
8749
9475
  exports.default = {
@@ -12109,7 +12835,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper
12109
12835
  }
12110
12836
 
12111
12837
  function isVolatile(obj) {
12112
- return !(isObject(obj) && obj.isDescriptor && obj._cacheable);
12838
+ return !(isObject(obj) && obj.isDescriptor && !obj._volatile);
12113
12839
  }
12114
12840
 
12115
12841
  function Chains() {}
@@ -12628,7 +13354,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12628
13354
  this._dependentKeys = undefined;
12629
13355
  this._suspended = undefined;
12630
13356
  this._meta = undefined;
12631
- this._cacheable = true;
13357
+ this._volatile = false;
12632
13358
  this._dependentKeys = opts && opts.dependentKeys;
12633
13359
  this._readOnly = false;
12634
13360
  }
@@ -12641,6 +13367,12 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12641
13367
  Call on a computed property to set it into non-cached mode. When in this
12642
13368
  mode the computed property will not automatically cache the return value.
12643
13369
 
13370
+ It also does not automatically fire any change events. You must manually notify
13371
+ any changes if you want to observe this property.
13372
+
13373
+ Dependency keys have no effect on volatile properties as they are for cache
13374
+ invalidation and notification when cached value is invalidated.
13375
+
12644
13376
  ```javascript
12645
13377
  var outsideService = Ember.Object.extend({
12646
13378
  value: function() {
@@ -12655,7 +13387,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12655
13387
  @public
12656
13388
  */
12657
13389
  ComputedPropertyPrototype.volatile = function () {
12658
- this._cacheable = false;
13390
+ this._volatile = true;
12659
13391
  return this;
12660
13392
  };
12661
13393
 
@@ -12766,16 +13498,24 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12766
13498
  }
12767
13499
  };
12768
13500
 
12769
- /* impl descriptor API */
13501
+ // invalidate cache when CP key changes
12770
13502
  ComputedPropertyPrototype.didChange = function (obj, keyName) {
12771
13503
  // _suspended is set via a CP.set to ensure we don't clear
12772
13504
  // the cached value set by the setter
12773
- if (this._cacheable && this._suspended !== obj) {
12774
- var meta = metaFor(obj);
12775
- if (meta.cache && meta.cache[keyName] !== undefined) {
12776
- meta.cache[keyName] = undefined;
12777
- _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
12778
- }
13505
+ if (this._volatile || this._suspended === obj) {
13506
+ return;
13507
+ }
13508
+
13509
+ // don't create objects just to invalidate
13510
+ var meta = obj.__ember_meta__;
13511
+ if (!meta || meta.source !== obj) {
13512
+ return;
13513
+ }
13514
+
13515
+ var cache = meta.cache;
13516
+ if (cache && cache[keyName] !== undefined) {
13517
+ cache[keyName] = undefined;
13518
+ _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
12779
13519
  }
12780
13520
  };
12781
13521
 
@@ -12807,37 +13547,36 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12807
13547
  @public
12808
13548
  */
12809
13549
  ComputedPropertyPrototype.get = function (obj, keyName) {
12810
- var ret, cache, meta;
12811
- if (this._cacheable) {
12812
- meta = metaFor(obj);
12813
- cache = meta.cache;
12814
-
12815
- var result = cache && cache[keyName];
13550
+ if (this._volatile) {
13551
+ return this._getter.call(obj, keyName);
13552
+ }
12816
13553
 
12817
- if (result === UNDEFINED) {
12818
- return undefined;
12819
- } else if (result !== undefined) {
12820
- return result;
12821
- }
13554
+ var meta = metaFor(obj);
13555
+ var cache = meta.cache;
13556
+ if (!cache) {
13557
+ cache = meta.cache = {};
13558
+ }
12822
13559
 
12823
- ret = this._getter.call(obj, keyName);
12824
- cache = meta.cache;
12825
- if (!cache) {
12826
- cache = meta.cache = {};
12827
- }
12828
- if (ret === undefined) {
12829
- cache[keyName] = UNDEFINED;
12830
- } else {
12831
- cache[keyName] = ret;
12832
- }
13560
+ var result = cache[keyName];
13561
+ if (result === UNDEFINED) {
13562
+ return undefined;
13563
+ } else if (result !== undefined) {
13564
+ return result;
13565
+ }
12833
13566
 
12834
- if (meta.chainWatchers) {
12835
- meta.chainWatchers.revalidate(keyName);
12836
- }
12837
- _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
13567
+ var ret = this._getter.call(obj, keyName);
13568
+ if (ret === undefined) {
13569
+ cache[keyName] = UNDEFINED;
12838
13570
  } else {
12839
- ret = this._getter.call(obj, keyName);
13571
+ cache[keyName] = ret;
12840
13572
  }
13573
+
13574
+ var chainWatchers = meta.chainWatchers;
13575
+ if (chainWatchers) {
13576
+ chainWatchers.revalidate(keyName);
13577
+ }
13578
+ _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
13579
+
12841
13580
  return ret;
12842
13581
  };
12843
13582
 
@@ -12890,51 +13629,72 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12890
13629
  @return {Object} The return value of the function backing the CP.
12891
13630
  @public
12892
13631
  */
12893
- ComputedPropertyPrototype.set = function computedPropertySetWithSuspend(obj, keyName, value) {
12894
- var oldSuspended = this._suspended;
13632
+ ComputedPropertyPrototype.set = function computedPropertySetEntry(obj, keyName, value) {
13633
+ if (this._readOnly) {
13634
+ this._throwReadOnlyError(obj, keyName);
13635
+ }
12895
13636
 
12896
- this._suspended = obj;
13637
+ if (!this._setter) {
13638
+ return this.clobberSet(obj, keyName, value);
13639
+ }
13640
+
13641
+ if (this._volatile) {
13642
+ return this.volatileSet(obj, keyName, value);
13643
+ }
13644
+
13645
+ return this.setWithSuspend(obj, keyName, value);
13646
+ };
13647
+
13648
+ ComputedPropertyPrototype._throwReadOnlyError = function computedPropertyThrowReadOnlyError(obj, keyName) {
13649
+ throw new _emberMetalError.default('Cannot set read-only property "' + keyName + '" on object: ' + _emberMetalUtils.inspect(obj));
13650
+ };
13651
+
13652
+ ComputedPropertyPrototype.clobberSet = function computedPropertyClobberSet(obj, keyName, value) {
13653
+ var cachedValue = cacheFor(obj, keyName);
13654
+ _emberMetalProperties.defineProperty(obj, keyName, null, cachedValue);
13655
+ _emberMetalProperty_set.set(obj, keyName, value);
13656
+ return value;
13657
+ };
13658
+
13659
+ ComputedPropertyPrototype.volatileSet = function computedPropertyVolatileSet(obj, keyName, value) {
13660
+ return this._setter.call(obj, keyName, value);
13661
+ };
12897
13662
 
13663
+ ComputedPropertyPrototype.setWithSuspend = function computedPropertySetWithSuspend(obj, keyName, value) {
13664
+ var oldSuspended = this._suspended;
13665
+ this._suspended = obj;
12898
13666
  try {
12899
- this._set(obj, keyName, value);
13667
+ return this._set(obj, keyName, value);
12900
13668
  } finally {
12901
13669
  this._suspended = oldSuspended;
12902
13670
  }
12903
13671
  };
12904
13672
 
12905
13673
  ComputedPropertyPrototype._set = function computedPropertySet(obj, keyName, value) {
12906
- var cacheable = this._cacheable;
12907
- var setter = this._setter;
12908
- var meta = metaFor(obj, cacheable);
13674
+ // cache requires own meta
13675
+ var meta = metaFor(obj);
13676
+ // either there is a writable cache or we need one to update
12909
13677
  var cache = meta.cache;
12910
- var hadCachedValue = false;
12911
-
12912
- var cachedValue, ret;
12913
-
12914
- if (this._readOnly) {
12915
- throw new _emberMetalError.default('Cannot set read-only property "' + keyName + '" on object: ' + _emberMetalUtils.inspect(obj));
13678
+ if (!cache) {
13679
+ cache = meta.cache = {};
12916
13680
  }
12917
-
12918
- if (cacheable && cache && cache[keyName] !== undefined) {
13681
+ var hadCachedValue = false;
13682
+ var cachedValue = undefined;
13683
+ if (cache[keyName] !== undefined) {
12919
13684
  if (cache[keyName] !== UNDEFINED) {
12920
13685
  cachedValue = cache[keyName];
12921
13686
  }
12922
-
12923
13687
  hadCachedValue = true;
12924
13688
  }
12925
13689
 
12926
- if (!setter) {
12927
- _emberMetalProperties.defineProperty(obj, keyName, null, cachedValue);
12928
- return _emberMetalProperty_set.set(obj, keyName, value);
12929
- } else {
12930
- ret = setter.call(obj, keyName, value, cachedValue);
12931
- }
13690
+ var ret = this._setter.call(obj, keyName, value, cachedValue);
12932
13691
 
13692
+ // allows setter to return the same value that is cached already
12933
13693
  if (hadCachedValue && cachedValue === ret) {
12934
- return;
13694
+ return ret;
12935
13695
  }
12936
13696
 
12937
- var watched = meta.watching[keyName];
13697
+ var watched = meta.watching && meta.watching[keyName];
12938
13698
  if (watched) {
12939
13699
  _emberMetalProperty_events.propertyWillChange(obj, keyName);
12940
13700
  }
@@ -12943,18 +13703,14 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12943
13703
  cache[keyName] = undefined;
12944
13704
  }
12945
13705
 
12946
- if (cacheable) {
12947
- if (!hadCachedValue) {
12948
- _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
12949
- }
12950
- if (!cache) {
12951
- cache = meta.cache = {};
12952
- }
12953
- if (ret === undefined) {
12954
- cache[keyName] = UNDEFINED;
12955
- } else {
12956
- cache[keyName] = ret;
12957
- }
13706
+ if (!hadCachedValue) {
13707
+ _emberMetalDependent_keys.addDependentKeys(this, obj, keyName, meta);
13708
+ }
13709
+
13710
+ if (ret === undefined) {
13711
+ cache[keyName] = UNDEFINED;
13712
+ } else {
13713
+ cache[keyName] = ret;
12958
13714
  }
12959
13715
 
12960
13716
  if (watched) {
@@ -12966,19 +13722,15 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
12966
13722
 
12967
13723
  /* called before property is overridden */
12968
13724
  ComputedPropertyPrototype.teardown = function (obj, keyName) {
13725
+ if (this._volatile) {
13726
+ return;
13727
+ }
12969
13728
  var meta = metaFor(obj);
12970
-
12971
- if (meta.cache) {
12972
- if (keyName in meta.cache) {
12973
- _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
12974
- }
12975
-
12976
- if (this._cacheable) {
12977
- delete meta.cache[keyName];
12978
- }
13729
+ var cache = meta.cache;
13730
+ if (cache && cache[keyName] !== undefined) {
13731
+ _emberMetalDependent_keys.removeDependentKeys(this, obj, keyName, meta);
13732
+ cache[keyName] = undefined;
12979
13733
  }
12980
-
12981
- return null; // no value to restore
12982
13734
  };
12983
13735
 
12984
13736
  /**
@@ -13068,8 +13820,8 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/core', 'ember-metal/prop
13068
13820
  @public
13069
13821
  */
13070
13822
  function cacheFor(obj, key) {
13071
- var meta = obj['__ember_meta__'];
13072
- var cache = meta && meta.cache;
13823
+ var meta = obj.__ember_meta__;
13824
+ var cache = meta && meta.source === obj && meta.cache;
13073
13825
  var ret = cache && cache[key];
13074
13826
 
13075
13827
  if (ret === UNDEFINED) {
@@ -13819,7 +14571,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
13819
14571
 
13820
14572
  @class Ember
13821
14573
  @static
13822
- @version 2.0.0-beta.5
14574
+ @version 2.0.0
13823
14575
  @public
13824
14576
  */
13825
14577
 
@@ -13853,11 +14605,11 @@ enifed('ember-metal/core', ['exports'], function (exports) {
13853
14605
 
13854
14606
  @property VERSION
13855
14607
  @type String
13856
- @default '2.0.0-beta.5'
14608
+ @default '2.0.0'
13857
14609
  @static
13858
14610
  @public
13859
14611
  */
13860
- Ember.VERSION = '2.0.0-beta.5';
14612
+ Ember.VERSION = '2.0.0';
13861
14613
 
13862
14614
  /**
13863
14615
  The hash of environment variables used to control various configuration
@@ -20145,6 +20897,9 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
20145
20897
  */
20146
20898
 
20147
20899
  function guidFor(obj) {
20900
+ if (obj && obj[GUID_KEY]) {
20901
+ return obj[GUID_KEY];
20902
+ }
20148
20903
 
20149
20904
  // special cases where we don't want to add a key to object
20150
20905
  if (obj === undefined) {
@@ -20182,10 +20937,6 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/features'], function (expor
20182
20937
  return obj ? '(true)' : '(false)';
20183
20938
 
20184
20939
  default:
20185
- if (obj[GUID_KEY]) {
20186
- return obj[GUID_KEY];
20187
- }
20188
-
20189
20940
  if (obj === Object) {
20190
20941
  return '(Object)';
20191
20942
  }
@@ -21494,6 +22245,35 @@ enifed('ember-routing-htmlbars/keywords/link-to', ['exports', 'ember-metal/strea
21494
22245
  To override this option for your entire application, see
21495
22246
  "Overriding Application-wide Defaults".
21496
22247
 
22248
+ ### Keeping a link active for other routes
22249
+
22250
+ If you need a link to be 'active' even when it doesn't match
22251
+ the current route, you can use the the `current-when`
22252
+ argument.
22253
+
22254
+ ```handlebars
22255
+ {{#link-to 'photoGallery' current-when='photos'}}
22256
+ Photo Gallery
22257
+ {{/link-to}}
22258
+ ```
22259
+
22260
+ This may be helpful for keeping links active for:
22261
+
22262
+ * non-nested routes that are logically related
22263
+ * some secondary menu approaches
22264
+ * 'top navigation' with 'sub navigation' scenarios
22265
+
22266
+ A link will be active if `current-when` is `true` or the current
22267
+ route is the route this link would transition to.
22268
+
22269
+ To match multiple routes 'space-separate' the routes:
22270
+
22271
+ ```handlebars
22272
+ {{#link-to 'gallery' current-when='photos drawings paintings'}}
22273
+ Art Gallery
22274
+ {{/link-to}}
22275
+ ```
22276
+
21497
22277
  ### Supplying a model
21498
22278
  An optional model argument can be used for routes whose
21499
22279
  paths contain dynamic segments. This argument will become
@@ -21896,7 +22676,7 @@ enifed('ember-routing-views/views/link', ['exports', 'ember-metal/core', 'ember-
21896
22676
 
21897
22677
  'use strict';
21898
22678
 
21899
- _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.0.0-beta.5';
22679
+ _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.0.0';
21900
22680
 
21901
22681
  var linkComponentClassNameBindings = ['active', 'loading', 'disabled'];
21902
22682
 
@@ -22191,7 +22971,7 @@ enifed('ember-routing-views/views/link', ['exports', 'ember-metal/core', 'ember-
22191
22971
  }
22192
22972
 
22193
22973
  var routing = _emberMetalProperty_get.get(this, '_routing');
22194
- var targetRouteName = _emberMetalProperty_get.get(this, 'targetRouteName');
22974
+ var targetRouteName = this._handleOnlyQueryParamsSupplied(_emberMetalProperty_get.get(this, 'targetRouteName'));
22195
22975
  var models = _emberMetalProperty_get.get(this, 'models');
22196
22976
  var queryParamValues = _emberMetalProperty_get.get(this, 'queryParams.values');
22197
22977
  var shouldReplace = _emberMetalProperty_get.get(this, 'attrs.replace');
@@ -22398,7 +23178,7 @@ enifed('ember-routing-views/views/outlet', ['exports', 'ember-views/views/view',
22398
23178
 
22399
23179
  'use strict';
22400
23180
 
22401
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.0.0-beta.5';
23181
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.0.0';
22402
23182
 
22403
23183
  var CoreOutletView = _emberViewsViewsView.default.extend({
22404
23184
  defaultTemplate: _emberHtmlbarsTemplatesTopLevelView.default,
@@ -24669,7 +25449,7 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
24669
25449
  @property controller
24670
25450
  @type Ember.Controller
24671
25451
  @since 1.6.0
24672
- @private
25452
+ @public
24673
25453
  */
24674
25454
 
24675
25455
  actions: {
@@ -27313,11 +28093,13 @@ enifed('ember-routing/utils', ['exports', 'ember-metal/merge', 'ember-metal/prop
27313
28093
  var part = parts[i];
27314
28094
  var cacheValuePrefix = _calculateCacheValuePrefix(prefix, part);
27315
28095
  var value;
27316
- if (cacheValuePrefix && cacheValuePrefix in values) {
27317
- var partRemovedPrefix = part.indexOf(cacheValuePrefix) === 0 ? part.substr(cacheValuePrefix.length + 1) : part;
27318
- value = _emberMetalProperty_get.get(values[cacheValuePrefix], partRemovedPrefix);
27319
- } else {
27320
- value = _emberMetalProperty_get.get(values, part);
28096
+ if (values) {
28097
+ if (cacheValuePrefix && cacheValuePrefix in values) {
28098
+ var partRemovedPrefix = part.indexOf(cacheValuePrefix) === 0 ? part.substr(cacheValuePrefix.length + 1) : part;
28099
+ value = _emberMetalProperty_get.get(values[cacheValuePrefix], partRemovedPrefix);
28100
+ } else {
28101
+ value = _emberMetalProperty_get.get(values, part);
28102
+ }
27321
28103
  }
27322
28104
  suffixes += '::' + part + ':' + value;
27323
28105
  }
@@ -34689,7 +35471,7 @@ enifed('ember-runtime/utils', ['exports', 'ember-runtime/mixins/array', 'ember-r
34689
35471
  return ret;
34690
35472
  }
34691
35473
  });
34692
- enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/deprecate-view-and-controller-paths', 'ember-template-compiler/plugins/deprecate-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsDeprecateViewAndControllerPaths, _emberTemplateCompilerPluginsDeprecateViewHelper, _emberTemplateCompilerCompat) {
35474
+ enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
34693
35475
  'use strict';
34694
35476
 
34695
35477
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldBindingSyntax.default);
@@ -34702,8 +35484,9 @@ enifed('ember-template-compiler', ['exports', 'ember-metal', 'ember-template-com
34702
35484
 
34703
35485
  if (_emberMetal.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
34704
35486
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformEachIntoCollection.default);
34705
- _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsDeprecateViewAndControllerPaths.default);
34706
- _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsDeprecateViewHelper.default);
35487
+ } else {
35488
+ _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths.default);
35489
+ _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsAssertNoViewHelper.default);
34707
35490
  }
34708
35491
 
34709
35492
  exports._Ember = _emberMetal.default;
@@ -34784,10 +35567,10 @@ enifed('ember-template-compiler/plugins', ['exports'], function (exports) {
34784
35567
 
34785
35568
  exports.default = plugins;
34786
35569
  });
34787
- enifed('ember-template-compiler/plugins/deprecate-view-and-controller-paths', ['exports', 'ember-metal/core', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCalculateLocationDisplay) {
35570
+ enifed('ember-template-compiler/plugins/assert-no-view-and-controller-paths', ['exports', 'ember-metal/core', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCalculateLocationDisplay) {
34788
35571
  'use strict';
34789
35572
 
34790
- function DeprecateViewAndControllerPaths(options) {
35573
+ function AssertNoViewAndControllerPaths(options) {
34791
35574
  // set later within HTMLBars to the syntax package
34792
35575
  this.syntax = null;
34793
35576
  this.options = options || {};
@@ -34798,7 +35581,7 @@ enifed('ember-template-compiler/plugins/deprecate-view-and-controller-paths', ['
34798
35581
  @method transform
34799
35582
  @param {AST} ast The AST to be transformed.
34800
35583
  */
34801
- DeprecateViewAndControllerPaths.prototype.transform = function DeprecateViewAndControllerPaths_transform(ast) {
35584
+ AssertNoViewAndControllerPaths.prototype.transform = function AssertNoViewAndControllerPaths_transform(ast) {
34802
35585
  var walker = new this.syntax.Walker();
34803
35586
  var moduleName = this.options && this.options.moduleName;
34804
35587
 
@@ -34807,15 +35590,15 @@ enifed('ember-template-compiler/plugins/deprecate-view-and-controller-paths', ['
34807
35590
  return;
34808
35591
  }
34809
35592
 
34810
- deprecatePath(moduleName, node, node.path);
34811
- deprecatePaths(moduleName, node, node.params);
34812
- deprecateHash(moduleName, node, node.hash);
35593
+ assertPath(moduleName, node, node.path);
35594
+ assertPaths(moduleName, node, node.params);
35595
+ assertHash(moduleName, node, node.hash);
34813
35596
  });
34814
35597
 
34815
35598
  return ast;
34816
35599
  };
34817
35600
 
34818
- function deprecateHash(moduleName, node, hash) {
35601
+ function assertHash(moduleName, node, hash) {
34819
35602
  if (!hash || !hash.pairs) {
34820
35603
  return;
34821
35604
  }
@@ -34823,46 +35606,49 @@ enifed('ember-template-compiler/plugins/deprecate-view-and-controller-paths', ['
34823
35606
  for (i = 0, l = hash.pairs.length; i < l; i++) {
34824
35607
  pair = hash.pairs[i];
34825
35608
  paths = pair.value.params;
34826
- deprecatePaths(moduleName, pair, paths);
35609
+ assertPaths(moduleName, pair, paths);
34827
35610
  }
34828
35611
  }
34829
35612
 
34830
- function deprecatePaths(moduleName, node, paths) {
35613
+ function assertPaths(moduleName, node, paths) {
34831
35614
  if (!paths) {
34832
35615
  return;
34833
35616
  }
34834
35617
  var i, l, path;
34835
35618
  for (i = 0, l = paths.length; i < l; i++) {
34836
35619
  path = paths[i];
34837
- deprecatePath(moduleName, node, path);
35620
+ assertPath(moduleName, node, path);
34838
35621
  }
34839
35622
  }
34840
35623
 
34841
- function deprecatePath(moduleName, node, path) {
34842
- _emberMetalCore.default.deprecate('Using `{{' + (path && path.type === 'PathExpression' && path.parts[0]) + '}}` or any path based on it ' + _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc) + 'has been deprecated.', function deprecatePath_test() {
34843
- var noDeprecate = true;
35624
+ function assertPath(moduleName, node, path) {
35625
+ _emberMetalCore.default.assert('Using `{{' + (path && path.type === 'PathExpression' && path.parts[0]) + '}}` or any path based on it ' + _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc) + 'has been removed in Ember 2.0', function assertPath_test() {
35626
+ var noAssertion = true;
34844
35627
 
34845
35628
  var viewKeyword = path && path.type === 'PathExpression' && path.parts && path.parts[0];
34846
35629
  if (viewKeyword === 'view') {
34847
- noDeprecate = _emberMetalCore.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT;
35630
+ noAssertion = _emberMetalCore.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT;
34848
35631
  } else if (viewKeyword === 'controller') {
34849
- noDeprecate = false;
35632
+ noAssertion = _emberMetalCore.default.ENV._ENABLE_LEGACY_CONTROLLER_SUPPORT;
34850
35633
  }
34851
35634
 
34852
- return noDeprecate;
34853
- }, { url: 'http://emberjs.com/deprecations/v1.x#toc_view-and-controller-template-keywords', id: path.parts && path.parts[0] === 'view' ? 'view.keyword.view' : 'view.keyword.controller' });
35635
+ return noAssertion;
35636
+ }, {
35637
+ id: path.parts && path.parts[0] === 'view' ? 'view.keyword.view' : 'view.keyword.controller',
35638
+ until: '2.0.0'
35639
+ });
34854
35640
  }
34855
35641
 
34856
35642
  function validate(node) {
34857
35643
  return node.type === 'MustacheStatement' || node.type === 'BlockStatement';
34858
35644
  }
34859
35645
 
34860
- exports.default = DeprecateViewAndControllerPaths;
35646
+ exports.default = AssertNoViewAndControllerPaths;
34861
35647
  });
34862
- enifed('ember-template-compiler/plugins/deprecate-view-helper', ['exports', 'ember-metal/core', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCalculateLocationDisplay) {
35648
+ enifed('ember-template-compiler/plugins/assert-no-view-helper', ['exports', 'ember-metal/core', 'ember-template-compiler/system/calculate-location-display'], function (exports, _emberMetalCore, _emberTemplateCompilerSystemCalculateLocationDisplay) {
34863
35649
  'use strict';
34864
35650
 
34865
- function DeprecateViewHelper(options) {
35651
+ function AssertNoViewHelper(options) {
34866
35652
  // set later within HTMLBars to the syntax package
34867
35653
  this.syntax = null;
34868
35654
  this.options = options || {};
@@ -34873,7 +35659,7 @@ enifed('ember-template-compiler/plugins/deprecate-view-helper', ['exports', 'emb
34873
35659
  @method transform
34874
35660
  @param {AST} ast The AST to be transformed.
34875
35661
  */
34876
- DeprecateViewHelper.prototype.transform = function DeprecateViewHelper_transform(ast) {
35662
+ AssertNoViewHelper.prototype.transform = function AssertNoViewHelper_transform(ast) {
34877
35663
  if (!!_emberMetalCore.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
34878
35664
  return ast;
34879
35665
  }
@@ -34885,33 +35671,27 @@ enifed('ember-template-compiler/plugins/deprecate-view-helper', ['exports', 'emb
34885
35671
  return;
34886
35672
  }
34887
35673
 
34888
- deprecateHelper(moduleName, node);
35674
+ assertHelper(moduleName, node);
34889
35675
  });
34890
35676
 
34891
35677
  return ast;
34892
35678
  };
34893
35679
 
34894
- function deprecateHelper(moduleName, node) {
35680
+ function assertHelper(moduleName, node) {
34895
35681
  var paramValue = node.params.length && node.params[0].value;
34896
35682
 
34897
35683
  if (!paramValue) {
34898
35684
  return;
34899
- } else if (paramValue === 'select') {
34900
- deprecateSelect(moduleName, node);
34901
35685
  } else {
34902
- _emberMetalCore.default.deprecate('Using the `{{view "string"}}` helper is deprecated. ' + _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc), false, { url: 'http://emberjs.com/deprecations/v1.x#toc_ember-view', id: 'view.helper' });
35686
+ _emberMetalCore.default.assert('Using the `{{view "string"}}` helper is removed in 2.0. ' + _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc), _emberMetalCore.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT, { id: 'view.helper', until: '2.0.0' });
34903
35687
  }
34904
35688
  }
34905
35689
 
34906
- function deprecateSelect(moduleName, node) {
34907
- _emberMetalCore.default.deprecate('Using `{{view "select"}}` is deprecated. ' + _emberTemplateCompilerSystemCalculateLocationDisplay.default(moduleName, node.loc), false, { url: 'http://emberjs.com/deprecations/v1.x#toc_ember-select', id: 'view.helper.select' });
34908
- }
34909
-
34910
35690
  function validate(node) {
34911
35691
  return (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && node.path.parts[0] === 'view';
34912
35692
  }
34913
35693
 
34914
- exports.default = DeprecateViewHelper;
35694
+ exports.default = AssertNoViewHelper;
34915
35695
  });
34916
35696
  enifed('ember-template-compiler/plugins/transform-angle-bracket-components', ['exports'], function (exports) {
34917
35697
  'use strict';
@@ -35660,7 +36440,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
35660
36440
 
35661
36441
  options.buildMeta = function buildMeta(program) {
35662
36442
  return {
35663
- revision: 'Ember@2.0.0-beta.5',
36443
+ revision: 'Ember@2.0.0',
35664
36444
  loc: program.loc,
35665
36445
  moduleName: options.moduleName
35666
36446
  };
@@ -37014,7 +37794,7 @@ enifed('ember-views', ['exports', 'ember-runtime', 'ember-views/system/jquery',
37014
37794
  _emberRuntime.default.TextArea = _emberViewsViewsText_area.default;
37015
37795
 
37016
37796
  if (_emberRuntime.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT) {
37017
- _emberRuntime.default.Select = _emberViewsViewsSelect.DeprecatedSelect;
37797
+ _emberRuntime.default.Select = _emberViewsViewsSelect.Select;
37018
37798
  }
37019
37799
 
37020
37800
  _emberRuntime.default.SelectOption = _emberViewsViewsSelect.SelectOption;
@@ -37082,13 +37862,16 @@ enifed('ember-views/compat/attrs-proxy', ['exports', 'ember-metal/mixin', 'ember
37082
37862
 
37083
37863
  _propagateAttrsToThis: function () {
37084
37864
  var attrs = this.attrs;
37085
- var values = {};
37865
+
37086
37866
  for (var prop in attrs) {
37087
- if (prop !== 'attrs') {
37088
- values[prop] = this.getAttr(prop);
37867
+ if (prop !== 'attrs' &&
37868
+ // These list of properties are concatenated and merged properties of
37869
+ // Ember.View / Ember.Component. Setting them here results in them being
37870
+ // completely stomped and not handled properly, BAIL OUT!
37871
+ prop !== 'actions' && prop !== 'classNames' && prop !== 'classNameBindings' && prop !== 'attributeBindings') {
37872
+ this.set(prop, this.getAttr(prop));
37089
37873
  }
37090
37874
  }
37091
- this.setProperties(values);
37092
37875
  },
37093
37876
 
37094
37877
  initializeShape: _emberMetalEvents.on('init', function () {
@@ -37113,7 +37896,7 @@ enifed('ember-views/compat/attrs-proxy', ['exports', 'ember-metal/mixin', 'ember
37113
37896
  // do not deprecate accessing `this[key]` at this time.
37114
37897
  // add this back when we have a proper migration path
37115
37898
  // Ember.deprecate(deprecation(key), { id: 'ember-views.', until: '3.0.0' });
37116
- var possibleCell = attrs.key;
37899
+ var possibleCell = attrs[key];
37117
37900
 
37118
37901
  if (possibleCell && possibleCell[MUTABLE_CELL]) {
37119
37902
  return possibleCell.value;
@@ -38112,7 +38895,7 @@ enifed('ember-views/mixins/view_context_support', ['exports', 'ember-metal/mixin
38112
38895
  _emberMetalProperty_set.set(this, '_context', value);
38113
38896
  return value;
38114
38897
  }
38115
- }).volatile(),
38898
+ }),
38116
38899
 
38117
38900
  /**
38118
38901
  Private copy of the view's template context. This can be set directly
@@ -40188,7 +40971,7 @@ enifed('ember-views/views/component', ['exports', 'ember-metal/core', 'ember-run
40188
40971
  enifed('ember-views/views/container_view', ['exports', 'ember-metal/core', 'ember-runtime/mixins/mutable_array', 'ember-views/views/view', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/events', 'ember-htmlbars/templates/container-view'], function (exports, _emberMetalCore, _emberRuntimeMixinsMutable_array, _emberViewsViewsView, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalEvents, _emberHtmlbarsTemplatesContainerView) {
40189
40972
  'use strict';
40190
40973
 
40191
- _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.0.0-beta.5';
40974
+ _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.0.0';
40192
40975
 
40193
40976
  /**
40194
40977
  @module ember
@@ -40685,7 +41468,7 @@ enifed('ember-views/views/legacy_each_view', ['exports', 'ember-htmlbars/templat
40685
41468
  })
40686
41469
  });
40687
41470
  });
40688
- enifed('ember-views/views/select', ['exports', 'ember-metal/core', 'ember-metal/replace', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-runtime/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option', 'ember-htmlbars/templates/select-optgroup'], function (exports, _emberMetalCore, _emberMetalReplace, _emberMetalProperty_get, _emberMetalProperty_set, _emberViewsViewsView, _emberRuntimeUtils, _emberMetalIs_none, _emberMetalComputed, _emberRuntimeSystemNative_array, _emberMetalMixin, _emberMetalProperties, _emberHtmlbarsTemplatesSelect, _emberHtmlbarsTemplatesSelectOption, _emberHtmlbarsTemplatesSelectOptgroup) {
41471
+ enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-runtime/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option', 'ember-htmlbars/templates/select-optgroup'], function (exports, _emberMetalReplace, _emberMetalProperty_get, _emberMetalProperty_set, _emberViewsViewsView, _emberRuntimeUtils, _emberMetalIs_none, _emberMetalComputed, _emberRuntimeSystemNative_array, _emberMetalMixin, _emberMetalProperties, _emberHtmlbarsTemplatesSelect, _emberHtmlbarsTemplatesSelectOption, _emberHtmlbarsTemplatesSelectOptgroup) {
40689
41472
  /**
40690
41473
  @module ember
40691
41474
  @submodule ember-views
@@ -41336,27 +42119,6 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/core', 'ember-metal/
41336
42119
  }
41337
42120
  });
41338
42121
 
41339
- function selectViewDeprecationMessage() {
41340
- _emberMetalCore.default.deprecate('Ember.Select is deprecated. Consult the Deprecations Guide for a migration strategy.', !!_emberMetalCore.default.ENV._ENABLE_LEGACY_VIEW_SUPPORT, {
41341
- url: 'http://emberjs.com/deprecations/v1.x/#toc_ember-select',
41342
- id: 'ember-views.select-deprecated',
41343
- until: '2.4.0'
41344
- });
41345
- }
41346
-
41347
- var DeprecatedSelect = Select.extend({
41348
- init: function () {
41349
- selectViewDeprecationMessage();
41350
- this._super.apply(this, arguments);
41351
- }
41352
- });
41353
-
41354
- DeprecatedSelect.reopen = function () {
41355
- selectViewDeprecationMessage();
41356
- Select.reopen.apply(Select, arguments);
41357
- return this;
41358
- };
41359
-
41360
42122
  function indexesOf(iterable, elements) {
41361
42123
  return elements === undefined ? [] : elements.map(function (item) {
41362
42124
  return iterable.indexOf(item);
@@ -41365,7 +42127,6 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/core', 'ember-metal/
41365
42127
 
41366
42128
  exports.default = Select;
41367
42129
  exports.Select = Select;
41368
- exports.DeprecatedSelect = DeprecatedSelect;
41369
42130
  exports.SelectOption = SelectOption;
41370
42131
  exports.SelectOptgroup = SelectOptgroup;
41371
42132
  });