ember-source 1.10.0.beta.3 → 1.10.0.beta.4
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +185 -62
- data/dist/ember-template-compiler.js +105 -27
- data/dist/ember-testing.js +11 -2
- data/dist/ember-tests.js +341 -173
- data/dist/ember-tests.prod.js +341 -173
- data/dist/ember.debug.js +465 -351
- data/dist/ember.js +465 -351
- data/dist/ember.min.js +14 -14
- data/dist/ember.prod.js +435 -336
- metadata +2 -2
data/dist/ember.debug.js
CHANGED
@@ -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 1.10.0-beta.
|
8
|
+
* @version 1.10.0-beta.4
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -3210,7 +3210,7 @@ enifed("ember-application/system/application",
|
|
3210
3210
|
@deprecated
|
3211
3211
|
*/
|
3212
3212
|
then: function() {
|
3213
|
-
Ember.deprecate('Do not use `.then` on an instance of Ember.Application. Please use the `.ready` hook instead.');
|
3213
|
+
Ember.deprecate('Do not use `.then` on an instance of Ember.Application. Please use the `.ready` hook instead.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-code-then-code-on-ember-application' });
|
3214
3214
|
|
3215
3215
|
this._super.apply(this, arguments);
|
3216
3216
|
}
|
@@ -3984,8 +3984,10 @@ enifed("ember-debug",
|
|
3984
3984
|
@param {String} message A description of the deprecation.
|
3985
3985
|
@param {Boolean} test An optional boolean. If falsy, the deprecation
|
3986
3986
|
will be displayed.
|
3987
|
+
@param {Object} options An optional object that can be used to pass
|
3988
|
+
in a `url` to the transition guide on the emberjs.com website.
|
3987
3989
|
*/
|
3988
|
-
Ember.deprecate = function(message, test) {
|
3990
|
+
Ember.deprecate = function(message, test, options) {
|
3989
3991
|
var noDeprecation;
|
3990
3992
|
|
3991
3993
|
if (typeof test === 'function') {
|
@@ -4003,6 +4005,13 @@ enifed("ember-debug",
|
|
4003
4005
|
// When using new Error, we can't do the arguments check for Chrome. Alternatives are welcome
|
4004
4006
|
try { __fail__.fail(); } catch (e) { error = e; }
|
4005
4007
|
|
4008
|
+
if (arguments.length === 3) {
|
4009
|
+
Ember.assert('options argument to Ember.deprecate should be an object', options && typeof options === 'object');
|
4010
|
+
if (options.url) {
|
4011
|
+
message += ' See ' + options.url + ' for more details.';
|
4012
|
+
}
|
4013
|
+
}
|
4014
|
+
|
4006
4015
|
if (Ember.LOG_STACKTRACE_ON_DEPRECATION && error.stack) {
|
4007
4016
|
var stack;
|
4008
4017
|
var stackStr = '';
|
@@ -4851,8 +4860,7 @@ enifed("ember-htmlbars",
|
|
4851
4860
|
|
4852
4861
|
Ember.HTMLBars = {
|
4853
4862
|
helpers: helpers,
|
4854
|
-
|
4855
|
-
_registerHelper: registerHelper,
|
4863
|
+
registerHelper: registerHelper,
|
4856
4864
|
template: template,
|
4857
4865
|
compile: compile,
|
4858
4866
|
precompile: precompile,
|
@@ -5017,7 +5025,15 @@ enifed("ember-htmlbars/compat/helper",
|
|
5017
5025
|
};
|
5018
5026
|
|
5019
5027
|
function registerHandlebarsCompatibleHelper(name, value) {
|
5020
|
-
|
5028
|
+
var helper;
|
5029
|
+
|
5030
|
+
if (value && value.isHTMLBars) {
|
5031
|
+
helper = value;
|
5032
|
+
} else {
|
5033
|
+
helper = new HandlebarsCompatibleHelper(value);
|
5034
|
+
}
|
5035
|
+
|
5036
|
+
helpers[name] = helper;
|
5021
5037
|
}
|
5022
5038
|
|
5023
5039
|
__exports__.registerHandlebarsCompatibleHelper = registerHandlebarsCompatibleHelper;function handlebarsHelper(name, value) {
|
@@ -5320,8 +5336,8 @@ enifed("ember-htmlbars/compat/register-bound-helper",
|
|
5320
5336
|
}
|
5321
5337
|
});
|
5322
5338
|
enifed("ember-htmlbars/helpers",
|
5323
|
-
["ember-metal/platform","ember-
|
5324
|
-
function(__dependency1__, __dependency2__,
|
5339
|
+
["ember-metal/platform","ember-htmlbars/system/helper","exports"],
|
5340
|
+
function(__dependency1__, __dependency2__, __exports__) {
|
5325
5341
|
"use strict";
|
5326
5342
|
/**
|
5327
5343
|
@module ember
|
@@ -5341,186 +5357,28 @@ enifed("ember-htmlbars/helpers",
|
|
5341
5357
|
@submodule ember-htmlbars
|
5342
5358
|
*/
|
5343
5359
|
|
5344
|
-
var
|
5345
|
-
var Component = __dependency3__["default"];
|
5346
|
-
var makeViewHelper = __dependency4__["default"];
|
5347
|
-
var Helper = __dependency5__["default"];
|
5348
|
-
var makeBoundHelper = __dependency6__["default"];
|
5360
|
+
var Helper = __dependency2__["default"];
|
5349
5361
|
|
5350
5362
|
/**
|
5351
|
-
|
5352
|
-
|
5353
|
-
## Simple bound helper example
|
5354
|
-
|
5355
|
-
```javascript
|
5356
|
-
Ember.HTMLBars.helper('capitalize', function(value) {
|
5357
|
-
return value.toUpperCase();
|
5358
|
-
});
|
5359
|
-
```
|
5360
|
-
|
5361
|
-
The above bound helper can be used inside of templates as follows:
|
5362
|
-
|
5363
|
-
```handlebars
|
5364
|
-
{{capitalize name}}
|
5365
|
-
```
|
5366
|
-
|
5367
|
-
In this case, when the `name` property of the template's context changes,
|
5368
|
-
the rendered value of the helper will update to reflect this change.
|
5369
|
-
|
5370
|
-
For more examples of bound helpers, see documentation for
|
5371
|
-
`Ember.HTMLBars.registerBoundHelper`.
|
5372
|
-
|
5373
|
-
## Custom view helper example
|
5374
|
-
|
5375
|
-
Assuming a view subclass named `App.CalendarView` were defined, a helper
|
5376
|
-
for rendering instances of this view could be registered as follows:
|
5377
|
-
|
5378
|
-
```javascript
|
5379
|
-
Ember.HTMLBars.helper('calendar', App.CalendarView):
|
5380
|
-
```
|
5381
|
-
|
5382
|
-
The above bound helper can be used inside of templates as follows:
|
5383
|
-
|
5384
|
-
```handlebars
|
5385
|
-
{{calendar}}
|
5386
|
-
```
|
5387
|
-
|
5388
|
-
Which is functionally equivalent to:
|
5389
|
-
|
5390
|
-
```handlebars
|
5391
|
-
{{view 'calendar'}}
|
5392
|
-
```
|
5393
|
-
|
5394
|
-
Options in the helper will be passed to the view in exactly the same
|
5395
|
-
manner as with the `view` helper.
|
5396
|
-
|
5397
|
-
@private
|
5398
|
-
@method helper
|
5363
|
+
@public
|
5364
|
+
@method registerHelper
|
5399
5365
|
@for Ember.HTMLBars
|
5400
5366
|
@param {String} name
|
5401
|
-
@param {Function
|
5367
|
+
@param {Object|Function} helperFunc the helper function to add
|
5402
5368
|
*/
|
5403
|
-
function
|
5404
|
-
|
5405
|
-
"', but component names must include a '-'", !Component.detect(value) || name.match(/-/));
|
5369
|
+
function registerHelper(name, helperFunc) {
|
5370
|
+
var helper;
|
5406
5371
|
|
5407
|
-
if (
|
5408
|
-
|
5372
|
+
if (helperFunc && helperFunc.isHelper) {
|
5373
|
+
helper = helperFunc;
|
5409
5374
|
} else {
|
5410
|
-
|
5375
|
+
helper = new Helper(helperFunc);
|
5411
5376
|
}
|
5412
|
-
}
|
5413
5377
|
|
5414
|
-
|
5415
|
-
@private
|
5416
|
-
@method registerHelper
|
5417
|
-
@for Ember.HTMLBars
|
5418
|
-
@param {String} name
|
5419
|
-
@param {Function} helperFunc the helper function to add
|
5420
|
-
*/
|
5421
|
-
function registerHelper(name, helperFunc, preprocessFunction) {
|
5422
|
-
helpers[name] = new Helper(helperFunc, preprocessFunction);
|
5378
|
+
helpers[name] = helper;
|
5423
5379
|
}
|
5424
5380
|
|
5425
|
-
__exports__.registerHelper = registerHelper
|
5426
|
-
Register a bound helper. Bound helpers behave similarly to regular
|
5427
|
-
helpers, with the added ability to re-render when the underlying data
|
5428
|
-
changes.
|
5429
|
-
|
5430
|
-
## Simple example
|
5431
|
-
|
5432
|
-
```javascript
|
5433
|
-
Ember.HTMLBars.registerBoundHelper('capitalize', function(params, hash, options, env) {
|
5434
|
-
return Ember.String.capitalize(params[0]);
|
5435
|
-
});
|
5436
|
-
```
|
5437
|
-
|
5438
|
-
The above bound helper can be used inside of templates as follows:
|
5439
|
-
|
5440
|
-
```handlebars
|
5441
|
-
{{capitalize name}}
|
5442
|
-
```
|
5443
|
-
|
5444
|
-
In this case, when the `name` property of the template's context changes,
|
5445
|
-
the rendered value of the helper will update to reflect this change.
|
5446
|
-
|
5447
|
-
## Example with hash parameters
|
5448
|
-
|
5449
|
-
Like normal helpers, bound helpers have access to the hash parameters
|
5450
|
-
passed into the helper call.
|
5451
|
-
|
5452
|
-
```javascript
|
5453
|
-
Ember.HTMLBars.registerBoundHelper('repeat', function(params, hash) {
|
5454
|
-
var count = hash.count;
|
5455
|
-
var value = params[0];
|
5456
|
-
|
5457
|
-
return new Array( count + 1).join( value );
|
5458
|
-
});
|
5459
|
-
```
|
5460
|
-
|
5461
|
-
This helper could be used in a template as follows:
|
5462
|
-
|
5463
|
-
```handlebars
|
5464
|
-
{{repeat text count=3}}
|
5465
|
-
```
|
5466
|
-
|
5467
|
-
## Example with bound hash parameters
|
5468
|
-
|
5469
|
-
Bound hash params are also supported. Example:
|
5470
|
-
|
5471
|
-
```handlebars
|
5472
|
-
{{repeat text count=numRepeats}}
|
5473
|
-
```
|
5474
|
-
|
5475
|
-
In this example, count will be bound to the value of
|
5476
|
-
the `numRepeats` property on the context. If that property
|
5477
|
-
changes, the helper will be re-rendered.
|
5478
|
-
|
5479
|
-
## Example with multiple bound properties
|
5480
|
-
|
5481
|
-
`Ember.HTMLBars.registerBoundHelper` supports binding to
|
5482
|
-
multiple properties, e.g.:
|
5483
|
-
|
5484
|
-
```javascript
|
5485
|
-
Ember.HTMLBars.registerBoundHelper('concatenate', function(params) {
|
5486
|
-
return params.join('||');
|
5487
|
-
});
|
5488
|
-
```
|
5489
|
-
|
5490
|
-
Which allows for template syntax such as `{{concatenate prop1 prop2}}` or
|
5491
|
-
`{{concatenate prop1 prop2 prop3}}`. If any of the properties change,
|
5492
|
-
the helper will re-render.
|
5493
|
-
|
5494
|
-
## Use with unbound helper
|
5495
|
-
|
5496
|
-
The `{{unbound}}` helper can be used with bound helper invocations
|
5497
|
-
to render them in their unbound form, e.g.
|
5498
|
-
|
5499
|
-
```handlebars
|
5500
|
-
{{unbound capitalize name}}
|
5501
|
-
```
|
5502
|
-
|
5503
|
-
In this example, if the name property changes, the helper
|
5504
|
-
will not re-render.
|
5505
|
-
|
5506
|
-
## Use with blocks not supported
|
5507
|
-
|
5508
|
-
Bound helpers do not support use with blocks or the addition of
|
5509
|
-
child views of any kind.
|
5510
|
-
|
5511
|
-
@private
|
5512
|
-
@method registerBoundHelper
|
5513
|
-
@for Ember.HTMLBars
|
5514
|
-
@param {String} name
|
5515
|
-
@param {Function} function
|
5516
|
-
*/
|
5517
|
-
function registerBoundHelper(name, fn) {
|
5518
|
-
var boundFn = makeBoundHelper(fn);
|
5519
|
-
|
5520
|
-
helpers[name] = boundFn;
|
5521
|
-
}
|
5522
|
-
|
5523
|
-
__exports__.registerBoundHelper = registerBoundHelper;__exports__["default"] = helpers;
|
5381
|
+
__exports__.registerHelper = registerHelper;__exports__["default"] = helpers;
|
5524
5382
|
});
|
5525
5383
|
enifed("ember-htmlbars/helpers/bind-attr",
|
5526
5384
|
["ember-metal/core","ember-runtime/system/string","ember-views/attr_nodes/attr_node","ember-views/attr_nodes/legacy_bind","ember-metal/keys","ember-htmlbars/helpers","ember-metal/enumerable_utils","ember-metal/streams/utils","ember-views/streams/class_name_binding","exports"],
|
@@ -5683,6 +5541,13 @@ enifed("ember-htmlbars/helpers/bind-attr",
|
|
5683
5541
|
|
5684
5542
|
var classView = new AttrNode('class', classNameBindings);
|
5685
5543
|
classView._morph = env.dom.createAttrMorph(element, 'class');
|
5544
|
+
|
5545
|
+
Ember.assert(
|
5546
|
+
'You cannot set `class` manually and via `{{bind-attr}}` helper on the same element. ' +
|
5547
|
+
'Please use `{{bind-attr}}`\'s `:static-class` syntax instead.',
|
5548
|
+
!element.getAttribute('class')
|
5549
|
+
);
|
5550
|
+
|
5686
5551
|
view.appendChild(classView);
|
5687
5552
|
}
|
5688
5553
|
|
@@ -5708,6 +5573,12 @@ enifed("ember-htmlbars/helpers/bind-attr",
|
|
5708
5573
|
|
5709
5574
|
attrView = new LegacyBindAttrNode(attr, lazyValue);
|
5710
5575
|
attrView._morph = env.dom.createAttrMorph(element, attr);
|
5576
|
+
|
5577
|
+
Ember.assert(
|
5578
|
+
'You cannot set `' + attr + '` manually and via `{{bind-attr}}` helper on the same element.',
|
5579
|
+
!element.getAttribute(attr)
|
5580
|
+
);
|
5581
|
+
|
5711
5582
|
view.appendChild(attrView);
|
5712
5583
|
}
|
5713
5584
|
}
|
@@ -5734,8 +5605,9 @@ enifed("ember-htmlbars/helpers/bind-attr",
|
|
5734
5605
|
function bindAttrHelperDeprecated() {
|
5735
5606
|
Ember.deprecate("The 'bindAttr' view helper is deprecated in favor of 'bind-attr'");
|
5736
5607
|
|
5737
|
-
|
5738
|
-
|
5608
|
+
|
5609
|
+
return helpers['bind-attr'].helperFunction.apply(this, arguments);
|
5610
|
+
}
|
5739
5611
|
|
5740
5612
|
__exports__["default"] = bindAttrHelper;
|
5741
5613
|
|
@@ -6363,13 +6235,11 @@ enifed("ember-htmlbars/helpers/each",
|
|
6363
6235
|
|
6364
6236
|
Ember.deprecate(
|
6365
6237
|
"Using the context switching form of {{each}} is deprecated. " +
|
6366
|
-
"Please use the keyword form (`{{#each foo in bar}}`) instead.
|
6367
|
-
|
6368
|
-
|
6369
|
-
hash.keyword === true || typeof hash.keyword === 'string'
|
6238
|
+
"Please use the keyword form (`{{#each foo in bar}}`) instead.",
|
6239
|
+
hash.keyword === true || typeof hash.keyword === 'string',
|
6240
|
+
{ url: 'http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope' }
|
6370
6241
|
);
|
6371
6242
|
|
6372
|
-
hash.emptyViewClass = Ember._MetamorphView;
|
6373
6243
|
hash.dataSource = path;
|
6374
6244
|
options.helperName = options.helperName || helperName;
|
6375
6245
|
|
@@ -6466,7 +6336,7 @@ enifed("ember-htmlbars/helpers/if_unless",
|
|
6466
6336
|
}
|
6467
6337
|
|
6468
6338
|
if (!shouldDisplayIfHelperContent(value)) {
|
6469
|
-
template = options.inverse;
|
6339
|
+
template = options.inverse || EMPTY_TEMPLATE;
|
6470
6340
|
}
|
6471
6341
|
|
6472
6342
|
return template.render(this, env, options.morph.contextualElement);
|
@@ -7739,9 +7609,9 @@ enifed("ember-htmlbars/helpers/with",
|
|
7739
7609
|
} else {
|
7740
7610
|
Ember.deprecate(
|
7741
7611
|
"Using the context switching form of `{{with}}` is deprecated. " +
|
7742
|
-
"Please use the keyword form (`{{with foo as bar}}`) instead.
|
7743
|
-
|
7744
|
-
|
7612
|
+
"Please use the keyword form (`{{with foo as bar}}`) instead.",
|
7613
|
+
false,
|
7614
|
+
{ url: 'http://emberjs.com/guides/deprecations/#toc_more-consistent-handlebars-scope' }
|
7745
7615
|
);
|
7746
7616
|
preserveContext = false;
|
7747
7617
|
}
|
@@ -8222,20 +8092,13 @@ enifed("ember-htmlbars/system/helper",
|
|
8222
8092
|
@class Helper
|
8223
8093
|
@namespace Ember.HTMLBars
|
8224
8094
|
*/
|
8225
|
-
function Helper(helper
|
8095
|
+
function Helper(helper) {
|
8226
8096
|
this.helperFunction = helper;
|
8227
8097
|
|
8228
|
-
|
8229
|
-
this.preprocessArguments = preprocessArguments;
|
8230
|
-
}
|
8231
|
-
|
8098
|
+
this.isHelper = true;
|
8232
8099
|
this.isHTMLBars = true;
|
8233
8100
|
}
|
8234
8101
|
|
8235
|
-
Helper.prototype = {
|
8236
|
-
preprocessArguments: function() { }
|
8237
|
-
};
|
8238
|
-
|
8239
8102
|
__exports__["default"] = Helper;
|
8240
8103
|
});
|
8241
8104
|
enifed("ember-htmlbars/system/lookup-helper",
|
@@ -8477,7 +8340,7 @@ enifed("ember-htmlbars/templates/component",
|
|
8477
8340
|
if (this.cachedFragment) {
|
8478
8341
|
fragment = dom.cloneNode(this.cachedFragment, true);
|
8479
8342
|
}
|
8480
|
-
dom.repairClonedNode(fragment,[0,1]);
|
8343
|
+
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0,1]); }
|
8481
8344
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8482
8345
|
content(env, morph0, context, "yield");
|
8483
8346
|
return fragment;
|
@@ -8500,7 +8363,7 @@ enifed("ember-htmlbars/templates/select",
|
|
8500
8363
|
hasRendered: false,
|
8501
8364
|
build: function build(dom) {
|
8502
8365
|
var el0 = dom.createElement("option");
|
8503
|
-
dom.
|
8366
|
+
dom.setAttribute(el0,"value","");
|
8504
8367
|
return el0;
|
8505
8368
|
},
|
8506
8369
|
render: function render(context, env, contextualElement) {
|
@@ -8556,7 +8419,7 @@ enifed("ember-htmlbars/templates/select",
|
|
8556
8419
|
if (this.cachedFragment) {
|
8557
8420
|
fragment = dom.cloneNode(this.cachedFragment, true);
|
8558
8421
|
}
|
8559
|
-
dom.repairClonedNode(fragment,[0,1]);
|
8422
|
+
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0,1]); }
|
8560
8423
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8561
8424
|
inline(env, morph0, context, "view", [get(env, context, "view.groupView")], {"content": get(env, context, "group.content"), "label": get(env, context, "group.label")});
|
8562
8425
|
return fragment;
|
@@ -8592,7 +8455,7 @@ enifed("ember-htmlbars/templates/select",
|
|
8592
8455
|
if (this.cachedFragment) {
|
8593
8456
|
fragment = dom.cloneNode(this.cachedFragment, true);
|
8594
8457
|
}
|
8595
|
-
dom.repairClonedNode(fragment,[0,1]);
|
8458
|
+
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0,1]); }
|
8596
8459
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8597
8460
|
block(env, morph0, context, "each", [get(env, context, "view.groupedContent")], {"keyword": "group"}, child0, null);
|
8598
8461
|
return fragment;
|
@@ -8630,7 +8493,7 @@ enifed("ember-htmlbars/templates/select",
|
|
8630
8493
|
if (this.cachedFragment) {
|
8631
8494
|
fragment = dom.cloneNode(this.cachedFragment, true);
|
8632
8495
|
}
|
8633
|
-
dom.repairClonedNode(fragment,[0,1]);
|
8496
|
+
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0,1]); }
|
8634
8497
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8635
8498
|
inline(env, morph0, context, "view", [get(env, context, "view.optionView")], {"content": get(env, context, "item")});
|
8636
8499
|
return fragment;
|
@@ -8666,7 +8529,7 @@ enifed("ember-htmlbars/templates/select",
|
|
8666
8529
|
if (this.cachedFragment) {
|
8667
8530
|
fragment = dom.cloneNode(this.cachedFragment, true);
|
8668
8531
|
}
|
8669
|
-
dom.repairClonedNode(fragment,[0,1]);
|
8532
|
+
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0,1]); }
|
8670
8533
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8671
8534
|
block(env, morph0, context, "each", [get(env, context, "view.content")], {"keyword": "item"}, child0, null);
|
8672
8535
|
return fragment;
|
@@ -8704,7 +8567,7 @@ enifed("ember-htmlbars/templates/select",
|
|
8704
8567
|
if (this.cachedFragment) {
|
8705
8568
|
fragment = dom.cloneNode(this.cachedFragment, true);
|
8706
8569
|
}
|
8707
|
-
dom.repairClonedNode(fragment,[0,1]);
|
8570
|
+
if (this.cachedFragment) { dom.repairClonedNode(fragment,[0,1]); }
|
8708
8571
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8709
8572
|
var morph1 = dom.createMorphAt(fragment,1,2,contextualElement);
|
8710
8573
|
block(env, morph0, context, "if", [get(env, context, "view.prompt")], {}, child0, null);
|
@@ -11925,7 +11788,7 @@ enifed("ember-metal/core",
|
|
11925
11788
|
|
11926
11789
|
@class Ember
|
11927
11790
|
@static
|
11928
|
-
@version 1.10.0-beta.
|
11791
|
+
@version 1.10.0-beta.4
|
11929
11792
|
*/
|
11930
11793
|
|
11931
11794
|
if ('undefined' === typeof Ember) {
|
@@ -11952,10 +11815,10 @@ enifed("ember-metal/core",
|
|
11952
11815
|
/**
|
11953
11816
|
@property VERSION
|
11954
11817
|
@type String
|
11955
|
-
@default '1.10.0-beta.
|
11818
|
+
@default '1.10.0-beta.4'
|
11956
11819
|
@static
|
11957
11820
|
*/
|
11958
|
-
Ember.VERSION = '1.10.0-beta.
|
11821
|
+
Ember.VERSION = '1.10.0-beta.4';
|
11959
11822
|
|
11960
11823
|
/**
|
11961
11824
|
Standard environmental variables. You can define these in a global `EmberENV`
|
@@ -13086,9 +12949,10 @@ enifed("ember-metal/get_properties",
|
|
13086
12949
|
```
|
13087
12950
|
|
13088
12951
|
@method getProperties
|
13089
|
-
@
|
12952
|
+
@for Ember
|
12953
|
+
@param {Object} obj
|
13090
12954
|
@param {String...|Array} list of keys to get
|
13091
|
-
@return {
|
12955
|
+
@return {Object}
|
13092
12956
|
*/
|
13093
12957
|
__exports__["default"] = function getProperties(obj) {
|
13094
12958
|
var ret = {};
|
@@ -17627,23 +17491,61 @@ enifed("ember-metal/streams/utils",
|
|
17627
17491
|
"use strict";
|
17628
17492
|
var Stream = __dependency1__["default"];
|
17629
17493
|
|
17494
|
+
/**
|
17495
|
+
Check whether an object is a stream or not
|
17496
|
+
|
17497
|
+
@private
|
17498
|
+
@function isStream
|
17499
|
+
@param {Object|Stream} object object to check whether it is a stream
|
17500
|
+
@return {Boolean} `true` if the object is a stream, `false` otherwise
|
17501
|
+
*/
|
17630
17502
|
function isStream(object) {
|
17631
17503
|
return object && object.isStream;
|
17632
17504
|
}
|
17633
17505
|
|
17634
|
-
__exports__.isStream = isStream
|
17506
|
+
__exports__.isStream = isStream;/**
|
17507
|
+
A method of subscribing to a stream which is safe for use with a non-stream
|
17508
|
+
object. If a non-stream object is passed, the function does nothing.
|
17509
|
+
|
17510
|
+
@private
|
17511
|
+
@function subscribe
|
17512
|
+
@param {Object|Stream} object object or stream to potentially subscribe to
|
17513
|
+
@param {Function} callback function to run when stream value changes
|
17514
|
+
@param {Object} [context] the callback will be executed with this context if it
|
17515
|
+
is provided
|
17516
|
+
*/
|
17517
|
+
function subscribe(object, callback, context) {
|
17635
17518
|
if (object && object.isStream) {
|
17636
17519
|
object.subscribe(callback, context);
|
17637
17520
|
}
|
17638
17521
|
}
|
17639
17522
|
|
17640
|
-
__exports__.subscribe = subscribe
|
17523
|
+
__exports__.subscribe = subscribe;/**
|
17524
|
+
A method of unsubscribing from a stream which is safe for use with a non-stream
|
17525
|
+
object. If a non-stream object is passed, the function does nothing.
|
17526
|
+
|
17527
|
+
@private
|
17528
|
+
@function unsubscribe
|
17529
|
+
@param {Object|Stream} object object or stream to potentially unsubscribe from
|
17530
|
+
@param {Function} callback function originally passed to `subscribe()`
|
17531
|
+
@param {Object} [context] object originally passed to `subscribe()`
|
17532
|
+
*/
|
17533
|
+
function unsubscribe(object, callback, context) {
|
17641
17534
|
if (object && object.isStream) {
|
17642
17535
|
object.unsubscribe(callback, context);
|
17643
17536
|
}
|
17644
17537
|
}
|
17645
17538
|
|
17646
|
-
__exports__.unsubscribe = unsubscribe
|
17539
|
+
__exports__.unsubscribe = unsubscribe;/**
|
17540
|
+
Retrieve the value of a stream, or in the case a non-stream object is passed,
|
17541
|
+
return the object itself.
|
17542
|
+
|
17543
|
+
@private
|
17544
|
+
@function read
|
17545
|
+
@param {Object|Stream} object object to return the value of
|
17546
|
+
@return the stream's current value, or the non-stream object itself
|
17547
|
+
*/
|
17548
|
+
function read(object) {
|
17647
17549
|
if (object && object.isStream) {
|
17648
17550
|
return object.value();
|
17649
17551
|
} else {
|
@@ -17651,7 +17553,18 @@ enifed("ember-metal/streams/utils",
|
|
17651
17553
|
}
|
17652
17554
|
}
|
17653
17555
|
|
17654
|
-
__exports__.read = read
|
17556
|
+
__exports__.read = read;/**
|
17557
|
+
Map an array, replacing any streams with their values.
|
17558
|
+
|
17559
|
+
@private
|
17560
|
+
@function readArray
|
17561
|
+
@param {Array} array The array to read values from
|
17562
|
+
@return {Array} a new array of the same length with the values of non-stream
|
17563
|
+
objects mapped from their original positions untouched, and
|
17564
|
+
the values of stream objects retaining their original position
|
17565
|
+
and replaced with the stream's current value.
|
17566
|
+
*/
|
17567
|
+
function readArray(array) {
|
17655
17568
|
var length = array.length;
|
17656
17569
|
var ret = new Array(length);
|
17657
17570
|
for (var i = 0; i < length; i++) {
|
@@ -17660,7 +17573,19 @@ enifed("ember-metal/streams/utils",
|
|
17660
17573
|
return ret;
|
17661
17574
|
}
|
17662
17575
|
|
17663
|
-
__exports__.readArray = readArray
|
17576
|
+
__exports__.readArray = readArray;/**
|
17577
|
+
Map a hash, replacing any stream property values with the current value of that
|
17578
|
+
stream.
|
17579
|
+
|
17580
|
+
@private
|
17581
|
+
@function readHash
|
17582
|
+
@param {Object} object The hash to read keys and values from
|
17583
|
+
@return {Object} a new object with the same keys as the passed object. The
|
17584
|
+
property values in the new object are the original values in
|
17585
|
+
the case of non-stream objects, and the streams' current
|
17586
|
+
values in the case of stream objects.
|
17587
|
+
*/
|
17588
|
+
function readHash(object) {
|
17664
17589
|
var ret = {};
|
17665
17590
|
for (var key in object) {
|
17666
17591
|
ret[key] = read(object[key]);
|
@@ -17669,9 +17594,13 @@ enifed("ember-metal/streams/utils",
|
|
17669
17594
|
}
|
17670
17595
|
|
17671
17596
|
__exports__.readHash = readHash;/**
|
17672
|
-
|
17673
|
-
|
17674
|
-
|
17597
|
+
Check whether an array contains any stream values
|
17598
|
+
|
17599
|
+
@private
|
17600
|
+
@function scanArray
|
17601
|
+
@param {Array} array array given to a handlebars helper
|
17602
|
+
@return {Boolean} `true` if the array contains a stream/bound value, `false`
|
17603
|
+
otherwise
|
17675
17604
|
*/
|
17676
17605
|
function scanArray(array) {
|
17677
17606
|
var length = array.length;
|
@@ -17688,10 +17617,14 @@ enifed("ember-metal/streams/utils",
|
|
17688
17617
|
}
|
17689
17618
|
|
17690
17619
|
__exports__.scanArray = scanArray;/**
|
17691
|
-
|
17692
|
-
|
17693
|
-
|
17694
|
-
|
17620
|
+
Check whether a hash has any stream property values
|
17621
|
+
|
17622
|
+
@private
|
17623
|
+
@function scanHash
|
17624
|
+
@param {Object} hash "hash" argument given to a handlebars helper
|
17625
|
+
@return {Boolean} `true` if the object contains a stream/bound value, `false`
|
17626
|
+
otherwise
|
17627
|
+
*/
|
17695
17628
|
function scanHash(hash) {
|
17696
17629
|
var containsStream = false;
|
17697
17630
|
|
@@ -17705,14 +17638,26 @@ enifed("ember-metal/streams/utils",
|
|
17705
17638
|
return containsStream;
|
17706
17639
|
}
|
17707
17640
|
|
17708
|
-
__exports__.scanHash = scanHash
|
17709
|
-
|
17710
|
-
|
17641
|
+
__exports__.scanHash = scanHash;/**
|
17642
|
+
Join an array, with any streams replaced by their current values
|
17643
|
+
|
17644
|
+
@private
|
17645
|
+
@function concat
|
17646
|
+
@param {Array} array An array containing zero or more stream objects and
|
17647
|
+
zero or more non-stream objects
|
17648
|
+
@param {String} separator string to be used to join array elements
|
17649
|
+
@return {String} String with array elements concatenated and joined by the
|
17650
|
+
provided separator, and any stream array members having been
|
17651
|
+
replaced by the current value of the stream
|
17652
|
+
*/
|
17653
|
+
function concat(array, separator) {
|
17654
|
+
// TODO: Create subclass ConcatStream < Stream. Defer
|
17655
|
+
// subscribing to streams until the value() is called.
|
17711
17656
|
var hasStream = scanArray(array);
|
17712
17657
|
if (hasStream) {
|
17713
17658
|
var i, l;
|
17714
17659
|
var stream = new Stream(function() {
|
17715
|
-
return readArray(array).join(
|
17660
|
+
return readArray(array).join(separator);
|
17716
17661
|
});
|
17717
17662
|
|
17718
17663
|
for (i = 0, l=array.length; i < l; i++) {
|
@@ -17721,11 +17666,42 @@ enifed("ember-metal/streams/utils",
|
|
17721
17666
|
|
17722
17667
|
return stream;
|
17723
17668
|
} else {
|
17724
|
-
return array.join(
|
17669
|
+
return array.join(separator);
|
17725
17670
|
}
|
17726
17671
|
}
|
17727
17672
|
|
17728
|
-
__exports__.concat = concat
|
17673
|
+
__exports__.concat = concat;/**
|
17674
|
+
Generate a new stream by providing a source stream and a function that can
|
17675
|
+
be used to transform the stream's value. In the case of a non-stream object,
|
17676
|
+
returns the result of the function.
|
17677
|
+
|
17678
|
+
The value to transform would typically be available to the function you pass
|
17679
|
+
to `chain()` via scope. For example:
|
17680
|
+
|
17681
|
+
```javascript
|
17682
|
+
var source = ...; // stream returning a number
|
17683
|
+
// or a numeric (non-stream) object
|
17684
|
+
var result = chain(source, function(){
|
17685
|
+
var currentValue = read(source);
|
17686
|
+
return currentValue + 1;
|
17687
|
+
});
|
17688
|
+
```
|
17689
|
+
|
17690
|
+
In the example, result is a stream if source is a stream, or a number of
|
17691
|
+
source was numeric.
|
17692
|
+
|
17693
|
+
@private
|
17694
|
+
@function chain
|
17695
|
+
@param {Object|Stream} value A stream or non-stream object
|
17696
|
+
@param {Function} fn function to be run when the stream value changes, or to
|
17697
|
+
be run once in the case of a non-stream object
|
17698
|
+
@return {Object|Stream} In the case of a stream `value` parameter, a new
|
17699
|
+
stream that will be updated with the return value of
|
17700
|
+
the provided function `fn`. In the case of a
|
17701
|
+
non-stream object, the return value of the provided
|
17702
|
+
function `fn`.
|
17703
|
+
*/
|
17704
|
+
function chain(value, fn) {
|
17729
17705
|
if (isStream(value)) {
|
17730
17706
|
var stream = new Stream(fn);
|
17731
17707
|
subscribe(value, stream.notify, stream);
|
@@ -17735,7 +17711,7 @@ enifed("ember-metal/streams/utils",
|
|
17735
17711
|
}
|
17736
17712
|
}
|
17737
17713
|
|
17738
|
-
__exports__.
|
17714
|
+
__exports__.chain = chain;
|
17739
17715
|
});
|
17740
17716
|
enifed("ember-metal/utils",
|
17741
17717
|
["ember-metal/core","ember-metal/platform","ember-metal/array","exports"],
|
@@ -19274,6 +19250,16 @@ enifed("ember-routing-htmlbars/helpers/link-to",
|
|
19274
19250
|
{{/link-to}}
|
19275
19251
|
```
|
19276
19252
|
|
19253
|
+
You can also use an inline form of `{{link-to}}` helper by
|
19254
|
+
passing the link text as the first argument
|
19255
|
+
to the helper:
|
19256
|
+
|
19257
|
+
```handlebars
|
19258
|
+
{{link-to 'Great Hamster Photos' 'photoGallery'}}
|
19259
|
+
```
|
19260
|
+
|
19261
|
+
Both will result in:
|
19262
|
+
|
19277
19263
|
```html
|
19278
19264
|
<a href="/hamster-photos">
|
19279
19265
|
Great Hamster Photos
|
@@ -23962,8 +23948,12 @@ enifed("ember-routing/system/route",
|
|
23962
23948
|
|
23963
23949
|
var name = params[0], object = {};
|
23964
23950
|
|
23965
|
-
if (
|
23966
|
-
|
23951
|
+
if (params.length === 1) {
|
23952
|
+
if (name in model) {
|
23953
|
+
object[name] = get(model, name);
|
23954
|
+
} else if (/_id$/.test(name)) {
|
23955
|
+
object[name] = get(model, "id");
|
23956
|
+
}
|
23967
23957
|
} else {
|
23968
23958
|
object = getProperties(model, params);
|
23969
23959
|
}
|
@@ -29917,7 +29907,7 @@ enifed("ember-runtime/mixins/deferred",
|
|
29917
29907
|
},
|
29918
29908
|
|
29919
29909
|
_deferred: computed(function() {
|
29920
|
-
Ember.deprecate('Usage of Ember.DeferredMixin or Ember.Deferred is deprecated.', this._suppressDeferredDeprecation);
|
29910
|
+
Ember.deprecate('Usage of Ember.DeferredMixin or Ember.Deferred is deprecated.', this._suppressDeferredDeprecation, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-ember-deferredmixin-and-ember-deferred' });
|
29921
29911
|
|
29922
29912
|
return RSVP.defer('Ember: DeferredMixin - ' + this);
|
29923
29913
|
})
|
@@ -30685,7 +30675,7 @@ enifed("ember-runtime/mixins/enumerable",
|
|
30685
30675
|
@method isAny
|
30686
30676
|
@param {String} key the property to test
|
30687
30677
|
@param {String} [value] optional value to test against.
|
30688
|
-
@return {Boolean}
|
30678
|
+
@return {Boolean}
|
30689
30679
|
@since 1.3.0
|
30690
30680
|
*/
|
30691
30681
|
isAny: function(key, value) {
|
@@ -30696,7 +30686,7 @@ enifed("ember-runtime/mixins/enumerable",
|
|
30696
30686
|
@method anyBy
|
30697
30687
|
@param {String} key the property to test
|
30698
30688
|
@param {String} [value] optional value to test against.
|
30699
|
-
@return {Boolean}
|
30689
|
+
@return {Boolean}
|
30700
30690
|
@deprecated Use `isAny` instead
|
30701
30691
|
*/
|
30702
30692
|
anyBy: aliasMethod('isAny'),
|
@@ -30705,7 +30695,7 @@ enifed("ember-runtime/mixins/enumerable",
|
|
30705
30695
|
@method someProperty
|
30706
30696
|
@param {String} key the property to test
|
30707
30697
|
@param {String} [value] optional value to test against.
|
30708
|
-
@return {Boolean}
|
30698
|
+
@return {Boolean}
|
30709
30699
|
@deprecated Use `isAny` instead
|
30710
30700
|
*/
|
30711
30701
|
someProperty: aliasMethod('isAny'),
|
@@ -32163,7 +32153,7 @@ enifed("ember-runtime/mixins/observable",
|
|
32163
32153
|
},
|
32164
32154
|
|
32165
32155
|
addBeforeObserver: function(key, target, method) {
|
32166
|
-
Ember.deprecate('Before observers are deprecated and will be removed in a future release. If you want to keep track of previous values you have to implement it yourself.
|
32156
|
+
Ember.deprecate('Before observers are deprecated and will be removed in a future release. If you want to keep track of previous values you have to implement it yourself.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-beforeobservers' });
|
32167
32157
|
addBeforeObserver(this, key, target, method);
|
32168
32158
|
},
|
32169
32159
|
|
@@ -33406,8 +33396,8 @@ enifed("ember-runtime/system/container",
|
|
33406
33396
|
__exports__["default"] = Container;
|
33407
33397
|
});
|
33408
33398
|
enifed("ember-runtime/system/core_object",
|
33409
|
-
["ember-metal/core","ember-metal/property_get","ember-metal/utils","ember-metal/platform","ember-metal/chains","ember-metal/events","ember-metal/mixin","ember-metal/enumerable_utils","ember-metal/error","ember-metal/keys","ember-runtime/mixins/action_handler","ember-metal/properties","ember-metal/binding","ember-metal/computed","ember-metal/injected_property","ember-metal/run_loop","ember-metal/watching","ember-runtime/inject","exports"],
|
33410
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __exports__) {
|
33399
|
+
["ember-metal/core","ember-metal/merge","ember-metal/property_get","ember-metal/utils","ember-metal/platform","ember-metal/chains","ember-metal/events","ember-metal/mixin","ember-metal/enumerable_utils","ember-metal/error","ember-metal/keys","ember-runtime/mixins/action_handler","ember-metal/properties","ember-metal/binding","ember-metal/computed","ember-metal/injected_property","ember-metal/run_loop","ember-metal/watching","ember-runtime/inject","exports"],
|
33400
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __dependency19__, __exports__) {
|
33411
33401
|
// Remove "use strict"; from transpiled module until
|
33412
33402
|
// https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
|
33413
33403
|
//
|
@@ -33419,38 +33409,39 @@ enifed("ember-runtime/system/core_object",
|
|
33419
33409
|
*/
|
33420
33410
|
|
33421
33411
|
var Ember = __dependency1__["default"];
|
33412
|
+
var merge = __dependency2__["default"];
|
33422
33413
|
// Ember.assert, Ember.config
|
33423
33414
|
|
33424
33415
|
// NOTE: this object should never be included directly. Instead use `Ember.Object`.
|
33425
33416
|
// We only define this separately so that `Ember.Set` can depend on it.
|
33426
|
-
var get =
|
33427
|
-
var guidFor =
|
33428
|
-
var apply =
|
33429
|
-
var o_create =
|
33430
|
-
var generateGuid =
|
33431
|
-
var GUID_KEY =
|
33432
|
-
var meta =
|
33433
|
-
var makeArray =
|
33434
|
-
var finishChains =
|
33435
|
-
var sendEvent =
|
33436
|
-
var IS_BINDING =
|
33437
|
-
var Mixin =
|
33438
|
-
var required =
|
33439
|
-
var indexOf =
|
33440
|
-
var EmberError =
|
33441
|
-
var o_defineProperty =
|
33442
|
-
var keys =
|
33443
|
-
var ActionHandler =
|
33444
|
-
var defineProperty =
|
33445
|
-
var Binding =
|
33446
|
-
var ComputedProperty =
|
33447
|
-
var computed =
|
33448
|
-
var InjectedProperty =
|
33449
|
-
var run =
|
33450
|
-
var destroy =
|
33417
|
+
var get = __dependency3__.get;
|
33418
|
+
var guidFor = __dependency4__.guidFor;
|
33419
|
+
var apply = __dependency4__.apply;
|
33420
|
+
var o_create = __dependency5__.create;
|
33421
|
+
var generateGuid = __dependency4__.generateGuid;
|
33422
|
+
var GUID_KEY = __dependency4__.GUID_KEY;
|
33423
|
+
var meta = __dependency4__.meta;
|
33424
|
+
var makeArray = __dependency4__.makeArray;
|
33425
|
+
var finishChains = __dependency6__.finishChains;
|
33426
|
+
var sendEvent = __dependency7__.sendEvent;
|
33427
|
+
var IS_BINDING = __dependency8__.IS_BINDING;
|
33428
|
+
var Mixin = __dependency8__.Mixin;
|
33429
|
+
var required = __dependency8__.required;
|
33430
|
+
var indexOf = __dependency9__.indexOf;
|
33431
|
+
var EmberError = __dependency10__["default"];
|
33432
|
+
var o_defineProperty = __dependency5__.defineProperty;
|
33433
|
+
var keys = __dependency11__["default"];
|
33434
|
+
var ActionHandler = __dependency12__["default"];
|
33435
|
+
var defineProperty = __dependency13__.defineProperty;
|
33436
|
+
var Binding = __dependency14__.Binding;
|
33437
|
+
var ComputedProperty = __dependency15__.ComputedProperty;
|
33438
|
+
var computed = __dependency15__.computed;
|
33439
|
+
var InjectedProperty = __dependency16__["default"];
|
33440
|
+
var run = __dependency17__["default"];
|
33441
|
+
var destroy = __dependency18__.destroy;
|
33451
33442
|
var K = __dependency1__.K;
|
33452
|
-
var hasPropertyAccessors =
|
33453
|
-
var validatePropertyInjections =
|
33443
|
+
var hasPropertyAccessors = __dependency5__.hasPropertyAccessors;
|
33444
|
+
var validatePropertyInjections = __dependency19__.validatePropertyInjections;
|
33454
33445
|
|
33455
33446
|
var schedule = run.schedule;
|
33456
33447
|
var applyMixin = Mixin._apply;
|
@@ -33502,6 +33493,7 @@ enifed("ember-runtime/system/core_object",
|
|
33502
33493
|
initProperties = null;
|
33503
33494
|
|
33504
33495
|
var concatenatedProperties = this.concatenatedProperties;
|
33496
|
+
var mergedProperties = this.mergedProperties;
|
33505
33497
|
|
33506
33498
|
for (var i = 0, l = props.length; i < l; i++) {
|
33507
33499
|
var properties = props[i];
|
@@ -33554,6 +33546,14 @@ enifed("ember-runtime/system/core_object",
|
|
33554
33546
|
}
|
33555
33547
|
}
|
33556
33548
|
|
33549
|
+
if (mergedProperties &&
|
33550
|
+
mergedProperties.length &&
|
33551
|
+
indexOf(mergedProperties, keyName) >= 0) {
|
33552
|
+
var originalValue = this[keyName];
|
33553
|
+
|
33554
|
+
value = merge(originalValue, value);
|
33555
|
+
}
|
33556
|
+
|
33557
33557
|
if (desc) {
|
33558
33558
|
desc.set(this, keyName, value);
|
33559
33559
|
} else {
|
@@ -33719,8 +33719,8 @@ enifed("ember-runtime/system/core_object",
|
|
33719
33719
|
view.get('classNames'); // ['ember-view', 'bar', 'foo', 'baz']
|
33720
33720
|
```
|
33721
33721
|
|
33722
|
-
Using the `concatenatedProperties` property, we can tell
|
33723
|
-
|
33722
|
+
Using the `concatenatedProperties` property, we can tell Ember to mix the
|
33723
|
+
content of the properties.
|
33724
33724
|
|
33725
33725
|
In `Ember.View` the `classNameBindings` and `attributeBindings` properties
|
33726
33726
|
are also concatenated, in addition to `classNames`.
|
@@ -34324,7 +34324,7 @@ enifed("ember-runtime/system/deferred",
|
|
34324
34324
|
|
34325
34325
|
var Deferred = EmberObject.extend(DeferredMixin, {
|
34326
34326
|
init: function() {
|
34327
|
-
Ember.deprecate('Usage of Ember.Deferred is deprecated.');
|
34327
|
+
Ember.deprecate('Usage of Ember.Deferred is deprecated.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-ember-deferredmixin-and-ember-deferred' });
|
34328
34328
|
this._super();
|
34329
34329
|
}
|
34330
34330
|
});
|
@@ -36601,6 +36601,11 @@ enifed("ember-template-compiler/plugins/transform-each-in-to-hash",
|
|
36601
36601
|
|
36602
36602
|
walker.visit(ast, function(node) {
|
36603
36603
|
if (pluginContext.validate(node)) {
|
36604
|
+
|
36605
|
+
if (node.program && node.program.blockParams.length) {
|
36606
|
+
throw new Error('You cannot use keyword (`{{each foo in bar}}`) and block params (`{{each bar as |foo|}}`) at the same time.');
|
36607
|
+
}
|
36608
|
+
|
36604
36609
|
var removedParams = node.sexpr.params.splice(0, 2);
|
36605
36610
|
var keyword = removedParams[0].original;
|
36606
36611
|
|
@@ -36672,6 +36677,11 @@ enifed("ember-template-compiler/plugins/transform-with-as-to-hash",
|
|
36672
36677
|
|
36673
36678
|
walker.visit(ast, function(node) {
|
36674
36679
|
if (pluginContext.validate(node)) {
|
36680
|
+
|
36681
|
+
if (node.program && node.program.blockParams.length) {
|
36682
|
+
throw new Error('You cannot use keyword (`{{with foo as bar}}`) and block params (`{{with foo as |bar|}}`) at the same time.');
|
36683
|
+
}
|
36684
|
+
|
36675
36685
|
var removedParams = node.sexpr.params.splice(1, 2);
|
36676
36686
|
var keyword = removedParams[1].original;
|
36677
36687
|
node.program.blockParams = [ keyword ];
|
@@ -38729,7 +38739,7 @@ enifed("ember-views/streams/class_name_binding",
|
|
38729
38739
|
["ember-metal/streams/utils","ember-metal/property_get","ember-runtime/system/string","ember-metal/utils","exports"],
|
38730
38740
|
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
38731
38741
|
"use strict";
|
38732
|
-
var
|
38742
|
+
var chain = __dependency1__.chain;
|
38733
38743
|
var read = __dependency1__.read;
|
38734
38744
|
var get = __dependency2__.get;
|
38735
38745
|
var dasherize = __dependency3__.dasherize;
|
@@ -38857,7 +38867,7 @@ enifed("ember-views/streams/class_name_binding",
|
|
38857
38867
|
);
|
38858
38868
|
} else {
|
38859
38869
|
var pathValue = view.getStream(prefix+parsedPath.path);
|
38860
|
-
return
|
38870
|
+
return chain(pathValue, function() {
|
38861
38871
|
return classStringForValue(
|
38862
38872
|
parsedPath.path,
|
38863
38873
|
read(pathValue),
|
@@ -39097,7 +39107,7 @@ enifed("ember-views/streams/utils",
|
|
39097
39107
|
if (typeof value === 'string') {
|
39098
39108
|
if (isGlobal(value)) {
|
39099
39109
|
viewClass = get(null, value);
|
39100
|
-
Ember.deprecate('Resolved the view "'+value+'" on the global context. Pass a view name to be looked up on the container instead, such as {{view "select"}}. http://emberjs.com/guides/deprecations
|
39110
|
+
Ember.deprecate('Resolved the view "'+value+'" on the global context. Pass a view name to be looked up on the container instead, such as {{view "select"}}.', !viewClass, { url: 'http://emberjs.com/guides/deprecations/#toc_global-lookup-of-views' });
|
39101
39111
|
} else {
|
39102
39112
|
Ember.assert("View requires a container to resolve views not passed in through the context", !!container);
|
39103
39113
|
viewClass = container.lookupFactory('view:'+value);
|
@@ -45157,7 +45167,7 @@ enifed("ember-views/views/view",
|
|
45157
45167
|
Ember.assert("Only arrays are allowed for 'classNameBindings'", typeOf(this.classNameBindings) === 'array');
|
45158
45168
|
this.classNameBindings = emberA(this.classNameBindings.slice());
|
45159
45169
|
|
45160
|
-
Ember.assert("Only arrays are allowed for 'classNames'", typeOf(this.classNames) === 'array');
|
45170
|
+
Ember.assert("Only arrays of static class strings are allowed for 'classNames'. For dynamic classes, use 'classNameBindings'.", typeOf(this.classNames) === 'array');
|
45161
45171
|
this.classNames = emberA(this.classNames.slice());
|
45162
45172
|
},
|
45163
45173
|
|
@@ -45817,9 +45827,13 @@ enifed("htmlbars-compiler/fragment-javascript-compiler",
|
|
45817
45827
|
this.source.push(this.indent+' return '+el+';\n');
|
45818
45828
|
};
|
45819
45829
|
|
45820
|
-
FragmentJavaScriptCompiler.prototype.setAttribute = function(name, value) {
|
45830
|
+
FragmentJavaScriptCompiler.prototype.setAttribute = function(name, value, namespace) {
|
45821
45831
|
var el = 'el'+this.depth;
|
45822
|
-
|
45832
|
+
if (namespace) {
|
45833
|
+
this.source.push(this.indent+' dom.setAttributeNS('+el+','+string(namespace)+','+string(name)+','+string(value)+');\n');
|
45834
|
+
} else {
|
45835
|
+
this.source.push(this.indent+' dom.setAttribute('+el+','+string(name)+','+string(value)+');\n');
|
45836
|
+
}
|
45823
45837
|
};
|
45824
45838
|
|
45825
45839
|
FragmentJavaScriptCompiler.prototype.appendChild = function() {
|
@@ -45857,6 +45871,7 @@ enifed("htmlbars-compiler/fragment-opcode-compiler",
|
|
45857
45871
|
"use strict";
|
45858
45872
|
var TemplateVisitor = __dependency1__["default"];
|
45859
45873
|
var processOpcodes = __dependency2__.processOpcodes;
|
45874
|
+
var getNamespace = __dependency2__.getNamespace;
|
45860
45875
|
var forEach = __dependency3__.forEach;
|
45861
45876
|
|
45862
45877
|
function FragmentOpcodeCompiler() {
|
@@ -45916,7 +45931,10 @@ enifed("htmlbars-compiler/fragment-opcode-compiler",
|
|
45916
45931
|
|
45917
45932
|
FragmentOpcodeCompiler.prototype.attribute = function(attr) {
|
45918
45933
|
if (attr.value.type === 'TextNode') {
|
45919
|
-
|
45934
|
+
|
45935
|
+
var namespace = getNamespace(attr.name) || null;
|
45936
|
+
|
45937
|
+
this.opcode('setAttribute', [attr.name, attr.value.chars, namespace]);
|
45920
45938
|
}
|
45921
45939
|
};
|
45922
45940
|
|
@@ -46136,18 +46154,18 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
46136
46154
|
this.morphs.push(['morph' + morphNum, morph]);
|
46137
46155
|
};
|
46138
46156
|
|
46139
|
-
prototype.createAttrMorph = function(attrMorphNum, elementNum, name, escaped) {
|
46157
|
+
prototype.createAttrMorph = function(attrMorphNum, elementNum, name, escaped, namespace) {
|
46140
46158
|
var morphMethod = escaped ? 'createAttrMorph' : 'createUnsafeAttrMorph';
|
46141
|
-
var morph = "dom."+morphMethod+"(element"+elementNum+", '"+name+"')";
|
46159
|
+
var morph = "dom."+morphMethod+"(element"+elementNum+", '"+name+(namespace ? "', '"+namespace : '')+"')";
|
46142
46160
|
this.morphs.push(['attrMorph' + attrMorphNum, morph]);
|
46143
46161
|
};
|
46144
46162
|
|
46145
46163
|
prototype.repairClonedNode = function(blankChildTextNodes, isElementChecked) {
|
46146
46164
|
var parent = this.getParent(),
|
46147
|
-
processing = 'dom.repairClonedNode('+parent+','+
|
46165
|
+
processing = 'if (this.cachedFragment) { dom.repairClonedNode('+parent+','+
|
46148
46166
|
array(blankChildTextNodes)+
|
46149
46167
|
( isElementChecked ? ',true' : '' )+
|
46150
|
-
');';
|
46168
|
+
'); }';
|
46151
46169
|
this.fragmentProcessing.push(
|
46152
46170
|
processing
|
46153
46171
|
);
|
@@ -46191,6 +46209,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46191
46209
|
"use strict";
|
46192
46210
|
var TemplateVisitor = __dependency1__["default"];
|
46193
46211
|
var processOpcodes = __dependency2__.processOpcodes;
|
46212
|
+
var getNamespace = __dependency2__.getNamespace;
|
46194
46213
|
var forEach = __dependency3__.forEach;
|
46195
46214
|
var isHelper = __dependency4__.isHelper;
|
46196
46215
|
|
@@ -46364,6 +46383,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46364
46383
|
HydrationOpcodeCompiler.prototype.attribute = function(attr) {
|
46365
46384
|
var value = attr.value;
|
46366
46385
|
var escaped = true;
|
46386
|
+
var namespace = getNamespace(attr.name) || null;
|
46367
46387
|
|
46368
46388
|
// TODO: Introduce context specific AST nodes to avoid switching here.
|
46369
46389
|
if (value.type === 'TextNode') {
|
@@ -46384,7 +46404,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46384
46404
|
}
|
46385
46405
|
|
46386
46406
|
var attrMorphNum = this.attrMorphNum++;
|
46387
|
-
this.opcode('createAttrMorph', attrMorphNum, this.elementNum, attr.name, escaped);
|
46407
|
+
this.opcode('createAttrMorph', attrMorphNum, this.elementNum, attr.name, escaped, namespace);
|
46388
46408
|
this.opcode('printAttributeHook', attrMorphNum, this.elementNum);
|
46389
46409
|
};
|
46390
46410
|
|
@@ -46920,7 +46940,23 @@ enifed("htmlbars-compiler/utils",
|
|
46920
46940
|
}
|
46921
46941
|
}
|
46922
46942
|
|
46923
|
-
__exports__.processOpcodes = processOpcodes
|
46943
|
+
__exports__.processOpcodes = processOpcodes;// ref http://dev.w3.org/html5/spec-LC/namespaces.html
|
46944
|
+
var defaultNamespaces = {
|
46945
|
+
html: 'http://www.w3.org/1999/xhtml',
|
46946
|
+
mathml: 'http://www.w3.org/1998/Math/MathML',
|
46947
|
+
svg: 'http://www.w3.org/2000/svg',
|
46948
|
+
xlink: 'http://www.w3.org/1999/xlink',
|
46949
|
+
xml: 'http://www.w3.org/XML/1998/namespace'
|
46950
|
+
};
|
46951
|
+
|
46952
|
+
function getNamespace(attrName) {
|
46953
|
+
var parts = attrName.split(':');
|
46954
|
+
if (parts.length > 1) {
|
46955
|
+
return defaultNamespaces[parts[0]];
|
46956
|
+
}
|
46957
|
+
}
|
46958
|
+
|
46959
|
+
__exports__.getNamespace = getNamespace;
|
46924
46960
|
});
|
46925
46961
|
enifed("htmlbars-syntax",
|
46926
46962
|
["./htmlbars-syntax/walker","./htmlbars-syntax/builders","./htmlbars-syntax/parser","exports"],
|
@@ -48748,14 +48784,18 @@ enifed("htmlbars-syntax/token-handlers",
|
|
48748
48784
|
__exports__["default"] = tokenHandlers;
|
48749
48785
|
});
|
48750
48786
|
enifed("htmlbars-syntax/tokenizer",
|
48751
|
-
["../simple-html-tokenizer","./utils","./builders","exports"],
|
48752
|
-
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
48787
|
+
["../simple-html-tokenizer","./utils","../htmlbars-util/array-utils","./builders","exports"],
|
48788
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
48753
48789
|
"use strict";
|
48754
48790
|
var Tokenizer = __dependency1__.Tokenizer;
|
48755
48791
|
var isHelper = __dependency2__.isHelper;
|
48756
|
-
var
|
48792
|
+
var map = __dependency3__.map;
|
48793
|
+
var builders = __dependency4__["default"];
|
48757
48794
|
|
48758
48795
|
Tokenizer.prototype.createAttribute = function(char) {
|
48796
|
+
if (this.token.type === 'EndTag') {
|
48797
|
+
throw new Error('Invalid end tag: closing tag must not have attributes, in ' + formatTokenInfo(this) + '.');
|
48798
|
+
}
|
48759
48799
|
this.currentAttribute = builders.attr(char.toLowerCase(), [], null);
|
48760
48800
|
this.token.attributes.push(this.currentAttribute);
|
48761
48801
|
this.state = 'attributeName';
|
@@ -48772,12 +48812,13 @@ enifed("htmlbars-syntax/tokenizer",
|
|
48772
48812
|
Tokenizer.prototype.addToAttributeValue = function(char) {
|
48773
48813
|
var value = this.currentAttribute.value;
|
48774
48814
|
|
48815
|
+
if (!this.currentAttribute.quoted && char === '/') {
|
48816
|
+
throw new Error("A space is required between an unquoted attribute value and `/`, in " + formatTokenInfo(this) +
|
48817
|
+
'.');
|
48818
|
+
}
|
48775
48819
|
if (!this.currentAttribute.quoted && value.length > 0 &&
|
48776
48820
|
(char.type === 'MustacheStatement' || value[0].type === 'MustacheStatement')) {
|
48777
|
-
|
48778
|
-
var mustache = char.type === 'MustacheStatement' ? char : value[0],
|
48779
|
-
line = mustache.loc.start.line;
|
48780
|
-
throw new Error("Unquoted attribute value must be a single string or mustache (line " + line + ")");
|
48821
|
+
throw new Error("Unquoted attribute value must be a single string or mustache (on line " + this.line + ")");
|
48781
48822
|
}
|
48782
48823
|
|
48783
48824
|
if (typeof char === 'object') {
|
@@ -48810,14 +48851,16 @@ enifed("htmlbars-syntax/tokenizer",
|
|
48810
48851
|
|
48811
48852
|
function prepareAttributeValue(attr) {
|
48812
48853
|
var parts = attr.value;
|
48813
|
-
|
48854
|
+
var length = parts.length;
|
48855
|
+
|
48856
|
+
if (length === 0) {
|
48814
48857
|
return builders.text('');
|
48815
|
-
} else if (
|
48858
|
+
} else if (length === 1 && parts[0].type === "TextNode") {
|
48816
48859
|
return parts[0];
|
48817
48860
|
} else if (!attr.quoted) {
|
48818
48861
|
return parts[0];
|
48819
48862
|
} else {
|
48820
|
-
return builders.concat(
|
48863
|
+
return builders.concat(map(parts, prepareConcatPart));
|
48821
48864
|
}
|
48822
48865
|
}
|
48823
48866
|
|
@@ -48830,6 +48873,10 @@ enifed("htmlbars-syntax/tokenizer",
|
|
48830
48873
|
}
|
48831
48874
|
}
|
48832
48875
|
|
48876
|
+
function formatTokenInfo(tokenizer) {
|
48877
|
+
return '`' + tokenizer.token.tagName + '` (on line ' + tokenizer.line + ')';
|
48878
|
+
}
|
48879
|
+
|
48833
48880
|
function unwrapMustache(mustache) {
|
48834
48881
|
if (isHelper(mustache.sexpr)) {
|
48835
48882
|
return mustache.sexpr;
|
@@ -49035,6 +49082,16 @@ enifed("htmlbars-test-helpers",
|
|
49035
49082
|
var ie8InnerHTMLTestElement = document.createElement('div');
|
49036
49083
|
ie8InnerHTMLTestElement.setAttribute('id', 'womp');
|
49037
49084
|
var ie8InnerHTML = (ie8InnerHTMLTestElement.outerHTML.indexOf('id=womp') > -1);
|
49085
|
+
|
49086
|
+
// detect side-effects of cloning svg elements in IE9-11
|
49087
|
+
var ieSVGInnerHTML = (function () {
|
49088
|
+
var div = document.createElement('div');
|
49089
|
+
var node = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
49090
|
+
div.appendChild(node);
|
49091
|
+
var clone = div.cloneNode(true);
|
49092
|
+
return clone.innerHTML === '<svg xmlns="http://www.w3.org/2000/svg" />';
|
49093
|
+
})();
|
49094
|
+
|
49038
49095
|
function normalizeInnerHTML(actualHTML) {
|
49039
49096
|
if (ie8InnerHTML) {
|
49040
49097
|
// drop newlines in IE8
|
@@ -49048,6 +49105,16 @@ enifed("htmlbars-test-helpers",
|
|
49048
49105
|
return 'id="'+id+'"';
|
49049
49106
|
});
|
49050
49107
|
}
|
49108
|
+
if (ieSVGInnerHTML) {
|
49109
|
+
// Replace `<svg xmlns="http://www.w3.org/2000/svg" height="50%" />` with `<svg height="50%"></svg>`, etc.
|
49110
|
+
// drop namespace attribute
|
49111
|
+
actualHTML = actualHTML.replace(/ xmlns="[^"]+"/, '');
|
49112
|
+
// replace self-closing elements
|
49113
|
+
actualHTML = actualHTML.replace(/<([A-Z]+) [^\/>]*\/>/gi, function(tag, tagName) {
|
49114
|
+
return tag.slice(0, tag.length - 3) + '></' + tagName + '>';
|
49115
|
+
});
|
49116
|
+
}
|
49117
|
+
|
49051
49118
|
return actualHTML;
|
49052
49119
|
}
|
49053
49120
|
|
@@ -49076,19 +49143,30 @@ enifed("htmlbars-util/array-utils",
|
|
49076
49143
|
function(__exports__) {
|
49077
49144
|
"use strict";
|
49078
49145
|
function forEach(array, callback, binding) {
|
49079
|
-
var i;
|
49146
|
+
var i, l;
|
49080
49147
|
if (binding === undefined) {
|
49081
|
-
for (i = 0
|
49148
|
+
for (i = 0, l = array.length; i < l; i++) {
|
49082
49149
|
callback(array[i], i, array);
|
49083
49150
|
}
|
49084
49151
|
} else {
|
49085
|
-
for (i = 0
|
49152
|
+
for (i = 0, l = array.length; i < l; i++) {
|
49086
49153
|
callback.call(binding, array[i], i, array);
|
49087
49154
|
}
|
49088
49155
|
}
|
49089
49156
|
}
|
49090
49157
|
|
49091
|
-
__exports__.forEach = forEach;
|
49158
|
+
__exports__.forEach = forEach;function map(array, callback) {
|
49159
|
+
var output = [];
|
49160
|
+
var i, l;
|
49161
|
+
|
49162
|
+
for (i = 0, l = array.length; i < l; i++) {
|
49163
|
+
output.push(callback(array[i], i, array));
|
49164
|
+
}
|
49165
|
+
|
49166
|
+
return output;
|
49167
|
+
}
|
49168
|
+
|
49169
|
+
__exports__.map = map;
|
49092
49170
|
});
|
49093
49171
|
enifed("htmlbars-util/handlebars/safe-string",
|
49094
49172
|
["exports"],
|
@@ -49275,6 +49353,7 @@ enifed("morph/attr-morph",
|
|
49275
49353
|
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
49276
49354
|
"use strict";
|
49277
49355
|
var sanitizeAttributeValue = __dependency1__.sanitizeAttributeValue;
|
49356
|
+
var isAttrRemovalValue = __dependency2__.isAttrRemovalValue;
|
49278
49357
|
var normalizeProperty = __dependency2__.normalizeProperty;
|
49279
49358
|
var svgNamespace = __dependency3__.svgNamespace;
|
49280
49359
|
|
@@ -49283,34 +49362,48 @@ enifed("morph/attr-morph",
|
|
49283
49362
|
}
|
49284
49363
|
|
49285
49364
|
function updateAttribute(value) {
|
49286
|
-
if (value
|
49365
|
+
if (isAttrRemovalValue(value)) {
|
49287
49366
|
this.domHelper.removeAttribute(this.element, this.attrName);
|
49288
49367
|
} else {
|
49289
49368
|
this.domHelper.setAttribute(this.element, this.attrName, value);
|
49290
49369
|
}
|
49291
49370
|
}
|
49292
49371
|
|
49293
|
-
function
|
49372
|
+
function updateAttributeNS(value) {
|
49373
|
+
if (isAttrRemovalValue(value)) {
|
49374
|
+
this.domHelper.removeAttribute(this.element, this.attrName);
|
49375
|
+
} else {
|
49376
|
+
this.domHelper.setAttributeNS(this.element, this.namespace, this.attrName, value);
|
49377
|
+
}
|
49378
|
+
}
|
49379
|
+
|
49380
|
+
function AttrMorph(element, attrName, domHelper, namespace) {
|
49294
49381
|
this.element = element;
|
49295
49382
|
this.domHelper = domHelper;
|
49383
|
+
this.namespace = namespace || null;
|
49296
49384
|
this.escaped = true;
|
49297
49385
|
|
49298
49386
|
var normalizedAttrName = normalizeProperty(this.element, attrName);
|
49299
|
-
if (
|
49387
|
+
if (this.namespace) {
|
49388
|
+
this._update = updateAttributeNS;
|
49300
49389
|
this.attrName = attrName;
|
49301
|
-
this._update = updateAttribute;
|
49302
49390
|
} else {
|
49303
|
-
|
49304
|
-
|
49391
|
+
if (element.namespaceURI === svgNamespace || attrName === 'style' || !normalizedAttrName) {
|
49392
|
+
this.attrName = attrName;
|
49393
|
+
this._update = updateAttribute;
|
49394
|
+
} else {
|
49395
|
+
this.attrName = normalizedAttrName;
|
49396
|
+
this._update = updateProperty;
|
49397
|
+
}
|
49305
49398
|
}
|
49306
49399
|
}
|
49307
49400
|
|
49308
49401
|
AttrMorph.prototype.setContent = function (value) {
|
49309
49402
|
if (this.escaped) {
|
49310
49403
|
var sanitized = sanitizeAttributeValue(this.element, this.attrName, value);
|
49311
|
-
this._update(sanitized);
|
49404
|
+
this._update(sanitized, this.namespace);
|
49312
49405
|
} else {
|
49313
|
-
this._update(value);
|
49406
|
+
this._update(value, this.namespace);
|
49314
49407
|
}
|
49315
49408
|
};
|
49316
49409
|
|
@@ -49384,6 +49477,7 @@ enifed("morph/dom-helper",
|
|
49384
49477
|
var addClasses = __dependency4__.addClasses;
|
49385
49478
|
var removeClasses = __dependency4__.removeClasses;
|
49386
49479
|
var normalizeProperty = __dependency5__.normalizeProperty;
|
49480
|
+
var isAttrRemovalValue = __dependency5__.isAttrRemovalValue;
|
49387
49481
|
|
49388
49482
|
var doc = typeof document === 'undefined' ? false : document;
|
49389
49483
|
|
@@ -49401,10 +49495,6 @@ enifed("morph/dom-helper",
|
|
49401
49495
|
return !clonedElement.checked;
|
49402
49496
|
})(doc);
|
49403
49497
|
|
49404
|
-
function isSVG(ns){
|
49405
|
-
return ns === svgNamespace;
|
49406
|
-
}
|
49407
|
-
|
49408
49498
|
// This is not the namespace of the element, but of
|
49409
49499
|
// the elements inside that elements.
|
49410
49500
|
function interiorNamespace(element){
|
@@ -49510,18 +49600,26 @@ enifed("morph/dom-helper",
|
|
49510
49600
|
var child = element;
|
49511
49601
|
|
49512
49602
|
for (var i = 0; i < indices.length; i++) {
|
49513
|
-
child = child.childNodes
|
49603
|
+
child = child.childNodes.item(indices[i]);
|
49514
49604
|
}
|
49515
49605
|
|
49516
49606
|
return child;
|
49517
49607
|
};
|
49518
49608
|
|
49609
|
+
prototype.childAtIndex = function(element, index) {
|
49610
|
+
return element.childNodes.item(index);
|
49611
|
+
};
|
49612
|
+
|
49519
49613
|
prototype.appendText = function(element, text) {
|
49520
49614
|
return element.appendChild(this.document.createTextNode(text));
|
49521
49615
|
};
|
49522
49616
|
|
49523
49617
|
prototype.setAttribute = function(element, name, value) {
|
49524
|
-
element.setAttribute(name, value);
|
49618
|
+
element.setAttribute(name, String(value));
|
49619
|
+
};
|
49620
|
+
|
49621
|
+
prototype.setAttributeNS = function(element, namespace, name, value) {
|
49622
|
+
element.setAttributeNS(namespace, name, String(value));
|
49525
49623
|
};
|
49526
49624
|
|
49527
49625
|
prototype.removeAttribute = function(element, name) {
|
@@ -49532,23 +49630,31 @@ enifed("morph/dom-helper",
|
|
49532
49630
|
element[name] = value;
|
49533
49631
|
};
|
49534
49632
|
|
49535
|
-
prototype.setProperty = function(element, name, value) {
|
49633
|
+
prototype.setProperty = function(element, name, value, namespace) {
|
49536
49634
|
var lowercaseName = name.toLowerCase();
|
49537
49635
|
if (element.namespaceURI === svgNamespace || lowercaseName === 'style') {
|
49538
|
-
if (value
|
49636
|
+
if (isAttrRemovalValue(value)) {
|
49539
49637
|
element.removeAttribute(name);
|
49540
49638
|
} else {
|
49541
|
-
|
49639
|
+
if (namespace) {
|
49640
|
+
element.setAttributeNS(namespace, name, value);
|
49641
|
+
} else {
|
49642
|
+
element.setAttribute(name, value);
|
49643
|
+
}
|
49542
49644
|
}
|
49543
49645
|
} else {
|
49544
49646
|
var normalized = normalizeProperty(element, name);
|
49545
49647
|
if (normalized) {
|
49546
49648
|
element[normalized] = value;
|
49547
49649
|
} else {
|
49548
|
-
if (value
|
49650
|
+
if (isAttrRemovalValue(value)) {
|
49549
49651
|
element.removeAttribute(name);
|
49550
49652
|
} else {
|
49551
|
-
|
49653
|
+
if (namespace) {
|
49654
|
+
element.setAttributeNS(namespace, name, value);
|
49655
|
+
} else {
|
49656
|
+
element.setAttribute(name, value);
|
49657
|
+
}
|
49552
49658
|
}
|
49553
49659
|
}
|
49554
49660
|
}
|
@@ -49606,7 +49712,7 @@ enifed("morph/dom-helper",
|
|
49606
49712
|
for (var i=0, len=blankChildTextNodes.length;i<len;i++){
|
49607
49713
|
var textNode = this.document.createTextNode(''),
|
49608
49714
|
offset = blankChildTextNodes[i],
|
49609
|
-
before = element
|
49715
|
+
before = this.childAtIndex(element, offset);
|
49610
49716
|
if (before) {
|
49611
49717
|
element.insertBefore(textNode, before);
|
49612
49718
|
} else {
|
@@ -49624,12 +49730,12 @@ enifed("morph/dom-helper",
|
|
49624
49730
|
return clone;
|
49625
49731
|
};
|
49626
49732
|
|
49627
|
-
prototype.createAttrMorph = function(element, attrName){
|
49628
|
-
return new AttrMorph(element, attrName, this);
|
49733
|
+
prototype.createAttrMorph = function(element, attrName, namespace){
|
49734
|
+
return new AttrMorph(element, attrName, this, namespace);
|
49629
49735
|
};
|
49630
49736
|
|
49631
|
-
prototype.createUnsafeAttrMorph = function(element, attrName){
|
49632
|
-
var morph = this.createAttrMorph(element, attrName);
|
49737
|
+
prototype.createUnsafeAttrMorph = function(element, attrName, namespace){
|
49738
|
+
var morph = this.createAttrMorph(element, attrName, namespace);
|
49633
49739
|
morph.escaped = false;
|
49634
49740
|
return morph;
|
49635
49741
|
};
|
@@ -49650,9 +49756,8 @@ enifed("morph/dom-helper",
|
|
49650
49756
|
// This helper is just to keep the templates good looking,
|
49651
49757
|
// passing integers instead of element references.
|
49652
49758
|
prototype.createMorphAt = function(parent, startIndex, endIndex, contextualElement){
|
49653
|
-
var
|
49654
|
-
|
49655
|
-
end = endIndex === -1 ? null : childNodes[endIndex];
|
49759
|
+
var start = startIndex === -1 ? null : this.childAtIndex(parent, startIndex),
|
49760
|
+
end = endIndex === -1 ? null : this.childAtIndex(parent, endIndex);
|
49656
49761
|
return this.createMorph(parent, start, end, contextualElement);
|
49657
49762
|
};
|
49658
49763
|
|
@@ -49679,12 +49784,7 @@ enifed("morph/dom-helper",
|
|
49679
49784
|
};
|
49680
49785
|
|
49681
49786
|
prototype.parseHTML = function(html, contextualElement) {
|
49682
|
-
|
49683
|
-
isSVG(this.namespace) &&
|
49684
|
-
!svgHTMLIntegrationPoints[contextualElement.tagName]
|
49685
|
-
);
|
49686
|
-
|
49687
|
-
if (isSVGContent) {
|
49787
|
+
if (interiorNamespace(contextualElement) === svgNamespace) {
|
49688
49788
|
return buildSVGDOM(html, this);
|
49689
49789
|
} else {
|
49690
49790
|
var nodes = buildHTMLDOM(html, contextualElement, this);
|
@@ -50121,7 +50221,11 @@ enifed("morph/dom-helper/prop",
|
|
50121
50221
|
["exports"],
|
50122
50222
|
function(__exports__) {
|
50123
50223
|
"use strict";
|
50124
|
-
|
50224
|
+
function isAttrRemovalValue(value) {
|
50225
|
+
return value === null || value === undefined;
|
50226
|
+
}
|
50227
|
+
|
50228
|
+
__exports__.isAttrRemovalValue = isAttrRemovalValue;// TODO should this be an o_create kind of thing?
|
50125
50229
|
var propertyCaches = {};
|
50126
50230
|
__exports__.propertyCaches = propertyCaches;
|
50127
50231
|
function normalizeProperty(element, attrName) {
|
@@ -51713,8 +51817,9 @@ enifed("router/router",
|
|
51713
51817
|
return intent.applyToState(state, this.recognizer, this.getHandler);
|
51714
51818
|
},
|
51715
51819
|
|
51716
|
-
isActiveIntent: function(handlerName, contexts, queryParams) {
|
51717
|
-
var
|
51820
|
+
isActiveIntent: function(handlerName, contexts, queryParams, _state) {
|
51821
|
+
var state = _state || this.state,
|
51822
|
+
targetHandlerInfos = state.handlerInfos,
|
51718
51823
|
found = false, names, object, handlerInfo, handlerObj, i, len;
|
51719
51824
|
|
51720
51825
|
if (!targetHandlerInfos.length) { return false; }
|
@@ -51733,8 +51838,8 @@ enifed("router/router",
|
|
51733
51838
|
return false;
|
51734
51839
|
}
|
51735
51840
|
|
51736
|
-
var
|
51737
|
-
|
51841
|
+
var testState = new TransitionState();
|
51842
|
+
testState.handlerInfos = targetHandlerInfos.slice(0, index + 1);
|
51738
51843
|
recogHandlers = recogHandlers.slice(0, index + 1);
|
51739
51844
|
|
51740
51845
|
var intent = new NamedTransitionIntent({
|
@@ -51742,9 +51847,9 @@ enifed("router/router",
|
|
51742
51847
|
contexts: contexts
|
51743
51848
|
});
|
51744
51849
|
|
51745
|
-
var newState = intent.applyToHandlers(
|
51850
|
+
var newState = intent.applyToHandlers(testState, recogHandlers, this.getHandler, targetHandler, true, true);
|
51746
51851
|
|
51747
|
-
var handlersEqual = handlerInfosEqual(newState.handlerInfos,
|
51852
|
+
var handlersEqual = handlerInfosEqual(newState.handlerInfos, testState.handlerInfos);
|
51748
51853
|
if (!queryParams || !handlersEqual) {
|
51749
51854
|
return handlersEqual;
|
51750
51855
|
}
|
@@ -51753,7 +51858,7 @@ enifed("router/router",
|
|
51753
51858
|
var activeQPsOnNewHandler = {};
|
51754
51859
|
merge(activeQPsOnNewHandler, queryParams);
|
51755
51860
|
|
51756
|
-
var activeQueryParams =
|
51861
|
+
var activeQueryParams = state.queryParams;
|
51757
51862
|
for (var key in activeQueryParams) {
|
51758
51863
|
if (activeQueryParams.hasOwnProperty(key) &&
|
51759
51864
|
activeQPsOnNewHandler.hasOwnProperty(key)) {
|
@@ -51852,32 +51957,33 @@ enifed("router/router",
|
|
51852
51957
|
*/
|
51853
51958
|
function setupContexts(router, newState, transition) {
|
51854
51959
|
var partition = partitionHandlers(router.state, newState);
|
51960
|
+
var i, l, handler;
|
51855
51961
|
|
51856
|
-
|
51857
|
-
|
51962
|
+
for (i=0, l=partition.exited.length; i<l; i++) {
|
51963
|
+
handler = partition.exited[i].handler;
|
51858
51964
|
delete handler.context;
|
51859
51965
|
|
51860
51966
|
callHook(handler, 'reset', true, transition);
|
51861
51967
|
callHook(handler, 'exit', transition);
|
51862
|
-
}
|
51968
|
+
}
|
51863
51969
|
|
51864
51970
|
var oldState = router.oldState = router.state;
|
51865
51971
|
router.state = newState;
|
51866
51972
|
var currentHandlerInfos = router.currentHandlerInfos = partition.unchanged.slice();
|
51867
51973
|
|
51868
51974
|
try {
|
51869
|
-
|
51870
|
-
|
51975
|
+
for (i=0, l=partition.reset.length; i<l; i++) {
|
51976
|
+
handler = partition.reset[i].handler;
|
51871
51977
|
callHook(handler, 'reset', false, transition);
|
51872
|
-
}
|
51978
|
+
}
|
51873
51979
|
|
51874
|
-
|
51875
|
-
|
51876
|
-
}
|
51980
|
+
for (i=0, l=partition.updatedContext.length; i<l; i++) {
|
51981
|
+
handlerEnteredOrUpdated(currentHandlerInfos, partition.updatedContext[i], false, transition);
|
51982
|
+
}
|
51877
51983
|
|
51878
|
-
|
51879
|
-
|
51880
|
-
}
|
51984
|
+
for (i=0, l=partition.entered.length; i<l; i++) {
|
51985
|
+
handlerEnteredOrUpdated(currentHandlerInfos, partition.entered[i], true, transition);
|
51986
|
+
}
|
51881
51987
|
} catch(e) {
|
51882
51988
|
router.state = oldState;
|
51883
51989
|
router.currentHandlerInfos = oldState.handlerInfos;
|
@@ -53148,15 +53254,23 @@ enifed("router/utils",
|
|
53148
53254
|
obj[hookName] && hookName;
|
53149
53255
|
}
|
53150
53256
|
|
53151
|
-
function callHook(obj,
|
53152
|
-
var
|
53153
|
-
return
|
53257
|
+
function callHook(obj, _hookName, arg1, arg2) {
|
53258
|
+
var hookName = resolveHook(obj, _hookName);
|
53259
|
+
return hookName && obj[hookName].call(obj, arg1, arg2);
|
53154
53260
|
}
|
53155
53261
|
|
53156
53262
|
function applyHook(obj, _hookName, args) {
|
53157
53263
|
var hookName = resolveHook(obj, _hookName);
|
53158
53264
|
if (hookName) {
|
53159
|
-
|
53265
|
+
if (args.length === 0) {
|
53266
|
+
return obj[hookName].call(obj);
|
53267
|
+
} else if (args.length === 1) {
|
53268
|
+
return obj[hookName].call(obj, args[0]);
|
53269
|
+
} else if (args.length === 2) {
|
53270
|
+
return obj[hookName].call(obj, args[0], args[1]);
|
53271
|
+
} else {
|
53272
|
+
return obj[hookName].apply(obj, args);
|
53273
|
+
}
|
53160
53274
|
}
|
53161
53275
|
}
|
53162
53276
|
|