ember-source 1.10.0.beta.2 → 1.10.0.beta.3
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 +11 -8
- data/dist/ember-template-compiler.js +281 -312
- data/dist/ember-testing.js +4 -2
- data/dist/ember-tests.js +140 -164
- data/dist/ember-tests.prod.js +96 -164
- data/dist/ember.debug.js +874 -769
- data/dist/ember.js +874 -769
- data/dist/ember.min.js +15 -15
- data/dist/ember.prod.js +864 -765
- metadata +3 -17
data/dist/ember.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.3
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -3954,7 +3954,9 @@ enifed("ember-debug",
|
|
3954
3954
|
Ember.warn = function(message, test) {
|
3955
3955
|
if (!test) {
|
3956
3956
|
Logger.warn("WARNING: "+message);
|
3957
|
-
if ('trace' in Logger)
|
3957
|
+
if ('trace' in Logger) {
|
3958
|
+
Logger.trace();
|
3959
|
+
}
|
3958
3960
|
}
|
3959
3961
|
};
|
3960
3962
|
|
@@ -4769,8 +4771,8 @@ enifed("ember-extension-support/data_adapter",
|
|
4769
4771
|
});
|
4770
4772
|
});
|
4771
4773
|
enifed("ember-htmlbars",
|
4772
|
-
["ember-metal/core","ember-template-compiler","ember-htmlbars/hooks/content","ember-htmlbars/hooks/component","ember-htmlbars/hooks/element","ember-htmlbars/hooks/subexpr","ember-htmlbars/hooks/attribute","ember-htmlbars/hooks/concat","ember-htmlbars/hooks/get","ember-htmlbars/hooks/set","morph","ember-htmlbars/system/make-view-helper","ember-htmlbars/system/make_bound_helper","ember-htmlbars/helpers","ember-htmlbars/helpers/binding","ember-htmlbars/helpers/view","ember-htmlbars/helpers/yield","ember-htmlbars/helpers/with","ember-htmlbars/helpers/log","ember-htmlbars/helpers/debugger","ember-htmlbars/helpers/bind-attr","ember-htmlbars/helpers/if_unless","ember-htmlbars/helpers/loc","ember-htmlbars/helpers/partial","ember-htmlbars/helpers/template","ember-htmlbars/helpers/input","ember-htmlbars/helpers/text_area","ember-htmlbars/helpers/collection","ember-htmlbars/helpers/each","ember-htmlbars/helpers/unbound","ember-htmlbars/system/bootstrap","ember-htmlbars/compat","exports"],
|
4773
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __dependency19__, __dependency20__, __dependency21__, __dependency22__, __dependency23__, __dependency24__, __dependency25__, __dependency26__, __dependency27__, __dependency28__, __dependency29__, __dependency30__, __dependency31__, __dependency32__, __exports__) {
|
4774
|
+
["ember-metal/core","ember-template-compiler","ember-htmlbars/hooks/inline","ember-htmlbars/hooks/content","ember-htmlbars/hooks/component","ember-htmlbars/hooks/block","ember-htmlbars/hooks/element","ember-htmlbars/hooks/subexpr","ember-htmlbars/hooks/attribute","ember-htmlbars/hooks/concat","ember-htmlbars/hooks/get","ember-htmlbars/hooks/set","morph","ember-htmlbars/system/make-view-helper","ember-htmlbars/system/make_bound_helper","ember-htmlbars/helpers","ember-htmlbars/helpers/binding","ember-htmlbars/helpers/view","ember-htmlbars/helpers/yield","ember-htmlbars/helpers/with","ember-htmlbars/helpers/log","ember-htmlbars/helpers/debugger","ember-htmlbars/helpers/bind-attr","ember-htmlbars/helpers/if_unless","ember-htmlbars/helpers/loc","ember-htmlbars/helpers/partial","ember-htmlbars/helpers/template","ember-htmlbars/helpers/input","ember-htmlbars/helpers/text_area","ember-htmlbars/helpers/collection","ember-htmlbars/helpers/each","ember-htmlbars/helpers/unbound","ember-htmlbars/system/bootstrap","ember-htmlbars/compat","exports"],
|
4775
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __dependency19__, __dependency20__, __dependency21__, __dependency22__, __dependency23__, __dependency24__, __dependency25__, __dependency26__, __dependency27__, __dependency28__, __dependency29__, __dependency30__, __dependency31__, __dependency32__, __dependency33__, __dependency34__, __exports__) {
|
4774
4776
|
"use strict";
|
4775
4777
|
var Ember = __dependency1__["default"];
|
4776
4778
|
|
@@ -4779,41 +4781,43 @@ enifed("ember-htmlbars",
|
|
4779
4781
|
var template = __dependency2__.template;
|
4780
4782
|
var registerPlugin = __dependency2__.registerPlugin;
|
4781
4783
|
|
4782
|
-
var
|
4783
|
-
var
|
4784
|
-
var
|
4785
|
-
var
|
4786
|
-
var
|
4787
|
-
var
|
4788
|
-
var
|
4789
|
-
var
|
4790
|
-
var
|
4791
|
-
var
|
4792
|
-
var
|
4793
|
-
|
4794
|
-
var
|
4795
|
-
|
4796
|
-
var
|
4797
|
-
var
|
4798
|
-
var
|
4799
|
-
var
|
4800
|
-
var
|
4801
|
-
var
|
4802
|
-
var
|
4803
|
-
var
|
4804
|
-
var
|
4805
|
-
var
|
4806
|
-
var
|
4807
|
-
var
|
4808
|
-
var
|
4809
|
-
var
|
4810
|
-
var
|
4811
|
-
var
|
4812
|
-
var
|
4813
|
-
var
|
4814
|
-
var
|
4815
|
-
var
|
4816
|
-
var
|
4784
|
+
var inline = __dependency3__["default"];
|
4785
|
+
var content = __dependency4__["default"];
|
4786
|
+
var component = __dependency5__["default"];
|
4787
|
+
var block = __dependency6__["default"];
|
4788
|
+
var element = __dependency7__["default"];
|
4789
|
+
var subexpr = __dependency8__["default"];
|
4790
|
+
var attribute = __dependency9__["default"];
|
4791
|
+
var concat = __dependency10__["default"];
|
4792
|
+
var get = __dependency11__["default"];
|
4793
|
+
var set = __dependency12__["default"];
|
4794
|
+
var DOMHelper = __dependency13__.DOMHelper;
|
4795
|
+
var makeViewHelper = __dependency14__["default"];
|
4796
|
+
var makeBoundHelper = __dependency15__["default"];
|
4797
|
+
|
4798
|
+
var registerHelper = __dependency16__.registerHelper;
|
4799
|
+
var helper = __dependency16__.helper;
|
4800
|
+
var helpers = __dependency16__["default"];
|
4801
|
+
var bindHelper = __dependency17__.bindHelper;
|
4802
|
+
var viewHelper = __dependency18__.viewHelper;
|
4803
|
+
var yieldHelper = __dependency19__.yieldHelper;
|
4804
|
+
var withHelper = __dependency20__.withHelper;
|
4805
|
+
var logHelper = __dependency21__.logHelper;
|
4806
|
+
var debuggerHelper = __dependency22__.debuggerHelper;
|
4807
|
+
var bindAttrHelper = __dependency23__.bindAttrHelper;
|
4808
|
+
var bindAttrHelperDeprecated = __dependency23__.bindAttrHelperDeprecated;
|
4809
|
+
var ifHelper = __dependency24__.ifHelper;
|
4810
|
+
var unlessHelper = __dependency24__.unlessHelper;
|
4811
|
+
var unboundIfHelper = __dependency24__.unboundIfHelper;
|
4812
|
+
var boundIfHelper = __dependency24__.boundIfHelper;
|
4813
|
+
var locHelper = __dependency25__.locHelper;
|
4814
|
+
var partialHelper = __dependency26__.partialHelper;
|
4815
|
+
var templateHelper = __dependency27__.templateHelper;
|
4816
|
+
var inputHelper = __dependency28__.inputHelper;
|
4817
|
+
var textareaHelper = __dependency29__.textareaHelper;
|
4818
|
+
var collectionHelper = __dependency30__.collectionHelper;
|
4819
|
+
var eachHelper = __dependency31__.eachHelper;
|
4820
|
+
var unboundHelper = __dependency32__.unboundHelper;
|
4817
4821
|
|
4818
4822
|
// importing adds template bootstrapping
|
4819
4823
|
// initializer to enable embedded templates
|
@@ -4865,7 +4869,9 @@ enifed("ember-htmlbars",
|
|
4865
4869
|
hooks: {
|
4866
4870
|
get: get,
|
4867
4871
|
set: set,
|
4872
|
+
inline: inline,
|
4868
4873
|
content: content,
|
4874
|
+
block: block,
|
4869
4875
|
element: element,
|
4870
4876
|
subexpr: subexpr,
|
4871
4877
|
component: component,
|
@@ -4877,308 +4883,6 @@ enifed("ember-htmlbars",
|
|
4877
4883
|
};
|
4878
4884
|
__exports__.defaultEnv = defaultEnv;
|
4879
4885
|
});
|
4880
|
-
enifed("ember-htmlbars/attr_nodes",
|
4881
|
-
["ember-htmlbars/attr_nodes/quoted","ember-htmlbars/attr_nodes/unquoted","ember-htmlbars/attr_nodes/unquoted_nonproperty","ember-views/system/sanitize_attribute_value","ember-htmlbars/attr_nodes/sanitized","ember-metal/platform","ember-htmlbars/attr_nodes/utils","exports"],
|
4882
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
|
4883
|
-
"use strict";
|
4884
|
-
/**
|
4885
|
-
@module ember
|
4886
|
-
@submodule ember-htmlbars
|
4887
|
-
*/
|
4888
|
-
|
4889
|
-
var QuotedAttrNode = __dependency1__["default"];
|
4890
|
-
var UnquotedAttrNode = __dependency2__["default"];
|
4891
|
-
var UnquotedNonpropertyAttrNode = __dependency3__["default"];
|
4892
|
-
var badAttributes = __dependency4__.badAttributes;
|
4893
|
-
var SanitizedAttrNode = __dependency5__["default"];
|
4894
|
-
var o_create = __dependency6__.create;
|
4895
|
-
var normalizeProperty = __dependency7__.normalizeProperty;
|
4896
|
-
|
4897
|
-
var svgNamespaceURI = 'http://www.w3.org/2000/svg';
|
4898
|
-
|
4899
|
-
var unquotedAttrNodeTypes = o_create(null);
|
4900
|
-
unquotedAttrNodeTypes['class'] = UnquotedNonpropertyAttrNode;
|
4901
|
-
|
4902
|
-
var quotedAttrNodeTypes = o_create(null);
|
4903
|
-
|
4904
|
-
for (var attrName in badAttributes) {
|
4905
|
-
unquotedAttrNodeTypes[attrName] = SanitizedAttrNode;
|
4906
|
-
quotedAttrNodeTypes[attrName] = SanitizedAttrNode;
|
4907
|
-
}
|
4908
|
-
|
4909
|
-
__exports__["default"] = function attrNodeTypeFor(attrName, element, quoted) {
|
4910
|
-
var result;
|
4911
|
-
if (quoted) {
|
4912
|
-
result = quotedAttrNodeTypes[attrName];
|
4913
|
-
if (!result) {
|
4914
|
-
result = QuotedAttrNode;
|
4915
|
-
quotedAttrNodeTypes[attrName] = result;
|
4916
|
-
}
|
4917
|
-
} else {
|
4918
|
-
result = unquotedAttrNodeTypes[attrName];
|
4919
|
-
if (!result) {
|
4920
|
-
if (element.namespaceURI === svgNamespaceURI) {
|
4921
|
-
result = UnquotedNonpropertyAttrNode;
|
4922
|
-
} else {
|
4923
|
-
var normalized = normalizeProperty(element, attrName);
|
4924
|
-
if (normalized) {
|
4925
|
-
result = UnquotedAttrNode;
|
4926
|
-
} else {
|
4927
|
-
result = UnquotedNonpropertyAttrNode;
|
4928
|
-
}
|
4929
|
-
}
|
4930
|
-
unquotedAttrNodeTypes[attrName] = result;
|
4931
|
-
}
|
4932
|
-
}
|
4933
|
-
|
4934
|
-
return result;
|
4935
|
-
}
|
4936
|
-
});
|
4937
|
-
enifed("ember-htmlbars/attr_nodes/legacy_bind",
|
4938
|
-
["ember-runtime/system/string","ember-metal/utils","ember-metal/is_none","./simple","ember-metal/platform","exports"],
|
4939
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
|
4940
|
-
"use strict";
|
4941
|
-
/**
|
4942
|
-
@module ember
|
4943
|
-
@submodule ember-htmlbars
|
4944
|
-
*/
|
4945
|
-
|
4946
|
-
var fmt = __dependency1__.fmt;
|
4947
|
-
var typeOf = __dependency2__.typeOf;
|
4948
|
-
var isNone = __dependency3__["default"];
|
4949
|
-
var SimpleAttrNode = __dependency4__["default"];
|
4950
|
-
var o_create = __dependency5__.create;
|
4951
|
-
|
4952
|
-
function LegacyBindAttrNode(element, attrName, attrValue, dom) {
|
4953
|
-
this.init(element, attrName, attrValue, dom);
|
4954
|
-
}
|
4955
|
-
|
4956
|
-
LegacyBindAttrNode.prototype = o_create(SimpleAttrNode.prototype);
|
4957
|
-
|
4958
|
-
LegacyBindAttrNode.prototype.super$init = SimpleAttrNode.prototype.init;
|
4959
|
-
|
4960
|
-
LegacyBindAttrNode.prototype.render = function render() {
|
4961
|
-
var name = this.attrName;
|
4962
|
-
var value = this.currentValue;
|
4963
|
-
var type = typeOf(value);
|
4964
|
-
|
4965
|
-
Ember.assert(fmt("Attributes must be numbers, strings or booleans, not %@", [value]),
|
4966
|
-
value === null || value === undefined || type === 'number' || type === 'string' || type === 'boolean');
|
4967
|
-
|
4968
|
-
// if this changes, also change the logic in ember-handlebars/lib/helpers/binding.js
|
4969
|
-
if (name !== 'value' && (type === 'string' || (type === 'number' && !isNaN(value)))) {
|
4970
|
-
this.dom.setAttribute(this.element, name, value);
|
4971
|
-
} else if (name === 'value' || type === 'boolean') {
|
4972
|
-
if (isNone(value) || value === false) {
|
4973
|
-
// `null`, `undefined` or `false` should remove attribute
|
4974
|
-
this.dom.removeAttribute(this.element, name);
|
4975
|
-
// In IE8 `prop` couldn't remove attribute when name is `required`.
|
4976
|
-
if (name === 'required') {
|
4977
|
-
this.dom.setProperty(this.element, name, null);
|
4978
|
-
} else {
|
4979
|
-
this.dom.setProperty(this.element, name, '');
|
4980
|
-
}
|
4981
|
-
} else {
|
4982
|
-
// value should always be properties
|
4983
|
-
this.dom.setProperty(this.element, name, value);
|
4984
|
-
}
|
4985
|
-
} else if (!value) {
|
4986
|
-
if (this.lastValue !== null) {
|
4987
|
-
this.dom.removeAttribute(this.element, name);
|
4988
|
-
}
|
4989
|
-
}
|
4990
|
-
};
|
4991
|
-
|
4992
|
-
__exports__["default"] = LegacyBindAttrNode;
|
4993
|
-
});
|
4994
|
-
enifed("ember-htmlbars/attr_nodes/quoted",
|
4995
|
-
["./simple","ember-metal/platform","exports"],
|
4996
|
-
function(__dependency1__, __dependency2__, __exports__) {
|
4997
|
-
"use strict";
|
4998
|
-
/**
|
4999
|
-
@module ember
|
5000
|
-
@submodule ember-htmlbars
|
5001
|
-
*/
|
5002
|
-
|
5003
|
-
var SimpleAttrNode = __dependency1__["default"];
|
5004
|
-
var o_create = __dependency2__.create;
|
5005
|
-
|
5006
|
-
function QuotedAttrNode(element, attrName, attrValue, dom) {
|
5007
|
-
this.init(element, attrName, attrValue, dom);
|
5008
|
-
}
|
5009
|
-
|
5010
|
-
QuotedAttrNode.prototype = o_create(SimpleAttrNode.prototype);
|
5011
|
-
|
5012
|
-
QuotedAttrNode.prototype.render = function render(){
|
5013
|
-
this.dom.setAttribute(this.element, this.attrName, this.currentValue);
|
5014
|
-
};
|
5015
|
-
|
5016
|
-
__exports__["default"] = QuotedAttrNode;
|
5017
|
-
});
|
5018
|
-
enifed("ember-htmlbars/attr_nodes/sanitized",
|
5019
|
-
["./simple","ember-metal/platform","ember-metal/streams/utils","ember-views/system/sanitize_attribute_value","exports"],
|
5020
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
5021
|
-
"use strict";
|
5022
|
-
/**
|
5023
|
-
@module ember
|
5024
|
-
@submodule ember-htmlbars
|
5025
|
-
*/
|
5026
|
-
|
5027
|
-
var SimpleAttrNode = __dependency1__["default"];
|
5028
|
-
var o_create = __dependency2__.create;
|
5029
|
-
var chainStream = __dependency3__.chainStream;
|
5030
|
-
var read = __dependency3__.read;
|
5031
|
-
var sanitizeAttributeValue = __dependency4__["default"];
|
5032
|
-
|
5033
|
-
function SanitizedAttrNode(element, attrName, attrValue, dom) {
|
5034
|
-
var sanitizedValue = chainStream(attrValue, function(){
|
5035
|
-
var unsafeValue = read(attrValue);
|
5036
|
-
var safeValue = sanitizeAttributeValue(element, attrName, unsafeValue);
|
5037
|
-
|
5038
|
-
return safeValue;
|
5039
|
-
});
|
5040
|
-
|
5041
|
-
this.init(element, attrName, sanitizedValue, dom);
|
5042
|
-
}
|
5043
|
-
|
5044
|
-
SanitizedAttrNode.prototype = o_create(SimpleAttrNode.prototype);
|
5045
|
-
|
5046
|
-
__exports__["default"] = SanitizedAttrNode;
|
5047
|
-
});
|
5048
|
-
enifed("ember-htmlbars/attr_nodes/simple",
|
5049
|
-
["ember-metal/run_loop","exports"],
|
5050
|
-
function(__dependency1__, __exports__) {
|
5051
|
-
"use strict";
|
5052
|
-
/**
|
5053
|
-
@module ember
|
5054
|
-
@submodule ember-htmlbars
|
5055
|
-
*/
|
5056
|
-
|
5057
|
-
var run = __dependency1__["default"];
|
5058
|
-
|
5059
|
-
function SimpleAttrNode() {
|
5060
|
-
// abstract class
|
5061
|
-
}
|
5062
|
-
|
5063
|
-
SimpleAttrNode.prototype.init = function init(element, attrName, simpleAttrValue, dom){
|
5064
|
-
this.element = element;
|
5065
|
-
this.attrName = attrName;
|
5066
|
-
this.attrValue = simpleAttrValue;
|
5067
|
-
this.dom = dom;
|
5068
|
-
this.isDirty = true;
|
5069
|
-
this.lastValue = null;
|
5070
|
-
this.currentValue = null;
|
5071
|
-
|
5072
|
-
if (this.attrValue.isStream) {
|
5073
|
-
this.attrValue.subscribe(this.markDirty, this);
|
5074
|
-
this.renderIfDirty();
|
5075
|
-
} else {
|
5076
|
-
this.currentValue = simpleAttrValue;
|
5077
|
-
this.render();
|
5078
|
-
}
|
5079
|
-
};
|
5080
|
-
|
5081
|
-
SimpleAttrNode.prototype.markDirty = function markDirty(){
|
5082
|
-
this.isDirty = true;
|
5083
|
-
run.schedule('render', this, this.renderIfDirty);
|
5084
|
-
};
|
5085
|
-
|
5086
|
-
SimpleAttrNode.prototype.renderIfDirty = function renderIfDirty(){
|
5087
|
-
if (this.isDirty) {
|
5088
|
-
this.isDirty = false;
|
5089
|
-
var value = this.attrValue.value();
|
5090
|
-
if (value !== this.currentValue) {
|
5091
|
-
this.lastValue = this.currentValue;
|
5092
|
-
this.currentValue = value;
|
5093
|
-
this.render();
|
5094
|
-
}
|
5095
|
-
}
|
5096
|
-
};
|
5097
|
-
|
5098
|
-
SimpleAttrNode.prototype.render = function render(){
|
5099
|
-
this.dom.setProperty(this.element, this.attrName, this.currentValue);
|
5100
|
-
};
|
5101
|
-
|
5102
|
-
__exports__["default"] = SimpleAttrNode;
|
5103
|
-
});
|
5104
|
-
enifed("ember-htmlbars/attr_nodes/unquoted",
|
5105
|
-
["./simple","ember-metal/platform","ember-htmlbars/attr_nodes/utils","exports"],
|
5106
|
-
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
5107
|
-
"use strict";
|
5108
|
-
/**
|
5109
|
-
@module ember
|
5110
|
-
@submodule ember-htmlbars
|
5111
|
-
*/
|
5112
|
-
|
5113
|
-
var SimpleAttrNode = __dependency1__["default"];
|
5114
|
-
var o_create = __dependency2__.create;
|
5115
|
-
var normalizeProperty = __dependency3__.normalizeProperty;
|
5116
|
-
|
5117
|
-
function UnquotedAttrNode(element, attrName, attrValue, dom) {
|
5118
|
-
var normalizedAttrName = normalizeProperty(element, attrName) || attrName;
|
5119
|
-
this.init(element, normalizedAttrName, attrValue, dom);
|
5120
|
-
}
|
5121
|
-
|
5122
|
-
UnquotedAttrNode.prototype = o_create(SimpleAttrNode.prototype);
|
5123
|
-
|
5124
|
-
__exports__["default"] = UnquotedAttrNode;
|
5125
|
-
});
|
5126
|
-
enifed("ember-htmlbars/attr_nodes/unquoted_nonproperty",
|
5127
|
-
["./simple","ember-metal/platform","exports"],
|
5128
|
-
function(__dependency1__, __dependency2__, __exports__) {
|
5129
|
-
"use strict";
|
5130
|
-
/**
|
5131
|
-
@module ember
|
5132
|
-
@submodule ember-htmlbars
|
5133
|
-
*/
|
5134
|
-
|
5135
|
-
var SimpleAttrNode = __dependency1__["default"];
|
5136
|
-
var o_create = __dependency2__.create;
|
5137
|
-
|
5138
|
-
function UnquotedNonpropertyAttrNode(element, attrName, attrValue, dom) {
|
5139
|
-
this.init(element, attrName, attrValue, dom);
|
5140
|
-
}
|
5141
|
-
|
5142
|
-
UnquotedNonpropertyAttrNode.prototype = o_create(SimpleAttrNode.prototype);
|
5143
|
-
|
5144
|
-
UnquotedNonpropertyAttrNode.prototype.render = function render(){
|
5145
|
-
if (this.currentValue === null) {
|
5146
|
-
if (this.lastValue !== null) {
|
5147
|
-
this.dom.removeAttribute(this.element, this.attrName);
|
5148
|
-
}
|
5149
|
-
} else {
|
5150
|
-
this.dom.setAttribute(this.element, this.attrName, this.currentValue);
|
5151
|
-
}
|
5152
|
-
};
|
5153
|
-
|
5154
|
-
__exports__["default"] = UnquotedNonpropertyAttrNode;
|
5155
|
-
});
|
5156
|
-
enifed("ember-htmlbars/attr_nodes/utils",
|
5157
|
-
["ember-metal/platform","ember-metal/keys","exports"],
|
5158
|
-
function(__dependency1__, __dependency2__, __exports__) {
|
5159
|
-
"use strict";
|
5160
|
-
var o_create = __dependency1__.create;
|
5161
|
-
var keys = __dependency2__["default"];
|
5162
|
-
|
5163
|
-
var propertyCaches = o_create(null);
|
5164
|
-
__exports__.propertyCaches = propertyCaches;
|
5165
|
-
function normalizeProperty(element, attrName) {
|
5166
|
-
var tagName = element.tagName;
|
5167
|
-
var cache = propertyCaches[tagName];
|
5168
|
-
if (!cache) {
|
5169
|
-
cache = o_create(null);
|
5170
|
-
var properties = keys(element);
|
5171
|
-
for (var i=0, l=properties.length;i<l;i++) {
|
5172
|
-
cache[properties[i].toLowerCase()] = properties[i];
|
5173
|
-
}
|
5174
|
-
propertyCaches[tagName] = cache;
|
5175
|
-
}
|
5176
|
-
|
5177
|
-
return cache[attrName.toLowerCase()];
|
5178
|
-
}
|
5179
|
-
|
5180
|
-
__exports__.normalizeProperty = normalizeProperty;
|
5181
|
-
});
|
5182
4886
|
enifed("ember-htmlbars/compat",
|
5183
4887
|
["ember-metal/core","ember-htmlbars/helpers","ember-template-compiler","ember-htmlbars/compat/helper","ember-htmlbars/compat/handlebars-get","ember-htmlbars/compat/make-bound-helper","ember-htmlbars/compat/register-bound-helper","ember-htmlbars/compat/precompile","ember-htmlbars/system/make-view-helper","ember-htmlbars/utils/string","exports"],
|
5184
4888
|
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __exports__) {
|
@@ -5819,8 +5523,8 @@ enifed("ember-htmlbars/helpers",
|
|
5819
5523
|
__exports__.registerBoundHelper = registerBoundHelper;__exports__["default"] = helpers;
|
5820
5524
|
});
|
5821
5525
|
enifed("ember-htmlbars/helpers/bind-attr",
|
5822
|
-
["ember-metal/core","ember-runtime/system/string","ember-
|
5823
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__,
|
5526
|
+
["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"],
|
5527
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __exports__) {
|
5824
5528
|
"use strict";
|
5825
5529
|
/**
|
5826
5530
|
@module ember
|
@@ -5831,16 +5535,14 @@ enifed("ember-htmlbars/helpers/bind-attr",
|
|
5831
5535
|
// Ember.assert
|
5832
5536
|
|
5833
5537
|
var fmt = __dependency2__.fmt;
|
5834
|
-
var
|
5538
|
+
var AttrNode = __dependency3__["default"];
|
5835
5539
|
var LegacyBindAttrNode = __dependency4__["default"];
|
5836
|
-
var
|
5837
|
-
var
|
5838
|
-
var
|
5839
|
-
var
|
5840
|
-
var
|
5841
|
-
var
|
5842
|
-
var concat = __dependency10__.concat;
|
5843
|
-
var streamifyClassNameBinding = __dependency11__.streamifyClassNameBinding;
|
5540
|
+
var keys = __dependency5__["default"];
|
5541
|
+
var helpers = __dependency6__["default"];
|
5542
|
+
var map = __dependency7__.map;
|
5543
|
+
var isStream = __dependency8__.isStream;
|
5544
|
+
var concat = __dependency8__.concat;
|
5545
|
+
var streamifyClassNameBinding = __dependency9__.streamifyClassNameBinding;
|
5844
5546
|
|
5845
5547
|
/**
|
5846
5548
|
`bind-attr` allows you to create a binding between DOM element attributes and
|
@@ -5975,20 +5677,23 @@ enifed("ember-htmlbars/helpers/bind-attr",
|
|
5975
5677
|
// Handle classes differently, as we can bind multiple classes
|
5976
5678
|
var classNameBindings = hash['class'];
|
5977
5679
|
if (classNameBindings !== null && classNameBindings !== undefined) {
|
5978
|
-
if (isStream(classNameBindings)) {
|
5979
|
-
|
5980
|
-
} else {
|
5981
|
-
var classNameBindingsStream = applyClassNameBindings(classNameBindings, view);
|
5982
|
-
new QuotedAttrNode(element, 'class', classNameBindingsStream, env.dom);
|
5680
|
+
if (!isStream(classNameBindings)) {
|
5681
|
+
classNameBindings = applyClassNameBindings(classNameBindings, view);
|
5983
5682
|
}
|
5984
|
-
|
5683
|
+
|
5684
|
+
var classView = new AttrNode('class', classNameBindings);
|
5685
|
+
classView._morph = env.dom.createAttrMorph(element, 'class');
|
5686
|
+
view.appendChild(classView);
|
5985
5687
|
}
|
5986
5688
|
|
5987
5689
|
var attrKeys = keys(hash);
|
5988
5690
|
|
5989
|
-
var attr, path, lazyValue;
|
5691
|
+
var attr, path, lazyValue, attrView;
|
5990
5692
|
for (var i=0, l=attrKeys.length;i<l;i++) {
|
5991
5693
|
attr = attrKeys[i];
|
5694
|
+
if (attr === 'class') {
|
5695
|
+
continue;
|
5696
|
+
}
|
5992
5697
|
path = hash[attr];
|
5993
5698
|
if (isStream(path)) {
|
5994
5699
|
lazyValue = path;
|
@@ -6000,11 +5705,10 @@ enifed("ember-htmlbars/helpers/bind-attr",
|
|
6000
5705
|
);
|
6001
5706
|
lazyValue = view.getStream(path);
|
6002
5707
|
}
|
6003
|
-
|
6004
|
-
|
6005
|
-
|
6006
|
-
|
6007
|
-
}
|
5708
|
+
|
5709
|
+
attrView = new LegacyBindAttrNode(attr, lazyValue);
|
5710
|
+
attrView._morph = env.dom.createAttrMorph(element, attr);
|
5711
|
+
view.appendChild(attrView);
|
6008
5712
|
}
|
6009
5713
|
}
|
6010
5714
|
|
@@ -6150,6 +5854,8 @@ enifed("ember-htmlbars/helpers/binding",
|
|
6150
5854
|
Ember.deprecate("The block form of bind, {{#bind foo}}{{/bind}}, has been deprecated and will be removed.");
|
6151
5855
|
bind.call(this, property, hash, options, env, false, exists);
|
6152
5856
|
} else {
|
5857
|
+
Ember.deprecate("The `{{bind}}` helper has been deprecated and will be removed.");
|
5858
|
+
|
6153
5859
|
return property;
|
6154
5860
|
}
|
6155
5861
|
}
|
@@ -6312,14 +6018,15 @@ enifed("ember-htmlbars/helpers/collection",
|
|
6312
6018
|
|
6313
6019
|
Ember.assert("You cannot pass more than one argument to the collection helper", params.length <= 1);
|
6314
6020
|
|
6315
|
-
var data
|
6316
|
-
|
6317
|
-
|
6318
|
-
|
6319
|
-
|
6320
|
-
|
6321
|
-
|
6322
|
-
|
6021
|
+
var data = env.data;
|
6022
|
+
var template = options.template;
|
6023
|
+
var inverse = options.inverse;
|
6024
|
+
var view = data.view;
|
6025
|
+
|
6026
|
+
// This should be deterministic, and should probably come from a
|
6027
|
+
// parent view and not the controller.
|
6028
|
+
var controller = get(view, 'controller');
|
6029
|
+
var container = (controller && controller.container ? controller.container : view.container);
|
6323
6030
|
|
6324
6031
|
// If passed a path string, convert that into an object.
|
6325
6032
|
// Otherwise, just default to the standard class.
|
@@ -6650,7 +6357,7 @@ enifed("ember-htmlbars/helpers/each",
|
|
6650
6357
|
params.length <= 1
|
6651
6358
|
);
|
6652
6359
|
|
6653
|
-
if (options.blockParams) {
|
6360
|
+
if (options.template && options.template.blockParams) {
|
6654
6361
|
hash.keyword = true;
|
6655
6362
|
}
|
6656
6363
|
|
@@ -8027,7 +7734,7 @@ enifed("ember-htmlbars/helpers/with",
|
|
8027
7734
|
|
8028
7735
|
var preserveContext;
|
8029
7736
|
|
8030
|
-
if (options.blockParams) {
|
7737
|
+
if (options.template.blockParams) {
|
8031
7738
|
preserveContext = true;
|
8032
7739
|
} else {
|
8033
7740
|
Ember.deprecate(
|
@@ -8161,7 +7868,7 @@ enifed("ember-htmlbars/helpers/yield",
|
|
8161
7868
|
__exports__.yieldHelper = yieldHelper;
|
8162
7869
|
});
|
8163
7870
|
enifed("ember-htmlbars/hooks/attribute",
|
8164
|
-
["ember-
|
7871
|
+
["ember-views/attr_nodes/attr_node","ember-metal/error","ember-metal/streams/utils","ember-views/system/sanitize_attribute_value","exports"],
|
8165
7872
|
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
8166
7873
|
"use strict";
|
8167
7874
|
/**
|
@@ -8169,7 +7876,7 @@ enifed("ember-htmlbars/hooks/attribute",
|
|
8169
7876
|
@submodule ember-htmlbars
|
8170
7877
|
*/
|
8171
7878
|
|
8172
|
-
var
|
7879
|
+
var AttrNode = __dependency1__["default"];
|
8173
7880
|
var EmberError = __dependency2__["default"];
|
8174
7881
|
var isStream = __dependency3__.isStream;
|
8175
7882
|
var sanitizeAttributeValue = __dependency4__["default"];
|
@@ -8177,20 +7884,52 @@ enifed("ember-htmlbars/hooks/attribute",
|
|
8177
7884
|
var boundAttributesEnabled = false;
|
8178
7885
|
|
8179
7886
|
|
8180
|
-
__exports__["default"] = function attribute(
|
7887
|
+
__exports__["default"] = function attribute(env, morph, element, attrName, attrValue) {
|
8181
7888
|
if (boundAttributesEnabled) {
|
8182
|
-
var
|
8183
|
-
|
7889
|
+
var attrNode = new AttrNode(attrName, attrValue);
|
7890
|
+
attrNode._morph = morph;
|
7891
|
+
env.data.view.appendChild(attrNode);
|
8184
7892
|
} else {
|
8185
7893
|
if (isStream(attrValue)) {
|
8186
7894
|
throw new EmberError('Bound attributes are not yet supported in Ember.js');
|
8187
7895
|
} else {
|
8188
7896
|
var sanitizedValue = sanitizeAttributeValue(element, attrName, attrValue);
|
8189
|
-
env.dom.
|
7897
|
+
env.dom.setProperty(element, attrName, sanitizedValue);
|
8190
7898
|
}
|
8191
7899
|
}
|
8192
7900
|
}
|
8193
7901
|
});
|
7902
|
+
enifed("ember-htmlbars/hooks/block",
|
7903
|
+
["ember-views/views/simple_bound_view","ember-metal/streams/utils","ember-htmlbars/system/lookup-helper","exports"],
|
7904
|
+
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
7905
|
+
"use strict";
|
7906
|
+
/**
|
7907
|
+
@module ember
|
7908
|
+
@submodule ember-htmlbars
|
7909
|
+
*/
|
7910
|
+
|
7911
|
+
var appendSimpleBoundView = __dependency1__.appendSimpleBoundView;
|
7912
|
+
var isStream = __dependency2__.isStream;
|
7913
|
+
var lookupHelper = __dependency3__["default"];
|
7914
|
+
|
7915
|
+
__exports__["default"] = function block(env, morph, view, path, params, hash, template, inverse) {
|
7916
|
+
var helper = lookupHelper(path, view, env);
|
7917
|
+
|
7918
|
+
var options = {
|
7919
|
+
morph: morph,
|
7920
|
+
template: template,
|
7921
|
+
inverse: inverse,
|
7922
|
+
isBlock: true
|
7923
|
+
};
|
7924
|
+
var result = helper.helperFunction.call(view, params, hash, options, env);
|
7925
|
+
|
7926
|
+
if (isStream(result)) {
|
7927
|
+
appendSimpleBoundView(view, morph, result);
|
7928
|
+
} else {
|
7929
|
+
morph.setContent(result);
|
7930
|
+
}
|
7931
|
+
}
|
7932
|
+
});
|
8194
7933
|
enifed("ember-htmlbars/hooks/component",
|
8195
7934
|
["ember-metal/core","ember-htmlbars/system/lookup-helper","exports"],
|
8196
7935
|
function(__dependency1__, __dependency2__, __exports__) {
|
@@ -8203,13 +7942,12 @@ enifed("ember-htmlbars/hooks/component",
|
|
8203
7942
|
var Ember = __dependency1__["default"];
|
8204
7943
|
var lookupHelper = __dependency2__["default"];
|
8205
7944
|
|
8206
|
-
__exports__["default"] = function component(
|
8207
|
-
var params = [];
|
7945
|
+
__exports__["default"] = function component(env, morph, view, tagName, attrs, template) {
|
8208
7946
|
var helper = lookupHelper(tagName, view, env);
|
8209
7947
|
|
8210
7948
|
Ember.assert('You specified `' + tagName + '` in your template, but a component for `' + tagName + '` could not be found.', !!helper);
|
8211
7949
|
|
8212
|
-
return helper.helperFunction.call(view,
|
7950
|
+
return helper.helperFunction.call(view, [], attrs, {morph: morph, template: template}, env);
|
8213
7951
|
}
|
8214
7952
|
});
|
8215
7953
|
enifed("ember-htmlbars/hooks/concat",
|
@@ -8223,12 +7961,12 @@ enifed("ember-htmlbars/hooks/concat",
|
|
8223
7961
|
|
8224
7962
|
var streamConcat = __dependency1__.concat;
|
8225
7963
|
|
8226
|
-
__exports__["default"] = function concat(
|
8227
|
-
return streamConcat(
|
7964
|
+
__exports__["default"] = function concat(env, parts) {
|
7965
|
+
return streamConcat(parts, '');
|
8228
7966
|
}
|
8229
7967
|
});
|
8230
7968
|
enifed("ember-htmlbars/hooks/content",
|
8231
|
-
["ember-
|
7969
|
+
["ember-views/views/simple_bound_view","ember-metal/streams/utils","ember-htmlbars/system/lookup-helper","exports"],
|
8232
7970
|
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
8233
7971
|
"use strict";
|
8234
7972
|
/**
|
@@ -8236,17 +7974,28 @@ enifed("ember-htmlbars/hooks/content",
|
|
8236
7974
|
@submodule ember-htmlbars
|
8237
7975
|
*/
|
8238
7976
|
|
8239
|
-
var
|
8240
|
-
var
|
8241
|
-
var
|
7977
|
+
var appendSimpleBoundView = __dependency1__.appendSimpleBoundView;
|
7978
|
+
var isStream = __dependency2__.isStream;
|
7979
|
+
var lookupHelper = __dependency3__["default"];
|
8242
7980
|
|
8243
|
-
__exports__["default"] = function content(
|
8244
|
-
var
|
7981
|
+
__exports__["default"] = function content(env, morph, view, path) {
|
7982
|
+
var helper = lookupHelper(path, view, env);
|
7983
|
+
var result;
|
7984
|
+
|
7985
|
+
if (helper) {
|
7986
|
+
var options = {
|
7987
|
+
morph: morph,
|
7988
|
+
isInline: true
|
7989
|
+
};
|
7990
|
+
result = helper.helperFunction.call(view, [], {}, options, env);
|
7991
|
+
} else {
|
7992
|
+
result = view.getStream(path);
|
7993
|
+
}
|
8245
7994
|
|
8246
7995
|
if (isStream(result)) {
|
8247
7996
|
appendSimpleBoundView(view, morph, result);
|
8248
7997
|
} else {
|
8249
|
-
morph.
|
7998
|
+
morph.setContent(result);
|
8250
7999
|
}
|
8251
8000
|
}
|
8252
8001
|
});
|
@@ -8261,10 +8010,13 @@ enifed("ember-htmlbars/hooks/element",
|
|
8261
8010
|
|
8262
8011
|
var lookupHelper = __dependency1__["default"];
|
8263
8012
|
|
8264
|
-
__exports__["default"] = function element(
|
8013
|
+
__exports__["default"] = function element(env, domElement, view, path, params, hash) { //jshint ignore:line
|
8265
8014
|
var helper = lookupHelper(path, view, env);
|
8266
8015
|
|
8267
8016
|
if (helper) {
|
8017
|
+
var options = {
|
8018
|
+
element: domElement
|
8019
|
+
};
|
8268
8020
|
return helper.helperFunction.call(view, params, hash, options, env);
|
8269
8021
|
} else {
|
8270
8022
|
return view.getStream(path);
|
@@ -8280,10 +8032,37 @@ enifed("ember-htmlbars/hooks/get",
|
|
8280
8032
|
@submodule ember-htmlbars
|
8281
8033
|
*/
|
8282
8034
|
|
8283
|
-
__exports__["default"] = function get(view, path) {
|
8035
|
+
__exports__["default"] = function get(env, view, path) {
|
8284
8036
|
return view.getStream(path);
|
8285
8037
|
}
|
8286
8038
|
});
|
8039
|
+
enifed("ember-htmlbars/hooks/inline",
|
8040
|
+
["ember-views/views/simple_bound_view","ember-metal/streams/utils","ember-htmlbars/system/lookup-helper","exports"],
|
8041
|
+
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
8042
|
+
"use strict";
|
8043
|
+
/**
|
8044
|
+
@module ember
|
8045
|
+
@submodule ember-htmlbars
|
8046
|
+
*/
|
8047
|
+
|
8048
|
+
var appendSimpleBoundView = __dependency1__.appendSimpleBoundView;
|
8049
|
+
var isStream = __dependency2__.isStream;
|
8050
|
+
var lookupHelper = __dependency3__["default"];
|
8051
|
+
|
8052
|
+
__exports__["default"] = function inline(env, morph, view, path, params, hash) {
|
8053
|
+
var helper = lookupHelper(path, view, env);
|
8054
|
+
|
8055
|
+
Ember.assert("A helper named '"+path+"' could not be found", helper);
|
8056
|
+
|
8057
|
+
var result = helper.helperFunction.call(view, params, hash, {morph: morph}, env);
|
8058
|
+
|
8059
|
+
if (isStream(result)) {
|
8060
|
+
appendSimpleBoundView(view, morph, result);
|
8061
|
+
} else {
|
8062
|
+
morph.setContent(result);
|
8063
|
+
}
|
8064
|
+
}
|
8065
|
+
});
|
8287
8066
|
enifed("ember-htmlbars/hooks/set",
|
8288
8067
|
["ember-metal/core","ember-metal/error","exports"],
|
8289
8068
|
function(__dependency1__, __dependency2__, __exports__) {
|
@@ -8296,7 +8075,7 @@ enifed("ember-htmlbars/hooks/set",
|
|
8296
8075
|
var Ember = __dependency1__["default"];
|
8297
8076
|
var EmberError = __dependency2__["default"];
|
8298
8077
|
|
8299
|
-
__exports__["default"] = function set(view, name, value) {
|
8078
|
+
__exports__["default"] = function set(env, view, name, value) {
|
8300
8079
|
|
8301
8080
|
view._keywords[name] = value;
|
8302
8081
|
}
|
@@ -8312,14 +8091,15 @@ enifed("ember-htmlbars/hooks/subexpr",
|
|
8312
8091
|
|
8313
8092
|
var lookupHelper = __dependency1__["default"];
|
8314
8093
|
|
8315
|
-
__exports__["default"] = function subexpr(
|
8094
|
+
__exports__["default"] = function subexpr(env, view, path, params, hash) {
|
8316
8095
|
var helper = lookupHelper(path, view, env);
|
8317
8096
|
|
8318
|
-
|
8319
|
-
|
8320
|
-
|
8321
|
-
|
8322
|
-
}
|
8097
|
+
Ember.assert("A helper named '"+path+"' could not be found", helper);
|
8098
|
+
|
8099
|
+
var options = {
|
8100
|
+
isInline: true
|
8101
|
+
};
|
8102
|
+
return helper.helperFunction.call(view, params, hash, options, env);
|
8323
8103
|
}
|
8324
8104
|
});
|
8325
8105
|
enifed("ember-htmlbars/system/bootstrap",
|
@@ -8670,7 +8450,9 @@ enifed("ember-htmlbars/templates/component",
|
|
8670
8450
|
var t = (function() {
|
8671
8451
|
return {
|
8672
8452
|
isHTMLBars: true,
|
8453
|
+
blockParams: 0,
|
8673
8454
|
cachedFragment: null,
|
8455
|
+
hasRendered: false,
|
8674
8456
|
build: function build(dom) {
|
8675
8457
|
var el0 = dom.createDocumentFragment();
|
8676
8458
|
var el1 = dom.createTextNode("");
|
@@ -8683,13 +8465,21 @@ enifed("ember-htmlbars/templates/component",
|
|
8683
8465
|
var dom = env.dom;
|
8684
8466
|
var hooks = env.hooks, content = hooks.content;
|
8685
8467
|
dom.detectNamespace(contextualElement);
|
8468
|
+
var fragment;
|
8686
8469
|
if (this.cachedFragment === null) {
|
8687
|
-
|
8470
|
+
fragment = this.build(dom);
|
8471
|
+
if (this.hasRendered) {
|
8472
|
+
this.cachedFragment = fragment;
|
8473
|
+
} else {
|
8474
|
+
this.hasRendered = true;
|
8475
|
+
}
|
8476
|
+
}
|
8477
|
+
if (this.cachedFragment) {
|
8478
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8688
8479
|
}
|
8689
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8690
8480
|
dom.repairClonedNode(fragment,[0,1]);
|
8691
8481
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8692
|
-
content(
|
8482
|
+
content(env, morph0, context, "yield");
|
8693
8483
|
return fragment;
|
8694
8484
|
}
|
8695
8485
|
};
|
@@ -8705,22 +8495,32 @@ enifed("ember-htmlbars/templates/select",
|
|
8705
8495
|
var child0 = (function() {
|
8706
8496
|
return {
|
8707
8497
|
isHTMLBars: true,
|
8498
|
+
blockParams: 0,
|
8708
8499
|
cachedFragment: null,
|
8500
|
+
hasRendered: false,
|
8709
8501
|
build: function build(dom) {
|
8710
8502
|
var el0 = dom.createElement("option");
|
8711
|
-
dom.
|
8503
|
+
dom.setProperty(el0,"value","");
|
8712
8504
|
return el0;
|
8713
8505
|
},
|
8714
8506
|
render: function render(context, env, contextualElement) {
|
8715
8507
|
var dom = env.dom;
|
8716
8508
|
var hooks = env.hooks, content = hooks.content;
|
8717
8509
|
dom.detectNamespace(contextualElement);
|
8510
|
+
var fragment;
|
8718
8511
|
if (this.cachedFragment === null) {
|
8719
|
-
|
8512
|
+
fragment = this.build(dom);
|
8513
|
+
if (this.hasRendered) {
|
8514
|
+
this.cachedFragment = fragment;
|
8515
|
+
} else {
|
8516
|
+
this.hasRendered = true;
|
8517
|
+
}
|
8518
|
+
}
|
8519
|
+
if (this.cachedFragment) {
|
8520
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8720
8521
|
}
|
8721
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8722
8522
|
var morph0 = dom.createMorphAt(fragment,-1,-1);
|
8723
|
-
content(morph0, "view.prompt"
|
8523
|
+
content(env, morph0, context, "view.prompt");
|
8724
8524
|
return fragment;
|
8725
8525
|
}
|
8726
8526
|
};
|
@@ -8729,7 +8529,9 @@ enifed("ember-htmlbars/templates/select",
|
|
8729
8529
|
var child0 = (function() {
|
8730
8530
|
return {
|
8731
8531
|
isHTMLBars: true,
|
8532
|
+
blockParams: 0,
|
8732
8533
|
cachedFragment: null,
|
8534
|
+
hasRendered: false,
|
8733
8535
|
build: function build(dom) {
|
8734
8536
|
var el0 = dom.createDocumentFragment();
|
8735
8537
|
var el1 = dom.createTextNode("");
|
@@ -8740,22 +8542,32 @@ enifed("ember-htmlbars/templates/select",
|
|
8740
8542
|
},
|
8741
8543
|
render: function render(context, env, contextualElement) {
|
8742
8544
|
var dom = env.dom;
|
8743
|
-
var hooks = env.hooks, get = hooks.get,
|
8545
|
+
var hooks = env.hooks, get = hooks.get, inline = hooks.inline;
|
8744
8546
|
dom.detectNamespace(contextualElement);
|
8547
|
+
var fragment;
|
8745
8548
|
if (this.cachedFragment === null) {
|
8746
|
-
|
8549
|
+
fragment = this.build(dom);
|
8550
|
+
if (this.hasRendered) {
|
8551
|
+
this.cachedFragment = fragment;
|
8552
|
+
} else {
|
8553
|
+
this.hasRendered = true;
|
8554
|
+
}
|
8555
|
+
}
|
8556
|
+
if (this.cachedFragment) {
|
8557
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8747
8558
|
}
|
8748
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8749
8559
|
dom.repairClonedNode(fragment,[0,1]);
|
8750
8560
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8751
|
-
|
8561
|
+
inline(env, morph0, context, "view", [get(env, context, "view.groupView")], {"content": get(env, context, "group.content"), "label": get(env, context, "group.label")});
|
8752
8562
|
return fragment;
|
8753
8563
|
}
|
8754
8564
|
};
|
8755
8565
|
}());
|
8756
8566
|
return {
|
8757
8567
|
isHTMLBars: true,
|
8568
|
+
blockParams: 0,
|
8758
8569
|
cachedFragment: null,
|
8570
|
+
hasRendered: false,
|
8759
8571
|
build: function build(dom) {
|
8760
8572
|
var el0 = dom.createDocumentFragment();
|
8761
8573
|
var el1 = dom.createTextNode("");
|
@@ -8766,15 +8578,23 @@ enifed("ember-htmlbars/templates/select",
|
|
8766
8578
|
},
|
8767
8579
|
render: function render(context, env, contextualElement) {
|
8768
8580
|
var dom = env.dom;
|
8769
|
-
var hooks = env.hooks, get = hooks.get,
|
8581
|
+
var hooks = env.hooks, get = hooks.get, block = hooks.block;
|
8770
8582
|
dom.detectNamespace(contextualElement);
|
8583
|
+
var fragment;
|
8771
8584
|
if (this.cachedFragment === null) {
|
8772
|
-
|
8585
|
+
fragment = this.build(dom);
|
8586
|
+
if (this.hasRendered) {
|
8587
|
+
this.cachedFragment = fragment;
|
8588
|
+
} else {
|
8589
|
+
this.hasRendered = true;
|
8590
|
+
}
|
8591
|
+
}
|
8592
|
+
if (this.cachedFragment) {
|
8593
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8773
8594
|
}
|
8774
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8775
8595
|
dom.repairClonedNode(fragment,[0,1]);
|
8776
8596
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8777
|
-
|
8597
|
+
block(env, morph0, context, "each", [get(env, context, "view.groupedContent")], {"keyword": "group"}, child0, null);
|
8778
8598
|
return fragment;
|
8779
8599
|
}
|
8780
8600
|
};
|
@@ -8783,7 +8603,9 @@ enifed("ember-htmlbars/templates/select",
|
|
8783
8603
|
var child0 = (function() {
|
8784
8604
|
return {
|
8785
8605
|
isHTMLBars: true,
|
8606
|
+
blockParams: 0,
|
8786
8607
|
cachedFragment: null,
|
8608
|
+
hasRendered: false,
|
8787
8609
|
build: function build(dom) {
|
8788
8610
|
var el0 = dom.createDocumentFragment();
|
8789
8611
|
var el1 = dom.createTextNode("");
|
@@ -8794,22 +8616,32 @@ enifed("ember-htmlbars/templates/select",
|
|
8794
8616
|
},
|
8795
8617
|
render: function render(context, env, contextualElement) {
|
8796
8618
|
var dom = env.dom;
|
8797
|
-
var hooks = env.hooks, get = hooks.get,
|
8619
|
+
var hooks = env.hooks, get = hooks.get, inline = hooks.inline;
|
8798
8620
|
dom.detectNamespace(contextualElement);
|
8621
|
+
var fragment;
|
8799
8622
|
if (this.cachedFragment === null) {
|
8800
|
-
|
8623
|
+
fragment = this.build(dom);
|
8624
|
+
if (this.hasRendered) {
|
8625
|
+
this.cachedFragment = fragment;
|
8626
|
+
} else {
|
8627
|
+
this.hasRendered = true;
|
8628
|
+
}
|
8629
|
+
}
|
8630
|
+
if (this.cachedFragment) {
|
8631
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8801
8632
|
}
|
8802
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8803
8633
|
dom.repairClonedNode(fragment,[0,1]);
|
8804
8634
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8805
|
-
|
8635
|
+
inline(env, morph0, context, "view", [get(env, context, "view.optionView")], {"content": get(env, context, "item")});
|
8806
8636
|
return fragment;
|
8807
8637
|
}
|
8808
8638
|
};
|
8809
8639
|
}());
|
8810
8640
|
return {
|
8811
8641
|
isHTMLBars: true,
|
8642
|
+
blockParams: 0,
|
8812
8643
|
cachedFragment: null,
|
8644
|
+
hasRendered: false,
|
8813
8645
|
build: function build(dom) {
|
8814
8646
|
var el0 = dom.createDocumentFragment();
|
8815
8647
|
var el1 = dom.createTextNode("");
|
@@ -8820,22 +8652,32 @@ enifed("ember-htmlbars/templates/select",
|
|
8820
8652
|
},
|
8821
8653
|
render: function render(context, env, contextualElement) {
|
8822
8654
|
var dom = env.dom;
|
8823
|
-
var hooks = env.hooks, get = hooks.get,
|
8655
|
+
var hooks = env.hooks, get = hooks.get, block = hooks.block;
|
8824
8656
|
dom.detectNamespace(contextualElement);
|
8657
|
+
var fragment;
|
8825
8658
|
if (this.cachedFragment === null) {
|
8826
|
-
|
8659
|
+
fragment = this.build(dom);
|
8660
|
+
if (this.hasRendered) {
|
8661
|
+
this.cachedFragment = fragment;
|
8662
|
+
} else {
|
8663
|
+
this.hasRendered = true;
|
8664
|
+
}
|
8665
|
+
}
|
8666
|
+
if (this.cachedFragment) {
|
8667
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8827
8668
|
}
|
8828
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8829
8669
|
dom.repairClonedNode(fragment,[0,1]);
|
8830
8670
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8831
|
-
|
8671
|
+
block(env, morph0, context, "each", [get(env, context, "view.content")], {"keyword": "item"}, child0, null);
|
8832
8672
|
return fragment;
|
8833
8673
|
}
|
8834
8674
|
};
|
8835
8675
|
}());
|
8836
8676
|
return {
|
8837
8677
|
isHTMLBars: true,
|
8678
|
+
blockParams: 0,
|
8838
8679
|
cachedFragment: null,
|
8680
|
+
hasRendered: false,
|
8839
8681
|
build: function build(dom) {
|
8840
8682
|
var el0 = dom.createDocumentFragment();
|
8841
8683
|
var el1 = dom.createTextNode("");
|
@@ -8848,17 +8690,25 @@ enifed("ember-htmlbars/templates/select",
|
|
8848
8690
|
},
|
8849
8691
|
render: function render(context, env, contextualElement) {
|
8850
8692
|
var dom = env.dom;
|
8851
|
-
var hooks = env.hooks, get = hooks.get,
|
8693
|
+
var hooks = env.hooks, get = hooks.get, block = hooks.block;
|
8852
8694
|
dom.detectNamespace(contextualElement);
|
8695
|
+
var fragment;
|
8853
8696
|
if (this.cachedFragment === null) {
|
8854
|
-
|
8697
|
+
fragment = this.build(dom);
|
8698
|
+
if (this.hasRendered) {
|
8699
|
+
this.cachedFragment = fragment;
|
8700
|
+
} else {
|
8701
|
+
this.hasRendered = true;
|
8702
|
+
}
|
8703
|
+
}
|
8704
|
+
if (this.cachedFragment) {
|
8705
|
+
fragment = dom.cloneNode(this.cachedFragment, true);
|
8855
8706
|
}
|
8856
|
-
var fragment = dom.cloneNode(this.cachedFragment, true);
|
8857
8707
|
dom.repairClonedNode(fragment,[0,1]);
|
8858
8708
|
var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);
|
8859
8709
|
var morph1 = dom.createMorphAt(fragment,1,2,contextualElement);
|
8860
|
-
|
8861
|
-
|
8710
|
+
block(env, morph0, context, "if", [get(env, context, "view.prompt")], {}, child0, null);
|
8711
|
+
block(env, morph1, context, "if", [get(env, context, "view.optionGroupPath")], {}, child1, child2);
|
8862
8712
|
return fragment;
|
8863
8713
|
}
|
8864
8714
|
};
|
@@ -9003,7 +8853,6 @@ enifed("ember-metal-views/renderer",
|
|
9003
8853
|
// was previously called on a view.
|
9004
8854
|
contextualElement = document.body;
|
9005
8855
|
}
|
9006
|
-
Ember.assert("Required contextualElement for view "+_view+" is missing", contextualElement);
|
9007
8856
|
element = this.createElement(view, contextualElement);
|
9008
8857
|
|
9009
8858
|
parents[level++] = parentIndex;
|
@@ -9172,7 +9021,7 @@ enifed("ember-metal-views/renderer",
|
|
9172
9021
|
}
|
9173
9022
|
|
9174
9023
|
if (view._morph) {
|
9175
|
-
view._morph.
|
9024
|
+
view._morph.setContent(element);
|
9176
9025
|
} else if (parentView) {
|
9177
9026
|
if (index === -1) {
|
9178
9027
|
view._morph = parentView._childViewsMorph.append(element);
|
@@ -12076,7 +11925,7 @@ enifed("ember-metal/core",
|
|
12076
11925
|
|
12077
11926
|
@class Ember
|
12078
11927
|
@static
|
12079
|
-
@version 1.10.0-beta.
|
11928
|
+
@version 1.10.0-beta.3
|
12080
11929
|
*/
|
12081
11930
|
|
12082
11931
|
if ('undefined' === typeof Ember) {
|
@@ -12103,10 +11952,10 @@ enifed("ember-metal/core",
|
|
12103
11952
|
/**
|
12104
11953
|
@property VERSION
|
12105
11954
|
@type String
|
12106
|
-
@default '1.10.0-beta.
|
11955
|
+
@default '1.10.0-beta.3'
|
12107
11956
|
@static
|
12108
11957
|
*/
|
12109
|
-
Ember.VERSION = '1.10.0-beta.
|
11958
|
+
Ember.VERSION = '1.10.0-beta.3';
|
12110
11959
|
|
12111
11960
|
/**
|
12112
11961
|
Standard environmental variables. You can define these in a global `EmberENV`
|
@@ -18821,9 +18670,11 @@ enifed("ember-metal/watch_key",
|
|
18821
18670
|
var handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) {
|
18822
18671
|
var descriptor = Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(obj, keyName);
|
18823
18672
|
var configurable = descriptor ? descriptor.configurable : true;
|
18673
|
+
var isWritable = descriptor ? descriptor.writable : true;
|
18674
|
+
var hasValue = descriptor ? 'value' in descriptor : true;
|
18824
18675
|
|
18825
18676
|
// this x in Y deopts, so keeping it in this function is better;
|
18826
|
-
if (configurable && keyName in obj) {
|
18677
|
+
if (configurable && isWritable && hasValue && keyName in obj) {
|
18827
18678
|
m.values[keyName] = obj[keyName];
|
18828
18679
|
o_defineProperty(obj, keyName, {
|
18829
18680
|
configurable: true,
|
@@ -21125,7 +20976,8 @@ enifed("ember-routing/ext/controller",
|
|
21125
20976
|
var ALL_PERIODS_REGEX = /\./g;
|
21126
20977
|
|
21127
20978
|
function accumulateQueryParamDescriptors(_desc, accum) {
|
21128
|
-
var desc = _desc
|
20979
|
+
var desc = _desc;
|
20980
|
+
var tmp;
|
21129
20981
|
if (typeOf(desc) === 'string') {
|
21130
20982
|
tmp = {};
|
21131
20983
|
tmp[desc] = { as: null };
|
@@ -23682,7 +23534,7 @@ enifed("ember-routing/system/route",
|
|
23682
23534
|
|
23683
23535
|
```javascript
|
23684
23536
|
App.Router.map(function() {
|
23685
|
-
this.route(
|
23537
|
+
this.route('index');
|
23686
23538
|
});
|
23687
23539
|
|
23688
23540
|
App.ApplicationRoute = Ember.Route.extend({
|
@@ -24624,7 +24476,8 @@ enifed("ember-routing/system/route",
|
|
24624
24476
|
function handlerInfoFor(route, handlerInfos, _offset) {
|
24625
24477
|
if (!handlerInfos) { return; }
|
24626
24478
|
|
24627
|
-
var offset = _offset || 0
|
24479
|
+
var offset = _offset || 0;
|
24480
|
+
var current;
|
24628
24481
|
for (var i=0, l=handlerInfos.length; i<l; i++) {
|
24629
24482
|
current = handlerInfos[i].handler;
|
24630
24483
|
if (current === route) { return handlerInfos[i+offset]; }
|
@@ -24632,7 +24485,8 @@ enifed("ember-routing/system/route",
|
|
24632
24485
|
}
|
24633
24486
|
|
24634
24487
|
function parentTemplate(route) {
|
24635
|
-
var parent = parentRoute(route)
|
24488
|
+
var parent = parentRoute(route);
|
24489
|
+
var template;
|
24636
24490
|
|
24637
24491
|
if (!parent) { return; }
|
24638
24492
|
|
@@ -24941,7 +24795,8 @@ enifed("ember-routing/system/router",
|
|
24941
24795
|
},
|
24942
24796
|
|
24943
24797
|
transitionTo: function() {
|
24944
|
-
var args = slice.call(arguments)
|
24798
|
+
var args = slice.call(arguments);
|
24799
|
+
var queryParams;
|
24945
24800
|
if (resemblesURL(args[0])) {
|
24946
24801
|
return this._doURLTransition('transitionTo', args[0]);
|
24947
24802
|
}
|
@@ -27291,14 +27146,15 @@ enifed("ember-runtime/computed/reduce_computed_macros",
|
|
27291
27146
|
The callback method you provide should have the following signature.
|
27292
27147
|
`item` is the current item in the iteration.
|
27293
27148
|
`index` is the integer index of the current item in the iteration.
|
27149
|
+
`array` is the dependant array itself.
|
27294
27150
|
|
27295
27151
|
```javascript
|
27296
|
-
function(item, index);
|
27152
|
+
function(item, index, array);
|
27297
27153
|
```
|
27298
27154
|
|
27299
27155
|
```javascript
|
27300
27156
|
var Hamster = Ember.Object.extend({
|
27301
|
-
remainingChores: Ember.computed.filter('chores', function(chore, index) {
|
27157
|
+
remainingChores: Ember.computed.filter('chores', function(chore, index, array) {
|
27302
27158
|
return !chore.done;
|
27303
27159
|
})
|
27304
27160
|
});
|
@@ -27327,7 +27183,7 @@ enifed("ember-runtime/computed/reduce_computed_macros",
|
|
27327
27183
|
},
|
27328
27184
|
|
27329
27185
|
addedItem: function (array, item, changeMeta, instanceMeta) {
|
27330
|
-
var match = !!callback.call(this, item, changeMeta.index);
|
27186
|
+
var match = !!callback.call(this, item, changeMeta.index, changeMeta.arrayChanged);
|
27331
27187
|
var filterIndex = instanceMeta.filteredArrayIndexes.addItem(changeMeta.index, match);
|
27332
27188
|
|
27333
27189
|
if (match) {
|
@@ -38261,6 +38117,109 @@ enifed("ember-views",
|
|
38261
38117
|
|
38262
38118
|
__exports__["default"] = Ember;
|
38263
38119
|
});
|
38120
|
+
enifed("ember-views/attr_nodes/attr_node",
|
38121
|
+
["ember-metal/streams/utils","ember-metal/run_loop","exports"],
|
38122
|
+
function(__dependency1__, __dependency2__, __exports__) {
|
38123
|
+
"use strict";
|
38124
|
+
/**
|
38125
|
+
@module ember
|
38126
|
+
@submodule ember-htmlbars
|
38127
|
+
*/
|
38128
|
+
|
38129
|
+
var read = __dependency1__.read;
|
38130
|
+
var subscribe = __dependency1__.subscribe;
|
38131
|
+
var unsubscribe = __dependency1__.unsubscribe;
|
38132
|
+
var run = __dependency2__["default"];
|
38133
|
+
|
38134
|
+
function AttrNode(attrName, attrValue) {
|
38135
|
+
this.init(attrName, attrValue);
|
38136
|
+
}
|
38137
|
+
|
38138
|
+
AttrNode.prototype.init = function init(attrName, simpleAttrValue){
|
38139
|
+
this.isView = true;
|
38140
|
+
|
38141
|
+
// That these semantics are used is very unfortunate.
|
38142
|
+
this.tagName = '';
|
38143
|
+
this.classNameBindings = [];
|
38144
|
+
|
38145
|
+
this.attrName = attrName;
|
38146
|
+
this.attrValue = simpleAttrValue;
|
38147
|
+
this.isDirty = true;
|
38148
|
+
this.lastValue = null;
|
38149
|
+
|
38150
|
+
subscribe(this.attrValue, this.rerender, this);
|
38151
|
+
};
|
38152
|
+
|
38153
|
+
AttrNode.prototype.renderIfDirty = function renderIfDirty(){
|
38154
|
+
if (this.isDirty) {
|
38155
|
+
var value = read(this.attrValue);
|
38156
|
+
if (value !== this.lastValue) {
|
38157
|
+
this._renderer.renderTree(this, this._parentView);
|
38158
|
+
} else {
|
38159
|
+
this.isDirty = false;
|
38160
|
+
}
|
38161
|
+
}
|
38162
|
+
};
|
38163
|
+
|
38164
|
+
AttrNode.prototype.render = function render(buffer) {
|
38165
|
+
this.isDirty = false;
|
38166
|
+
var value = read(this.attrValue);
|
38167
|
+
|
38168
|
+
this._morph.setContent(value);
|
38169
|
+
|
38170
|
+
this.lastValue = value;
|
38171
|
+
};
|
38172
|
+
|
38173
|
+
AttrNode.prototype.rerender = function render() {
|
38174
|
+
this.isDirty = true;
|
38175
|
+
run.schedule('render', this, this.renderIfDirty);
|
38176
|
+
};
|
38177
|
+
|
38178
|
+
AttrNode.prototype.destroy = function render() {
|
38179
|
+
this.isDirty = false;
|
38180
|
+
unsubscribe(this.attrValue, this.rerender, this);
|
38181
|
+
|
38182
|
+
var parent = this._parentView;
|
38183
|
+
if (parent) { parent.removeChild(this); }
|
38184
|
+
};
|
38185
|
+
|
38186
|
+
__exports__["default"] = AttrNode;
|
38187
|
+
});
|
38188
|
+
enifed("ember-views/attr_nodes/legacy_bind",
|
38189
|
+
["./attr_node","ember-runtime/system/string","ember-metal/utils","ember-metal/streams/utils","exports"],
|
38190
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
38191
|
+
"use strict";
|
38192
|
+
/**
|
38193
|
+
@module ember
|
38194
|
+
@submodule ember-htmlbars
|
38195
|
+
*/
|
38196
|
+
|
38197
|
+
var AttrNode = __dependency1__["default"];
|
38198
|
+
var fmt = __dependency2__.fmt;
|
38199
|
+
var typeOf = __dependency3__.typeOf;
|
38200
|
+
var read = __dependency4__.read;
|
38201
|
+
|
38202
|
+
function LegacyBindAttrNode(attrName, attrValue) {
|
38203
|
+
this.init(attrName, attrValue);
|
38204
|
+
}
|
38205
|
+
|
38206
|
+
LegacyBindAttrNode.prototype = AttrNode.prototype;
|
38207
|
+
|
38208
|
+
LegacyBindAttrNode.prototype.render = function render(buffer) {
|
38209
|
+
this.isDirty = false;
|
38210
|
+
var value = read(this.attrValue);
|
38211
|
+
var type = typeOf(value);
|
38212
|
+
|
38213
|
+
Ember.assert(fmt("Attributes must be numbers, strings or booleans, not %@", [value]),
|
38214
|
+
value === null || value === undefined || type === 'number' || type === 'string' || type === 'boolean');
|
38215
|
+
|
38216
|
+
this._morph.setContent(value);
|
38217
|
+
|
38218
|
+
this.lastValue = value;
|
38219
|
+
};
|
38220
|
+
|
38221
|
+
__exports__["default"] = LegacyBindAttrNode;
|
38222
|
+
});
|
38264
38223
|
enifed("ember-views/component_lookup",
|
38265
38224
|
["ember-runtime/system/object","exports"],
|
38266
38225
|
function(__dependency1__, __exports__) {
|
@@ -40013,7 +39972,7 @@ enifed("ember-views/system/render_buffer",
|
|
40013
39972
|
|
40014
39973
|
if (props) {
|
40015
39974
|
for (prop in props) {
|
40016
|
-
this.dom.
|
39975
|
+
this.dom.setPropertyStrict(element, prop, props[prop]);
|
40017
39976
|
}
|
40018
39977
|
|
40019
39978
|
this.elementProperties = null;
|
@@ -42895,7 +42854,7 @@ enifed("ember-views/views/simple_bound_view",
|
|
42895
42854
|
// doesn't diff SafeString instances
|
42896
42855
|
if (value !== this._lastNormalizedValue) {
|
42897
42856
|
this._lastNormalizedValue = value;
|
42898
|
-
this._morph.
|
42857
|
+
this._morph.setContent(value);
|
42899
42858
|
}
|
42900
42859
|
},
|
42901
42860
|
|
@@ -45800,6 +45759,11 @@ enifed("htmlbars-compiler/fragment-javascript-compiler",
|
|
45800
45759
|
var processOpcodes = __dependency1__.processOpcodes;
|
45801
45760
|
var string = __dependency2__.string;
|
45802
45761
|
|
45762
|
+
var svgNamespace = "http://www.w3.org/2000/svg",
|
45763
|
+
// http://www.w3.org/html/wg/drafts/html/master/syntax.html#html-integration-point
|
45764
|
+
svgHTMLIntegrationPoints = {'foreignObject':true, 'desc':true, 'title':true};
|
45765
|
+
|
45766
|
+
|
45803
45767
|
function FragmentJavaScriptCompiler() {
|
45804
45768
|
this.source = [];
|
45805
45769
|
this.depth = -1;
|
@@ -45811,6 +45775,8 @@ enifed("htmlbars-compiler/fragment-javascript-compiler",
|
|
45811
45775
|
this.source.length = 0;
|
45812
45776
|
this.depth = -1;
|
45813
45777
|
this.indent = (options && options.indent) || "";
|
45778
|
+
this.namespaceFrameStack = [{namespace: null, depth: null}];
|
45779
|
+
this.domNamespace = null;
|
45814
45780
|
|
45815
45781
|
this.source.push('function build(dom) {\n');
|
45816
45782
|
processOpcodes(this, opcodes);
|
@@ -45826,7 +45792,14 @@ enifed("htmlbars-compiler/fragment-javascript-compiler",
|
|
45826
45792
|
|
45827
45793
|
FragmentJavaScriptCompiler.prototype.createElement = function(tagName) {
|
45828
45794
|
var el = 'el'+(++this.depth);
|
45795
|
+
if (tagName === 'svg') {
|
45796
|
+
this.pushNamespaceFrame({namespace: svgNamespace, depth: this.depth});
|
45797
|
+
}
|
45798
|
+
this.ensureNamespace();
|
45829
45799
|
this.source.push(this.indent+' var '+el+' = dom.createElement('+string(tagName)+');\n');
|
45800
|
+
if (svgHTMLIntegrationPoints[tagName]) {
|
45801
|
+
this.pushNamespaceFrame({namespace: null, depth: this.depth});
|
45802
|
+
}
|
45830
45803
|
};
|
45831
45804
|
|
45832
45805
|
FragmentJavaScriptCompiler.prototype.createText = function(str) {
|
@@ -45846,17 +45819,36 @@ enifed("htmlbars-compiler/fragment-javascript-compiler",
|
|
45846
45819
|
|
45847
45820
|
FragmentJavaScriptCompiler.prototype.setAttribute = function(name, value) {
|
45848
45821
|
var el = 'el'+this.depth;
|
45849
|
-
this.source.push(this.indent+' dom.
|
45822
|
+
this.source.push(this.indent+' dom.setProperty('+el+','+string(name)+','+string(value)+');\n');
|
45850
45823
|
};
|
45851
45824
|
|
45852
45825
|
FragmentJavaScriptCompiler.prototype.appendChild = function() {
|
45826
|
+
if (this.depth === this.getCurrentNamespaceFrame().depth) {
|
45827
|
+
this.popNamespaceFrame();
|
45828
|
+
}
|
45853
45829
|
var child = 'el'+(this.depth--);
|
45854
45830
|
var el = 'el'+this.depth;
|
45855
45831
|
this.source.push(this.indent+' dom.appendChild('+el+', '+child+');\n');
|
45856
45832
|
};
|
45857
45833
|
|
45858
|
-
FragmentJavaScriptCompiler.prototype.
|
45859
|
-
this.
|
45834
|
+
FragmentJavaScriptCompiler.prototype.getCurrentNamespaceFrame = function() {
|
45835
|
+
return this.namespaceFrameStack[this.namespaceFrameStack.length-1];
|
45836
|
+
};
|
45837
|
+
|
45838
|
+
FragmentJavaScriptCompiler.prototype.pushNamespaceFrame = function(frame) {
|
45839
|
+
this.namespaceFrameStack.push(frame);
|
45840
|
+
};
|
45841
|
+
|
45842
|
+
FragmentJavaScriptCompiler.prototype.popNamespaceFrame = function() {
|
45843
|
+
return this.namespaceFrameStack.pop();
|
45844
|
+
};
|
45845
|
+
|
45846
|
+
FragmentJavaScriptCompiler.prototype.ensureNamespace = function() {
|
45847
|
+
var correctNamespace = this.getCurrentNamespaceFrame().namespace;
|
45848
|
+
if (this.domNamespace !== correctNamespace) {
|
45849
|
+
this.source.push(this.indent+' dom.setNamespace('+(correctNamespace ? string(correctNamespace) : 'null')+');\n');
|
45850
|
+
this.domNamespace = correctNamespace;
|
45851
|
+
}
|
45860
45852
|
};
|
45861
45853
|
});
|
45862
45854
|
enifed("htmlbars-compiler/fragment-opcode-compiler",
|
@@ -45938,14 +45930,13 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
45938
45930
|
"use strict";
|
45939
45931
|
var processOpcodes = __dependency1__.processOpcodes;
|
45940
45932
|
var string = __dependency2__.string;
|
45941
|
-
var quoteHash = __dependency2__.hash;
|
45942
45933
|
var array = __dependency2__.array;
|
45943
45934
|
|
45944
45935
|
function HydrationJavaScriptCompiler() {
|
45945
45936
|
this.stack = [];
|
45946
45937
|
this.source = [];
|
45947
45938
|
this.mustaches = [];
|
45948
|
-
this.parents = ['fragment'];
|
45939
|
+
this.parents = [['fragment']];
|
45949
45940
|
this.parentCount = 0;
|
45950
45941
|
this.morphs = [];
|
45951
45942
|
this.fragmentProcessing = [];
|
@@ -45961,7 +45952,7 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
45961
45952
|
this.mustaches.length = 0;
|
45962
45953
|
this.source.length = 0;
|
45963
45954
|
this.parents.length = 1;
|
45964
|
-
this.parents[0] = 'fragment';
|
45955
|
+
this.parents[0] = ['fragment'];
|
45965
45956
|
this.morphs.length = 0;
|
45966
45957
|
this.fragmentProcessing.length = 0;
|
45967
45958
|
this.parentCount = 0;
|
@@ -46023,124 +46014,113 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
46023
46014
|
}
|
46024
46015
|
};
|
46025
46016
|
|
46017
|
+
prototype.pushHook = function(name, args) {
|
46018
|
+
this.hooks[name] = true;
|
46019
|
+
this.stack.push(name + '(' + args.join(', ') + ')');
|
46020
|
+
};
|
46021
|
+
|
46026
46022
|
prototype.pushGetHook = function(path) {
|
46027
|
-
this.
|
46028
|
-
|
46023
|
+
this.pushHook('get', [
|
46024
|
+
'env',
|
46025
|
+
'context',
|
46026
|
+
string(path)
|
46027
|
+
]);
|
46029
46028
|
};
|
46030
46029
|
|
46031
46030
|
prototype.pushSexprHook = function() {
|
46032
|
-
this.
|
46033
|
-
|
46034
|
-
|
46035
|
-
|
46036
|
-
|
46031
|
+
this.pushHook('subexpr', [
|
46032
|
+
'env',
|
46033
|
+
'context',
|
46034
|
+
this.stack.pop(), // path
|
46035
|
+
this.stack.pop(), // params
|
46036
|
+
this.stack.pop() // hash
|
46037
|
+
]);
|
46037
46038
|
};
|
46038
46039
|
|
46039
46040
|
prototype.pushConcatHook = function() {
|
46040
|
-
this.
|
46041
|
-
|
46042
|
-
|
46043
|
-
|
46044
|
-
|
46045
|
-
prototype.printSetHook = function(name, index) {
|
46046
|
-
this.hooks.set = true;
|
46047
|
-
this.source.push(this.indent + ' set(context, ' + string(name) +', blockArguments[' + index + ']);\n');
|
46048
|
-
};
|
46049
|
-
|
46050
|
-
prototype.printContentHookForBlockHelper = function(morphNum, templateId, inverseId, blockParamsLength) {
|
46051
|
-
var path = this.stack.pop();
|
46052
|
-
var params = this.stack.pop();
|
46053
|
-
var hash = this.stack.pop();
|
46054
|
-
|
46055
|
-
var options = [];
|
46056
|
-
|
46057
|
-
options.push('morph: morph' + morphNum);
|
46058
|
-
|
46059
|
-
if (templateId !== null) {
|
46060
|
-
options.push('template: child' + templateId);
|
46061
|
-
}
|
46062
|
-
|
46063
|
-
if (inverseId !== null) {
|
46064
|
-
options.push('inverse: child' + inverseId);
|
46065
|
-
}
|
46066
|
-
|
46067
|
-
if (blockParamsLength) {
|
46068
|
-
options.push('blockParams: ' + blockParamsLength);
|
46069
|
-
}
|
46070
|
-
|
46071
|
-
this.printContentHook(morphNum, path, params, hash, options);
|
46072
|
-
};
|
46073
|
-
|
46074
|
-
prototype.printContentHookForInlineHelper = function(morphNum) {
|
46075
|
-
var path = this.stack.pop();
|
46076
|
-
var params = this.stack.pop();
|
46077
|
-
var hash = this.stack.pop();
|
46078
|
-
|
46079
|
-
var options = [];
|
46080
|
-
options.push('morph: morph' + morphNum);
|
46081
|
-
|
46082
|
-
this.printContentHook(morphNum, path, params, hash, options);
|
46083
|
-
};
|
46084
|
-
|
46085
|
-
prototype.printContentHookForAmbiguous = function(morphNum) {
|
46086
|
-
var path = this.stack.pop();
|
46087
|
-
|
46088
|
-
var options = [];
|
46089
|
-
options.push('morph: morph' + morphNum);
|
46090
|
-
|
46091
|
-
this.printContentHook(morphNum, path, '[]', '{}', options);
|
46092
|
-
};
|
46093
|
-
|
46094
|
-
prototype.printContentHook = function(morphNum, path, params, hash, pairs) {
|
46095
|
-
this.hooks.content = true;
|
46096
|
-
|
46097
|
-
var args = ['morph' + morphNum, path, 'context', params, hash, quoteHash(pairs), 'env'];
|
46098
|
-
this.source.push(this.indent+' content(' + args.join(', ') + ');\n');
|
46041
|
+
this.pushHook('concat', [
|
46042
|
+
'env',
|
46043
|
+
this.stack.pop() // parts
|
46044
|
+
]);
|
46099
46045
|
};
|
46100
46046
|
|
46101
|
-
prototype.
|
46102
|
-
this.hooks
|
46103
|
-
|
46104
|
-
var path = this.stack.pop();
|
46105
|
-
var hash = this.stack.pop();
|
46106
|
-
|
46107
|
-
var options = [];
|
46108
|
-
|
46109
|
-
options.push('morph: morph' + morphNum);
|
46110
|
-
|
46111
|
-
if (templateId !== null) {
|
46112
|
-
options.push('template: child' + templateId);
|
46113
|
-
}
|
46114
|
-
|
46115
|
-
if (blockParamsLength) {
|
46116
|
-
options.push('blockParams: ' + blockParamsLength);
|
46117
|
-
}
|
46118
|
-
|
46119
|
-
var args = ['morph' + morphNum, path, 'context', hash, quoteHash(options), 'env'];
|
46120
|
-
this.source.push(this.indent+' component(' + args.join(', ') + ');\n');
|
46047
|
+
prototype.printHook = function(name, args) {
|
46048
|
+
this.hooks[name] = true;
|
46049
|
+
this.source.push(this.indent + ' ' + name + '(' + args.join(', ') + ');\n');
|
46121
46050
|
};
|
46122
46051
|
|
46123
|
-
prototype.
|
46124
|
-
this.
|
46125
|
-
|
46126
|
-
|
46127
|
-
|
46128
|
-
|
46129
|
-
|
46052
|
+
prototype.printSetHook = function(name, index) {
|
46053
|
+
this.printHook('set', [
|
46054
|
+
'env',
|
46055
|
+
'context',
|
46056
|
+
string(name),
|
46057
|
+
'blockArguments[' + index + ']'
|
46058
|
+
]);
|
46059
|
+
};
|
46060
|
+
|
46061
|
+
prototype.printBlockHook = function(morphNum, templateId, inverseId) {
|
46062
|
+
this.printHook('block', [
|
46063
|
+
'env',
|
46064
|
+
'morph' + morphNum,
|
46065
|
+
'context',
|
46066
|
+
this.stack.pop(), // path
|
46067
|
+
this.stack.pop(), // params
|
46068
|
+
this.stack.pop(), // hash
|
46069
|
+
templateId === null ? 'null' : 'child' + templateId,
|
46070
|
+
inverseId === null ? 'null' : 'child' + inverseId
|
46071
|
+
]);
|
46072
|
+
};
|
46073
|
+
|
46074
|
+
prototype.printInlineHook = function(morphNum) {
|
46075
|
+
this.printHook('inline', [
|
46076
|
+
'env',
|
46077
|
+
'morph' + morphNum,
|
46078
|
+
'context',
|
46079
|
+
this.stack.pop(), // path
|
46080
|
+
this.stack.pop(), // params
|
46081
|
+
this.stack.pop() // hash
|
46082
|
+
]);
|
46083
|
+
};
|
46084
|
+
|
46085
|
+
prototype.printContentHook = function(morphNum) {
|
46086
|
+
this.printHook('content', [
|
46087
|
+
'env',
|
46088
|
+
'morph' + morphNum,
|
46089
|
+
'context',
|
46090
|
+
this.stack.pop() // path
|
46091
|
+
]);
|
46092
|
+
};
|
46093
|
+
|
46094
|
+
prototype.printComponentHook = function(morphNum, templateId) {
|
46095
|
+
this.printHook('component', [
|
46096
|
+
'env',
|
46097
|
+
'morph' + morphNum,
|
46098
|
+
'context',
|
46099
|
+
this.stack.pop(), // path
|
46100
|
+
this.stack.pop(), // attrs
|
46101
|
+
templateId === null ? 'null' : 'child' + templateId
|
46102
|
+
]);
|
46103
|
+
};
|
46104
|
+
|
46105
|
+
prototype.printAttributeHook = function(attrMorphNum, elementNum) {
|
46106
|
+
this.printHook('attribute', [
|
46107
|
+
'env',
|
46108
|
+
'attrMorph' + attrMorphNum,
|
46109
|
+
'element' + elementNum,
|
46110
|
+
this.stack.pop(), // name
|
46111
|
+
this.stack.pop() // value
|
46112
|
+
]);
|
46130
46113
|
};
|
46131
46114
|
|
46132
46115
|
prototype.printElementHook = function(elementNum) {
|
46133
|
-
this.
|
46134
|
-
|
46135
|
-
|
46136
|
-
|
46137
|
-
|
46138
|
-
|
46139
|
-
|
46140
|
-
|
46141
|
-
|
46142
|
-
var args = ['element' + elementNum, path, 'context', params, hash, quoteHash(options), 'env'];
|
46143
|
-
this.source.push(this.indent+' element(' + args.join(', ') + ');\n');
|
46116
|
+
this.printHook('element', [
|
46117
|
+
'env',
|
46118
|
+
'element' + elementNum,
|
46119
|
+
'context',
|
46120
|
+
this.stack.pop(), // path
|
46121
|
+
this.stack.pop(), // params
|
46122
|
+
this.stack.pop() // hash
|
46123
|
+
]);
|
46144
46124
|
};
|
46145
46125
|
|
46146
46126
|
prototype.createMorph = function(morphNum, parentPath, startIndex, endIndex, escaped) {
|
@@ -46156,6 +46136,12 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
46156
46136
|
this.morphs.push(['morph' + morphNum, morph]);
|
46157
46137
|
};
|
46158
46138
|
|
46139
|
+
prototype.createAttrMorph = function(attrMorphNum, elementNum, name, escaped) {
|
46140
|
+
var morphMethod = escaped ? 'createAttrMorph' : 'createUnsafeAttrMorph';
|
46141
|
+
var morph = "dom."+morphMethod+"(element"+elementNum+", '"+name+"')";
|
46142
|
+
this.morphs.push(['attrMorph' + attrMorphNum, morph]);
|
46143
|
+
};
|
46144
|
+
|
46159
46145
|
prototype.repairClonedNode = function(blankChildTextNodes, isElementChecked) {
|
46160
46146
|
var parent = this.getParent(),
|
46161
46147
|
processing = 'dom.repairClonedNode('+parent+','+
|
@@ -46170,11 +46156,14 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
46170
46156
|
prototype.shareElement = function(elementNum){
|
46171
46157
|
var elementNodesName = "element" + elementNum;
|
46172
46158
|
this.fragmentProcessing.push('var '+elementNodesName+' = '+this.getParent()+';');
|
46173
|
-
this.parents[this.parents.length-1] = elementNodesName;
|
46159
|
+
this.parents[this.parents.length-1] = [elementNodesName];
|
46174
46160
|
};
|
46175
46161
|
|
46176
46162
|
prototype.consumeParent = function(i) {
|
46177
|
-
this.
|
46163
|
+
var newParent = this.lastParent().slice();
|
46164
|
+
newParent.push(i);
|
46165
|
+
|
46166
|
+
this.parents.push(newParent);
|
46178
46167
|
};
|
46179
46168
|
|
46180
46169
|
prototype.popParent = function() {
|
@@ -46182,6 +46171,17 @@ enifed("htmlbars-compiler/hydration-javascript-compiler",
|
|
46182
46171
|
};
|
46183
46172
|
|
46184
46173
|
prototype.getParent = function() {
|
46174
|
+
var last = this.lastParent().slice();
|
46175
|
+
var frag = last.shift();
|
46176
|
+
|
46177
|
+
if (!last.length) {
|
46178
|
+
return frag;
|
46179
|
+
}
|
46180
|
+
|
46181
|
+
return 'dom.childAt(' + frag + ', [' + last.join(', ') + '])';
|
46182
|
+
};
|
46183
|
+
|
46184
|
+
prototype.lastParent = function() {
|
46185
46185
|
return this.parents[this.parents.length-1];
|
46186
46186
|
};
|
46187
46187
|
});
|
@@ -46218,6 +46218,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46218
46218
|
this.currentDOMChildIndex = 0;
|
46219
46219
|
this.morphs = [];
|
46220
46220
|
this.morphNum = 0;
|
46221
|
+
this.attrMorphNum = 0;
|
46221
46222
|
this.element = null;
|
46222
46223
|
this.elementNum = -1;
|
46223
46224
|
}
|
@@ -46249,6 +46250,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46249
46250
|
this.templateId = 0;
|
46250
46251
|
this.currentDOMChildIndex = -1;
|
46251
46252
|
this.morphNum = 0;
|
46253
|
+
this.attrMorphNum = 0;
|
46252
46254
|
|
46253
46255
|
var blockParams = program.blockParams || [];
|
46254
46256
|
|
@@ -46310,8 +46312,6 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46310
46312
|
|
46311
46313
|
HydrationOpcodeCompiler.prototype.block = function(block, childIndex, childrenLength) {
|
46312
46314
|
var sexpr = block.sexpr;
|
46313
|
-
var program = block.program || {};
|
46314
|
-
var blockParams = program.blockParams || [];
|
46315
46315
|
|
46316
46316
|
var currentDOMChildIndex = this.currentDOMChildIndex;
|
46317
46317
|
var start = (currentDOMChildIndex < 0) ? null : currentDOMChildIndex;
|
@@ -46324,7 +46324,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46324
46324
|
var inverseId = block.inverse === null ? null : this.templateId++;
|
46325
46325
|
|
46326
46326
|
prepareSexpr(this, sexpr);
|
46327
|
-
this.opcode('
|
46327
|
+
this.opcode('printBlockHook', morphNum, templateId, inverseId);
|
46328
46328
|
};
|
46329
46329
|
|
46330
46330
|
HydrationOpcodeCompiler.prototype.component = function(component, childIndex, childrenLength) {
|
@@ -46363,16 +46363,15 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46363
46363
|
|
46364
46364
|
HydrationOpcodeCompiler.prototype.attribute = function(attr) {
|
46365
46365
|
var value = attr.value;
|
46366
|
-
var
|
46367
|
-
|
46366
|
+
var escaped = true;
|
46367
|
+
|
46368
46368
|
// TODO: Introduce context specific AST nodes to avoid switching here.
|
46369
46369
|
if (value.type === 'TextNode') {
|
46370
46370
|
return;
|
46371
46371
|
} else if (value.type === 'MustacheStatement') {
|
46372
|
-
|
46372
|
+
escaped = value.escaped;
|
46373
46373
|
this.accept(unwrapMustache(value));
|
46374
46374
|
} else if (value.type === 'ConcatStatement') {
|
46375
|
-
quoted = true;
|
46376
46375
|
prepareParams(this, value.parts);
|
46377
46376
|
this.opcode('pushConcatHook');
|
46378
46377
|
}
|
@@ -46384,7 +46383,9 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46384
46383
|
this.element = null;
|
46385
46384
|
}
|
46386
46385
|
|
46387
|
-
|
46386
|
+
var attrMorphNum = this.attrMorphNum++;
|
46387
|
+
this.opcode('createAttrMorph', attrMorphNum, this.elementNum, attr.name, escaped);
|
46388
|
+
this.opcode('printAttributeHook', attrMorphNum, this.elementNum);
|
46388
46389
|
};
|
46389
46390
|
|
46390
46391
|
HydrationOpcodeCompiler.prototype.elementHelper = function(sexpr) {
|
@@ -46411,10 +46412,10 @@ enifed("htmlbars-compiler/hydration-opcode-compiler",
|
|
46411
46412
|
|
46412
46413
|
if (isHelper(sexpr)) {
|
46413
46414
|
prepareSexpr(this, sexpr);
|
46414
|
-
this.opcode('
|
46415
|
+
this.opcode('printInlineHook', morphNum);
|
46415
46416
|
} else {
|
46416
46417
|
preparePath(this, sexpr.path);
|
46417
|
-
this.opcode('
|
46418
|
+
this.opcode('printContentHook', morphNum);
|
46418
46419
|
}
|
46419
46420
|
};
|
46420
46421
|
|
@@ -46593,16 +46594,26 @@ enifed("htmlbars-compiler/template-compiler",
|
|
46593
46594
|
this.getChildTemplateVars(indent + ' ') +
|
46594
46595
|
indent+' return {\n' +
|
46595
46596
|
indent+' isHTMLBars: true,\n' +
|
46597
|
+
indent+' blockParams: ' + blockParams.length + ',\n' +
|
46596
46598
|
indent+' cachedFragment: null,\n' +
|
46599
|
+
indent+' hasRendered: false,\n' +
|
46597
46600
|
indent+' build: ' + fragmentProgram + ',\n' +
|
46598
46601
|
indent+' render: function render(' + templateSignature + ') {\n' +
|
46599
46602
|
indent+' var dom = env.dom;\n' +
|
46600
46603
|
this.getHydrationHooks(indent + ' ', this.hydrationCompiler.hooks) +
|
46601
46604
|
indent+' dom.detectNamespace(contextualElement);\n' +
|
46605
|
+
indent+' var fragment;\n' +
|
46602
46606
|
indent+' if (this.cachedFragment === null) {\n' +
|
46603
|
-
indent+'
|
46607
|
+
indent+' fragment = this.build(dom);\n' +
|
46608
|
+
indent+' if (this.hasRendered) {\n' +
|
46609
|
+
indent+' this.cachedFragment = fragment;\n' +
|
46610
|
+
indent+' } else {\n' +
|
46611
|
+
indent+' this.hasRendered = true;\n' +
|
46612
|
+
indent+' }\n' +
|
46613
|
+
indent+' }\n' +
|
46614
|
+
indent+' if (this.cachedFragment) {\n' +
|
46615
|
+
indent+' fragment = dom.cloneNode(this.cachedFragment, true);\n' +
|
46604
46616
|
indent+' }\n' +
|
46605
|
-
indent+' var fragment = dom.cloneNode(this.cachedFragment, true);\n' +
|
46606
46617
|
hydrationProgram +
|
46607
46618
|
indent+' return fragment;\n' +
|
46608
46619
|
indent+' }\n' +
|
@@ -46657,17 +46668,6 @@ enifed("htmlbars-compiler/template-visitor",
|
|
46657
46668
|
"use strict";
|
46658
46669
|
var push = Array.prototype.push;
|
46659
46670
|
|
46660
|
-
function elementIntroducesNamespace(element, parentElement){
|
46661
|
-
return (
|
46662
|
-
// Root element. Those that have a namespace are entered.
|
46663
|
-
(!parentElement && element.namespaceURI) ||
|
46664
|
-
// Inner elements to a namespace
|
46665
|
-
( parentElement &&
|
46666
|
-
( !element.isHTMLIntegrationPoint && parentElement.namespaceURI !== element.namespaceURI )
|
46667
|
-
)
|
46668
|
-
);
|
46669
|
-
}
|
46670
|
-
|
46671
46671
|
function Frame() {
|
46672
46672
|
this.parentNode = null;
|
46673
46673
|
this.children = null;
|
@@ -46788,15 +46788,7 @@ enifed("htmlbars-compiler/template-visitor",
|
|
46788
46788
|
parentNode.type === 'Program' && parentFrame.childCount === 1
|
46789
46789
|
];
|
46790
46790
|
|
46791
|
-
var lastNode = parentFrame.childIndex === parentFrame.childCount-1,
|
46792
|
-
introducesNamespace = elementIntroducesNamespace(element, parentFrame.parentNode);
|
46793
|
-
if ( !lastNode && introducesNamespace ) {
|
46794
|
-
elementFrame.actions.push(['setNamespace', [parentNode.namespaceURI]]);
|
46795
|
-
}
|
46796
46791
|
elementFrame.actions.push(['closeElement', actionArgs]);
|
46797
|
-
if ( !lastNode && element.isHTMLIntergrationPoint ) {
|
46798
|
-
elementFrame.actions.push(['setNamespace', []]);
|
46799
|
-
}
|
46800
46792
|
|
46801
46793
|
for (var i = element.attributes.length - 1; i >= 0; i--) {
|
46802
46794
|
this.visit(element.attributes[i]);
|
@@ -46807,14 +46799,8 @@ enifed("htmlbars-compiler/template-visitor",
|
|
46807
46799
|
this.visit(element.children[i]);
|
46808
46800
|
}
|
46809
46801
|
|
46810
|
-
if ( element.isHTMLIntergrationPoint ) {
|
46811
|
-
elementFrame.actions.push(['setNamespace', []]);
|
46812
|
-
}
|
46813
46802
|
elementFrame.actions.push(['openElement', actionArgs.concat([
|
46814
46803
|
elementFrame.mustacheCount, elementFrame.blankChildTextNodes.reverse() ])]);
|
46815
|
-
if ( introducesNamespace ) {
|
46816
|
-
elementFrame.actions.push(['setNamespace', [element.namespaceURI]]);
|
46817
|
-
}
|
46818
46804
|
this.popFrame();
|
46819
46805
|
|
46820
46806
|
// Propagate the element's frame state to the parent frame
|
@@ -46982,7 +46968,7 @@ enifed("htmlbars-syntax/builders",
|
|
46982
46968
|
__exports__.buildPartial = buildPartial;function buildComment(value) {
|
46983
46969
|
return {
|
46984
46970
|
type: "CommentStatement",
|
46985
|
-
value: value
|
46971
|
+
value: value
|
46986
46972
|
};
|
46987
46973
|
}
|
46988
46974
|
|
@@ -48356,16 +48342,15 @@ enifed("htmlbars-syntax/handlebars/utils",
|
|
48356
48342
|
__exports__.appendContextPath = appendContextPath;
|
48357
48343
|
});
|
48358
48344
|
enifed("htmlbars-syntax/node-handlers",
|
48359
|
-
["./builders","
|
48360
|
-
function(__dependency1__, __dependency2__, __dependency3__,
|
48345
|
+
["./builders","../htmlbars-util/array-utils","./utils","exports"],
|
48346
|
+
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
48361
48347
|
"use strict";
|
48362
48348
|
var buildProgram = __dependency1__.buildProgram;
|
48363
48349
|
var buildBlock = __dependency1__.buildBlock;
|
48364
48350
|
var buildHash = __dependency1__.buildHash;
|
48365
|
-
var
|
48366
|
-
var
|
48367
|
-
var
|
48368
|
-
var postprocessProgram = __dependency4__.postprocessProgram;
|
48351
|
+
var forEach = __dependency2__.forEach;
|
48352
|
+
var appendChild = __dependency3__.appendChild;
|
48353
|
+
var postprocessProgram = __dependency3__.postprocessProgram;
|
48369
48354
|
|
48370
48355
|
var nodeHandlers = {
|
48371
48356
|
|
@@ -48401,7 +48386,7 @@ enifed("htmlbars-syntax/node-handlers",
|
|
48401
48386
|
delete block.closeStrip;
|
48402
48387
|
|
48403
48388
|
if (this.tokenizer.state === 'comment') {
|
48404
|
-
this.tokenizer.
|
48389
|
+
this.tokenizer.addChar('{{' + this.sourceForMustache(block) + '}}');
|
48405
48390
|
return;
|
48406
48391
|
}
|
48407
48392
|
|
@@ -48421,7 +48406,7 @@ enifed("htmlbars-syntax/node-handlers",
|
|
48421
48406
|
delete mustache.strip;
|
48422
48407
|
|
48423
48408
|
if (this.tokenizer.state === 'comment') {
|
48424
|
-
this.tokenizer.
|
48409
|
+
this.tokenizer.addChar('{{' + this.sourceForMustache(mustache) + '}}');
|
48425
48410
|
return;
|
48426
48411
|
}
|
48427
48412
|
|
@@ -48499,8 +48484,7 @@ enifed("htmlbars-syntax/node-handlers",
|
|
48499
48484
|
function switchToHandlebars(processor) {
|
48500
48485
|
var token = processor.tokenizer.token;
|
48501
48486
|
|
48502
|
-
|
48503
|
-
if (token instanceof Chars) {
|
48487
|
+
if (token && token.type === 'Chars') {
|
48504
48488
|
processor.acceptToken(token);
|
48505
48489
|
processor.tokenizer.token = null;
|
48506
48490
|
}
|
@@ -48524,7 +48508,7 @@ enifed("htmlbars-syntax/node-handlers",
|
|
48524
48508
|
__exports__["default"] = nodeHandlers;
|
48525
48509
|
});
|
48526
48510
|
enifed("htmlbars-syntax/parser",
|
48527
|
-
["./handlebars/compiler/base","
|
48511
|
+
["./handlebars/compiler/base","./tokenizer","../simple-html-tokenizer/entity-parser","../simple-html-tokenizer/char-refs/full","./node-handlers","./token-handlers","../htmlbars-syntax","exports"],
|
48528
48512
|
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __exports__) {
|
48529
48513
|
"use strict";
|
48530
48514
|
var parse = __dependency1__.parse;
|
@@ -48641,28 +48625,6 @@ enifed("htmlbars-syntax/token-handlers",
|
|
48641
48625
|
voidMap[tagName] = true;
|
48642
48626
|
});
|
48643
48627
|
|
48644
|
-
var svgNamespace = "http://www.w3.org/2000/svg",
|
48645
|
-
// http://www.w3.org/html/wg/drafts/html/master/syntax.html#html-integration-point
|
48646
|
-
svgHTMLIntegrationPoints = {'foreignObject':true, 'desc':true, 'title':true};
|
48647
|
-
|
48648
|
-
function applyNamespace(tag, element, currentElement){
|
48649
|
-
if (tag.tagName === 'svg') {
|
48650
|
-
element.namespaceURI = svgNamespace;
|
48651
|
-
} else if (
|
48652
|
-
currentElement.type === 'ElementNode' &&
|
48653
|
-
currentElement.namespaceURI &&
|
48654
|
-
!currentElement.isHTMLIntegrationPoint
|
48655
|
-
) {
|
48656
|
-
element.namespaceURI = currentElement.namespaceURI;
|
48657
|
-
}
|
48658
|
-
}
|
48659
|
-
|
48660
|
-
function applyHTMLIntegrationPoint(tag, element){
|
48661
|
-
if (svgHTMLIntegrationPoints[tag.tagName]) {
|
48662
|
-
element.isHTMLIntegrationPoint = true;
|
48663
|
-
}
|
48664
|
-
}
|
48665
|
-
|
48666
48628
|
// Except for `mustache`, all tokens are only allowed outside of
|
48667
48629
|
// a start or end tag.
|
48668
48630
|
var tokenHandlers = {
|
@@ -48685,8 +48647,6 @@ enifed("htmlbars-syntax/token-handlers",
|
|
48685
48647
|
end: { line: null, column: null}
|
48686
48648
|
};
|
48687
48649
|
|
48688
|
-
applyNamespace(tag, element, this.currentElement());
|
48689
|
-
applyHTMLIntegrationPoint(tag, element);
|
48690
48650
|
this.elementStack.push(element);
|
48691
48651
|
if (voidMap.hasOwnProperty(tag.tagName) || tag.selfClosing) {
|
48692
48652
|
tokenHandlers.EndTag.call(this, tag);
|
@@ -48702,39 +48662,38 @@ enifed("htmlbars-syntax/token-handlers",
|
|
48702
48662
|
},
|
48703
48663
|
|
48704
48664
|
MustacheStatement: function(mustache) {
|
48705
|
-
var
|
48706
|
-
var token = this.tokenizer.token;
|
48665
|
+
var tokenizer = this.tokenizer;
|
48707
48666
|
|
48708
|
-
switch(state) {
|
48667
|
+
switch(tokenizer.state) {
|
48709
48668
|
// Tag helpers
|
48710
48669
|
case "tagName":
|
48711
|
-
|
48712
|
-
|
48670
|
+
tokenizer.addTagHelper(mustache.sexpr);
|
48671
|
+
tokenizer.state = "beforeAttributeName";
|
48713
48672
|
return;
|
48714
48673
|
case "beforeAttributeName":
|
48715
|
-
|
48674
|
+
tokenizer.addTagHelper(mustache.sexpr);
|
48716
48675
|
return;
|
48717
48676
|
case "attributeName":
|
48718
48677
|
case "afterAttributeName":
|
48719
|
-
|
48720
|
-
|
48721
|
-
|
48678
|
+
tokenizer.finalizeAttributeValue();
|
48679
|
+
tokenizer.addTagHelper(mustache.sexpr);
|
48680
|
+
tokenizer.state = "beforeAttributeName";
|
48722
48681
|
return;
|
48723
48682
|
case "afterAttributeValueQuoted":
|
48724
|
-
|
48725
|
-
|
48683
|
+
tokenizer.addTagHelper(mustache.sexpr);
|
48684
|
+
tokenizer.state = "beforeAttributeName";
|
48726
48685
|
return;
|
48727
48686
|
|
48728
48687
|
// Attribute values
|
48729
48688
|
case "beforeAttributeValue":
|
48730
|
-
|
48731
|
-
|
48732
|
-
|
48689
|
+
tokenizer.markAttributeQuoted(false);
|
48690
|
+
tokenizer.addToAttributeValue(mustache);
|
48691
|
+
tokenizer.state = 'attributeValueUnquoted';
|
48733
48692
|
return;
|
48734
48693
|
case "attributeValueDoubleQuoted":
|
48735
48694
|
case "attributeValueSingleQuoted":
|
48736
48695
|
case "attributeValueUnquoted":
|
48737
|
-
|
48696
|
+
tokenizer.addToAttributeValue(mustache);
|
48738
48697
|
return;
|
48739
48698
|
|
48740
48699
|
// TODO: Only append child when the tokenizer state makes
|
@@ -48749,12 +48708,7 @@ enifed("htmlbars-syntax/token-handlers",
|
|
48749
48708
|
var parent = this.currentElement();
|
48750
48709
|
var disableComponentGeneration = this.options.disableComponentGeneration === true;
|
48751
48710
|
|
48752
|
-
|
48753
|
-
throw new Error(
|
48754
|
-
"Closing tag `" + tag.tagName + "` (on line " + tag.lastLine + ") " +
|
48755
|
-
"did not match last open tag `" + element.tag + "` (on line " + element.loc.start.line + ")."
|
48756
|
-
);
|
48757
|
-
}
|
48711
|
+
validateEndTag(tag, element);
|
48758
48712
|
|
48759
48713
|
if (disableComponentGeneration || element.tag.indexOf("-") === -1) {
|
48760
48714
|
appendChild(parent, element);
|
@@ -48770,32 +48724,52 @@ enifed("htmlbars-syntax/token-handlers",
|
|
48770
48724
|
|
48771
48725
|
};
|
48772
48726
|
|
48727
|
+
function validateEndTag(tag, element) {
|
48728
|
+
var error;
|
48729
|
+
|
48730
|
+
if (voidMap[tag.tagName] && element.tag === undefined) {
|
48731
|
+
// For void elements, we check element.tag is undefined because endTag is called by the startTag token handler in
|
48732
|
+
// the normal case, so checking only voidMap[tag.tagName] would lead to an error being thrown on the opening tag.
|
48733
|
+
error = "Invalid end tag " + formatEndTagInfo(tag) + " (void elements cannot have end tags).";
|
48734
|
+
} else if (element.tag === undefined) {
|
48735
|
+
error = "Closing tag " + formatEndTagInfo(tag) + " without an open tag.";
|
48736
|
+
} else if (element.tag !== tag.tagName) {
|
48737
|
+
error = "Closing tag " + formatEndTagInfo(tag) + " did not match last open tag `" + element.tag + "` (on line " +
|
48738
|
+
element.loc.start.line + ").";
|
48739
|
+
}
|
48740
|
+
|
48741
|
+
if (error) { throw new Error(error); }
|
48742
|
+
}
|
48743
|
+
|
48744
|
+
function formatEndTagInfo(tag) {
|
48745
|
+
return "`" + tag.tagName + "` (on line " + tag.lastLine + ")";
|
48746
|
+
}
|
48747
|
+
|
48773
48748
|
__exports__["default"] = tokenHandlers;
|
48774
48749
|
});
|
48775
|
-
enifed("htmlbars-syntax/
|
48750
|
+
enifed("htmlbars-syntax/tokenizer",
|
48776
48751
|
["../simple-html-tokenizer","./utils","./builders","exports"],
|
48777
48752
|
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
48778
48753
|
"use strict";
|
48779
|
-
var
|
48780
|
-
var StartTag = __dependency1__.StartTag;
|
48781
|
-
var EndTag = __dependency1__.EndTag;
|
48754
|
+
var Tokenizer = __dependency1__.Tokenizer;
|
48782
48755
|
var isHelper = __dependency2__.isHelper;
|
48783
48756
|
var builders = __dependency3__["default"];
|
48784
48757
|
|
48785
|
-
|
48758
|
+
Tokenizer.prototype.createAttribute = function(char) {
|
48786
48759
|
this.currentAttribute = builders.attr(char.toLowerCase(), [], null);
|
48787
|
-
this.attributes.push(this.currentAttribute);
|
48760
|
+
this.token.attributes.push(this.currentAttribute);
|
48761
|
+
this.state = 'attributeName';
|
48788
48762
|
};
|
48789
48763
|
|
48790
|
-
|
48764
|
+
Tokenizer.prototype.markAttributeQuoted = function(value) {
|
48791
48765
|
this.currentAttribute.quoted = value;
|
48792
48766
|
};
|
48793
48767
|
|
48794
|
-
|
48768
|
+
Tokenizer.prototype.addToAttributeName = function(char) {
|
48795
48769
|
this.currentAttribute.name += char;
|
48796
48770
|
};
|
48797
48771
|
|
48798
|
-
|
48772
|
+
Tokenizer.prototype.addToAttributeValue = function(char) {
|
48799
48773
|
var value = this.currentAttribute.value;
|
48800
48774
|
|
48801
48775
|
if (!this.currentAttribute.quoted && value.length > 0 &&
|
@@ -48821,12 +48795,7 @@ enifed("htmlbars-syntax/tokens",
|
|
48821
48795
|
}
|
48822
48796
|
};
|
48823
48797
|
|
48824
|
-
|
48825
|
-
this.finalizeAttributeValue();
|
48826
|
-
return this;
|
48827
|
-
};
|
48828
|
-
|
48829
|
-
StartTag.prototype.finalizeAttributeValue = function() {
|
48798
|
+
Tokenizer.prototype.finalizeAttributeValue = function() {
|
48830
48799
|
if (this.currentAttribute) {
|
48831
48800
|
this.currentAttribute.value = prepareAttributeValue(this.currentAttribute);
|
48832
48801
|
delete this.currentAttribute.quoted;
|
@@ -48834,8 +48803,8 @@ enifed("htmlbars-syntax/tokens",
|
|
48834
48803
|
}
|
48835
48804
|
};
|
48836
48805
|
|
48837
|
-
|
48838
|
-
var helpers = this.helpers = this.helpers || [];
|
48806
|
+
Tokenizer.prototype.addTagHelper = function(helper) {
|
48807
|
+
var helpers = this.token.helpers = this.token.helpers || [];
|
48839
48808
|
helpers.push(helper);
|
48840
48809
|
};
|
48841
48810
|
|
@@ -48869,9 +48838,7 @@ enifed("htmlbars-syntax/tokens",
|
|
48869
48838
|
}
|
48870
48839
|
}
|
48871
48840
|
|
48872
|
-
__exports__.unwrapMustache = unwrapMustache;__exports__.
|
48873
|
-
__exports__.StartTag = StartTag;
|
48874
|
-
__exports__.EndTag = EndTag;
|
48841
|
+
__exports__.unwrapMustache = unwrapMustache;__exports__.Tokenizer = Tokenizer;
|
48875
48842
|
});
|
48876
48843
|
enifed("htmlbars-syntax/utils",
|
48877
48844
|
["./builders","exports"],
|
@@ -49292,26 +49259,131 @@ enifed("htmlbars-util/safe-string",
|
|
49292
49259
|
__exports__["default"] = SafeString;
|
49293
49260
|
});
|
49294
49261
|
enifed("morph",
|
49295
|
-
["./morph/morph","./morph/dom-helper","exports"],
|
49296
|
-
function(__dependency1__, __dependency2__, __exports__) {
|
49262
|
+
["./morph/morph","./morph/attr-morph","./morph/dom-helper","exports"],
|
49263
|
+
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
49297
49264
|
"use strict";
|
49298
49265
|
var Morph = __dependency1__["default"];
|
49299
|
-
var
|
49266
|
+
var AttrMorph = __dependency2__["default"];
|
49267
|
+
var DOMHelper = __dependency3__["default"];
|
49300
49268
|
|
49301
49269
|
__exports__.Morph = Morph;
|
49270
|
+
__exports__.AttrMorph = AttrMorph;
|
49302
49271
|
__exports__.DOMHelper = DOMHelper;
|
49303
49272
|
});
|
49304
|
-
enifed("morph/
|
49305
|
-
["
|
49273
|
+
enifed("morph/attr-morph",
|
49274
|
+
["./attr-morph/sanitize-attribute-value","./dom-helper/prop","./dom-helper/build-html-dom","exports"],
|
49306
49275
|
function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
|
49307
49276
|
"use strict";
|
49308
|
-
|
49277
|
+
var sanitizeAttributeValue = __dependency1__.sanitizeAttributeValue;
|
49278
|
+
var normalizeProperty = __dependency2__.normalizeProperty;
|
49279
|
+
var svgNamespace = __dependency3__.svgNamespace;
|
49280
|
+
|
49281
|
+
function updateProperty(value) {
|
49282
|
+
this.domHelper.setPropertyStrict(this.element, this.attrName, value);
|
49283
|
+
}
|
49284
|
+
|
49285
|
+
function updateAttribute(value) {
|
49286
|
+
if (value === null) {
|
49287
|
+
this.domHelper.removeAttribute(this.element, this.attrName);
|
49288
|
+
} else {
|
49289
|
+
this.domHelper.setAttribute(this.element, this.attrName, value);
|
49290
|
+
}
|
49291
|
+
}
|
49292
|
+
|
49293
|
+
function AttrMorph(element, attrName, domHelper) {
|
49294
|
+
this.element = element;
|
49295
|
+
this.domHelper = domHelper;
|
49296
|
+
this.escaped = true;
|
49297
|
+
|
49298
|
+
var normalizedAttrName = normalizeProperty(this.element, attrName);
|
49299
|
+
if (element.namespaceURI === svgNamespace || attrName === 'style' || !normalizedAttrName) {
|
49300
|
+
this.attrName = attrName;
|
49301
|
+
this._update = updateAttribute;
|
49302
|
+
} else {
|
49303
|
+
this.attrName = normalizedAttrName;
|
49304
|
+
this._update = updateProperty;
|
49305
|
+
}
|
49306
|
+
}
|
49307
|
+
|
49308
|
+
AttrMorph.prototype.setContent = function (value) {
|
49309
|
+
if (this.escaped) {
|
49310
|
+
var sanitized = sanitizeAttributeValue(this.element, this.attrName, value);
|
49311
|
+
this._update(sanitized);
|
49312
|
+
} else {
|
49313
|
+
this._update(value);
|
49314
|
+
}
|
49315
|
+
};
|
49316
|
+
|
49317
|
+
__exports__["default"] = AttrMorph;
|
49318
|
+
});
|
49319
|
+
enifed("morph/attr-morph/sanitize-attribute-value",
|
49320
|
+
["exports"],
|
49321
|
+
function(__exports__) {
|
49322
|
+
"use strict";
|
49323
|
+
/* jshint scripturl:true */
|
49324
|
+
|
49325
|
+
var parsingNode;
|
49326
|
+
var badProtocols = {
|
49327
|
+
'javascript:': true,
|
49328
|
+
'vbscript:': true
|
49329
|
+
};
|
49330
|
+
|
49331
|
+
var badTags = {
|
49332
|
+
'A': true,
|
49333
|
+
'BODY': true,
|
49334
|
+
'LINK': true,
|
49335
|
+
'IMG': true,
|
49336
|
+
'IFRAME': true
|
49337
|
+
};
|
49338
|
+
|
49339
|
+
var badAttributes = {
|
49340
|
+
'href': true,
|
49341
|
+
'src': true,
|
49342
|
+
'background': true
|
49343
|
+
};
|
49344
|
+
__exports__.badAttributes = badAttributes;
|
49345
|
+
function sanitizeAttributeValue(element, attribute, value) {
|
49346
|
+
var tagName;
|
49347
|
+
|
49348
|
+
if (!parsingNode) {
|
49349
|
+
parsingNode = document.createElement('a');
|
49350
|
+
}
|
49351
|
+
|
49352
|
+
if (!element) {
|
49353
|
+
tagName = null;
|
49354
|
+
} else {
|
49355
|
+
tagName = element.tagName;
|
49356
|
+
}
|
49357
|
+
|
49358
|
+
if (value && value.toHTML) {
|
49359
|
+
return value.toHTML();
|
49360
|
+
}
|
49361
|
+
|
49362
|
+
if ((tagName === null || badTags[tagName]) && badAttributes[attribute]) {
|
49363
|
+
parsingNode.href = value;
|
49364
|
+
|
49365
|
+
if (badProtocols[parsingNode.protocol] === true) {
|
49366
|
+
return 'unsafe:' + value;
|
49367
|
+
}
|
49368
|
+
}
|
49369
|
+
|
49370
|
+
return value;
|
49371
|
+
}
|
49372
|
+
|
49373
|
+
__exports__.sanitizeAttributeValue = sanitizeAttributeValue;
|
49374
|
+
});
|
49375
|
+
enifed("morph/dom-helper",
|
49376
|
+
["../morph/morph","../morph/attr-morph","./dom-helper/build-html-dom","./dom-helper/classes","./dom-helper/prop","exports"],
|
49377
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
|
49378
|
+
"use strict";
|
49309
49379
|
var Morph = __dependency1__["default"];
|
49310
|
-
var
|
49311
|
-
var
|
49312
|
-
var
|
49313
|
-
var
|
49314
|
-
var
|
49380
|
+
var AttrMorph = __dependency2__["default"];
|
49381
|
+
var buildHTMLDOM = __dependency3__.buildHTMLDOM;
|
49382
|
+
var svgNamespace = __dependency3__.svgNamespace;
|
49383
|
+
var svgHTMLIntegrationPoints = __dependency3__.svgHTMLIntegrationPoints;
|
49384
|
+
var addClasses = __dependency4__.addClasses;
|
49385
|
+
var removeClasses = __dependency4__.removeClasses;
|
49386
|
+
var normalizeProperty = __dependency5__.normalizeProperty;
|
49315
49387
|
|
49316
49388
|
var doc = typeof document === 'undefined' ? false : document;
|
49317
49389
|
|
@@ -49411,15 +49483,19 @@ enifed("morph/dom-helper",
|
|
49411
49483
|
* @param {HTMLDocument} _document The document DOM methods are proxied to
|
49412
49484
|
*/
|
49413
49485
|
function DOMHelper(_document){
|
49414
|
-
this.document = _document ||
|
49486
|
+
this.document = _document || document;
|
49487
|
+
if (!this.document) {
|
49488
|
+
throw new Error("A document object must be passed to the DOMHelper, or available on the global scope");
|
49489
|
+
}
|
49415
49490
|
this.namespace = null;
|
49416
49491
|
}
|
49417
49492
|
|
49418
49493
|
var prototype = DOMHelper.prototype;
|
49419
49494
|
prototype.constructor = DOMHelper;
|
49420
49495
|
|
49421
|
-
prototype.getElementById = function(id) {
|
49422
|
-
|
49496
|
+
prototype.getElementById = function(id, rootNode) {
|
49497
|
+
rootNode = rootNode || this.document;
|
49498
|
+
return rootNode.getElementById(id);
|
49423
49499
|
};
|
49424
49500
|
|
49425
49501
|
prototype.insertBefore = function(element, childElement, referenceChild) {
|
@@ -49430,6 +49506,16 @@ enifed("morph/dom-helper",
|
|
49430
49506
|
return element.appendChild(childElement);
|
49431
49507
|
};
|
49432
49508
|
|
49509
|
+
prototype.childAt = function(element, indices) {
|
49510
|
+
var child = element;
|
49511
|
+
|
49512
|
+
for (var i = 0; i < indices.length; i++) {
|
49513
|
+
child = child.childNodes[indices[i]];
|
49514
|
+
}
|
49515
|
+
|
49516
|
+
return child;
|
49517
|
+
};
|
49518
|
+
|
49433
49519
|
prototype.appendText = function(element, text) {
|
49434
49520
|
return element.appendChild(this.document.createTextNode(text));
|
49435
49521
|
};
|
@@ -49442,10 +49528,32 @@ enifed("morph/dom-helper",
|
|
49442
49528
|
element.removeAttribute(name);
|
49443
49529
|
};
|
49444
49530
|
|
49445
|
-
prototype.
|
49531
|
+
prototype.setPropertyStrict = function(element, name, value) {
|
49446
49532
|
element[name] = value;
|
49447
49533
|
};
|
49448
49534
|
|
49535
|
+
prototype.setProperty = function(element, name, value) {
|
49536
|
+
var lowercaseName = name.toLowerCase();
|
49537
|
+
if (element.namespaceURI === svgNamespace || lowercaseName === 'style') {
|
49538
|
+
if (value === null) {
|
49539
|
+
element.removeAttribute(name);
|
49540
|
+
} else {
|
49541
|
+
element.setAttribute(name, value);
|
49542
|
+
}
|
49543
|
+
} else {
|
49544
|
+
var normalized = normalizeProperty(element, name);
|
49545
|
+
if (normalized) {
|
49546
|
+
element[normalized] = value;
|
49547
|
+
} else {
|
49548
|
+
if (value === null) {
|
49549
|
+
element.removeAttribute(name);
|
49550
|
+
} else {
|
49551
|
+
element.setAttribute(name, value);
|
49552
|
+
}
|
49553
|
+
}
|
49554
|
+
}
|
49555
|
+
};
|
49556
|
+
|
49449
49557
|
if (doc && doc.createElementNS) {
|
49450
49558
|
// Only opt into namespace detection if a contextualElement
|
49451
49559
|
// is passed.
|
@@ -49516,6 +49624,16 @@ enifed("morph/dom-helper",
|
|
49516
49624
|
return clone;
|
49517
49625
|
};
|
49518
49626
|
|
49627
|
+
prototype.createAttrMorph = function(element, attrName){
|
49628
|
+
return new AttrMorph(element, attrName, this);
|
49629
|
+
};
|
49630
|
+
|
49631
|
+
prototype.createUnsafeAttrMorph = function(element, attrName){
|
49632
|
+
var morph = this.createAttrMorph(element, attrName);
|
49633
|
+
morph.escaped = false;
|
49634
|
+
return morph;
|
49635
|
+
};
|
49636
|
+
|
49519
49637
|
prototype.createMorph = function(parent, start, end, contextualElement){
|
49520
49638
|
if (!contextualElement && parent.nodeType === 1) {
|
49521
49639
|
contextualElement = parent;
|
@@ -49999,6 +50117,32 @@ enifed("morph/dom-helper/classes",
|
|
49999
50117
|
__exports__.addClasses = addClasses;
|
50000
50118
|
__exports__.removeClasses = removeClasses;
|
50001
50119
|
});
|
50120
|
+
enifed("morph/dom-helper/prop",
|
50121
|
+
["exports"],
|
50122
|
+
function(__exports__) {
|
50123
|
+
"use strict";
|
50124
|
+
// TODO should this be an o_create kind of thing?
|
50125
|
+
var propertyCaches = {};
|
50126
|
+
__exports__.propertyCaches = propertyCaches;
|
50127
|
+
function normalizeProperty(element, attrName) {
|
50128
|
+
var tagName = element.tagName;
|
50129
|
+
var key;
|
50130
|
+
var cache = propertyCaches[tagName];
|
50131
|
+
if (!cache) {
|
50132
|
+
// TODO should this be an o_create kind of thing?
|
50133
|
+
cache = {};
|
50134
|
+
for (key in element) {
|
50135
|
+
cache[key.toLowerCase()] = key;
|
50136
|
+
}
|
50137
|
+
propertyCaches[tagName] = cache;
|
50138
|
+
}
|
50139
|
+
|
50140
|
+
// presumes that the attrName has been lowercased.
|
50141
|
+
return cache[attrName];
|
50142
|
+
}
|
50143
|
+
|
50144
|
+
__exports__.normalizeProperty = normalizeProperty;
|
50145
|
+
});
|
50002
50146
|
enifed("morph/morph",
|
50003
50147
|
["exports"],
|
50004
50148
|
function(__exports__) {
|
@@ -50075,7 +50219,7 @@ enifed("morph/morph",
|
|
50075
50219
|
}
|
50076
50220
|
};
|
50077
50221
|
|
50078
|
-
Morph.prototype.
|
50222
|
+
Morph.prototype.setContent = function (nodeOrString) {
|
50079
50223
|
this._update(this.element || this.parent(), nodeOrString);
|
50080
50224
|
};
|
50081
50225
|
|
@@ -58152,39 +58296,50 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58152
58296
|
}
|
58153
58297
|
},
|
58154
58298
|
|
58155
|
-
|
58299
|
+
createTag: function(Type, char) {
|
58156
58300
|
var lastToken = this.token;
|
58157
58301
|
this.token = new Type(char);
|
58158
58302
|
this.state = 'tagName';
|
58159
58303
|
return lastToken;
|
58160
58304
|
},
|
58161
58305
|
|
58306
|
+
addToTagName: function(char) {
|
58307
|
+
this.token.tagName += char;
|
58308
|
+
},
|
58309
|
+
|
58162
58310
|
selfClosing: function() {
|
58163
58311
|
this.token.selfClosing = true;
|
58164
58312
|
},
|
58165
58313
|
|
58166
|
-
|
58167
|
-
this.
|
58314
|
+
createAttribute: function(char) {
|
58315
|
+
this._currentAttribute = [char.toLowerCase(), "", null];
|
58316
|
+
this.token.attributes.push(this._currentAttribute);
|
58168
58317
|
this.state = 'attributeName';
|
58169
58318
|
},
|
58170
58319
|
|
58171
58320
|
addToAttributeName: function(char) {
|
58172
|
-
this.
|
58321
|
+
this._currentAttribute[0] += char;
|
58173
58322
|
},
|
58174
58323
|
|
58175
58324
|
markAttributeQuoted: function(value) {
|
58176
|
-
this.
|
58325
|
+
this._currentAttribute[2] = value;
|
58177
58326
|
},
|
58178
58327
|
|
58179
58328
|
finalizeAttributeValue: function() {
|
58180
|
-
this.
|
58329
|
+
if (this._currentAttribute) {
|
58330
|
+
if (this._currentAttribute[2] === null) {
|
58331
|
+
this._currentAttribute[2] = false;
|
58332
|
+
}
|
58333
|
+
this._currentAttribute = undefined;
|
58334
|
+
}
|
58181
58335
|
},
|
58182
58336
|
|
58183
58337
|
addToAttributeValue: function(char) {
|
58184
|
-
this.
|
58338
|
+
this._currentAttribute[1] = this._currentAttribute[1] || "";
|
58339
|
+
this._currentAttribute[1] += char;
|
58185
58340
|
},
|
58186
58341
|
|
58187
|
-
|
58342
|
+
createComment: function() {
|
58188
58343
|
var lastToken = this.token;
|
58189
58344
|
this.token = new Comment();
|
58190
58345
|
this.state = 'commentStart';
|
@@ -58192,7 +58347,18 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58192
58347
|
},
|
58193
58348
|
|
58194
58349
|
addToComment: function(char) {
|
58195
|
-
this.
|
58350
|
+
this.addChar(char);
|
58351
|
+
},
|
58352
|
+
|
58353
|
+
addChar: function(char) {
|
58354
|
+
this.token.chars += char;
|
58355
|
+
},
|
58356
|
+
|
58357
|
+
finalizeToken: function() {
|
58358
|
+
if (this.token.type === 'StartTag') {
|
58359
|
+
this.finalizeAttributeValue();
|
58360
|
+
}
|
58361
|
+
return this.token;
|
58196
58362
|
},
|
58197
58363
|
|
58198
58364
|
emitData: function() {
|
@@ -58205,7 +58371,7 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58205
58371
|
|
58206
58372
|
emitToken: function() {
|
58207
58373
|
this.addLocInfo();
|
58208
|
-
var lastToken = this.
|
58374
|
+
var lastToken = this.finalizeToken();
|
58209
58375
|
this.token = null;
|
58210
58376
|
this.state = 'data';
|
58211
58377
|
return lastToken;
|
@@ -58217,7 +58383,7 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58217
58383
|
this.markFirst();
|
58218
58384
|
}
|
58219
58385
|
|
58220
|
-
this.
|
58386
|
+
this.addChar(char);
|
58221
58387
|
},
|
58222
58388
|
|
58223
58389
|
markFirst: function(line, column) {
|
@@ -58249,7 +58415,6 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58249
58415
|
} else {
|
58250
58416
|
this.column++;
|
58251
58417
|
}
|
58252
|
-
// console.log(this.state, char);
|
58253
58418
|
return this.states[this.state].call(this, char);
|
58254
58419
|
} else {
|
58255
58420
|
this.addLocInfo(this.line, this.column);
|
@@ -58276,14 +58441,14 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58276
58441
|
} else if (char === "/") {
|
58277
58442
|
this.state = 'endTagOpen';
|
58278
58443
|
} else if (isAlpha(char)) {
|
58279
|
-
return this.
|
58444
|
+
return this.createTag(StartTag, char.toLowerCase());
|
58280
58445
|
}
|
58281
58446
|
},
|
58282
58447
|
|
58283
58448
|
markupDeclaration: function(char) {
|
58284
58449
|
if (char === "-" && this.input.charAt(this["char"]) === "-") {
|
58285
58450
|
this["char"]++;
|
58286
|
-
this.
|
58451
|
+
this.createComment();
|
58287
58452
|
}
|
58288
58453
|
},
|
58289
58454
|
|
@@ -58343,7 +58508,7 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58343
58508
|
} else if (char === ">") {
|
58344
58509
|
return this.emitToken();
|
58345
58510
|
} else {
|
58346
|
-
this.
|
58511
|
+
this.addToTagName(char);
|
58347
58512
|
}
|
58348
58513
|
},
|
58349
58514
|
|
@@ -58355,7 +58520,7 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58355
58520
|
} else if (char === ">") {
|
58356
58521
|
return this.emitToken();
|
58357
58522
|
} else {
|
58358
|
-
this.
|
58523
|
+
this.createAttribute(char);
|
58359
58524
|
}
|
58360
58525
|
},
|
58361
58526
|
|
@@ -58384,7 +58549,7 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58384
58549
|
return this.emitToken();
|
58385
58550
|
} else {
|
58386
58551
|
this.finalizeAttributeValue();
|
58387
|
-
this.
|
58552
|
+
this.createAttribute(char);
|
58388
58553
|
}
|
58389
58554
|
},
|
58390
58555
|
|
@@ -58466,7 +58631,7 @@ enifed("simple-html-tokenizer/tokenizer",
|
|
58466
58631
|
|
58467
58632
|
endTagOpen: function(char) {
|
58468
58633
|
if (isAlpha(char)) {
|
58469
|
-
this.
|
58634
|
+
this.createTag(EndTag, char.toLowerCase());
|
58470
58635
|
}
|
58471
58636
|
}
|
58472
58637
|
}
|
@@ -58483,84 +58648,24 @@ enifed("simple-html-tokenizer/tokens",
|
|
58483
58648
|
this.tagName = tagName || '';
|
58484
58649
|
this.attributes = attributes || [];
|
58485
58650
|
this.selfClosing = selfClosing === true;
|
58486
|
-
this._currentAttribute = undefined;
|
58487
58651
|
}
|
58488
58652
|
|
58489
|
-
__exports__.StartTag = StartTag;
|
58490
|
-
addToTagName: function(char) {
|
58491
|
-
this.tagName += char;
|
58492
|
-
},
|
58493
|
-
|
58494
|
-
startAttribute: function(char) {
|
58495
|
-
this._currentAttribute = [char.toLowerCase(), "", null];
|
58496
|
-
this.attributes.push(this._currentAttribute);
|
58497
|
-
},
|
58498
|
-
|
58499
|
-
addToAttributeName: function(char) {
|
58500
|
-
this._currentAttribute[0] += char;
|
58501
|
-
},
|
58502
|
-
|
58503
|
-
markAttributeQuoted: function(value) {
|
58504
|
-
this._currentAttribute[2] = value;
|
58505
|
-
},
|
58506
|
-
|
58507
|
-
addToAttributeValue: function(char) {
|
58508
|
-
this._currentAttribute[1] = this._currentAttribute[1] || "";
|
58509
|
-
this._currentAttribute[1] += char;
|
58510
|
-
},
|
58511
|
-
|
58512
|
-
finalizeAttributeValue: function() {
|
58513
|
-
if (this._currentAttribute) {
|
58514
|
-
if (this._currentAttribute[2] === null) {
|
58515
|
-
this._currentAttribute[2] = false;
|
58516
|
-
}
|
58517
|
-
this._currentAttribute = undefined;
|
58518
|
-
}
|
58519
|
-
},
|
58520
|
-
|
58521
|
-
finalize: function() {
|
58522
|
-
this.finalizeAttributeValue();
|
58523
|
-
return this;
|
58524
|
-
}
|
58525
|
-
};
|
58526
|
-
|
58527
|
-
function EndTag(tagName) {
|
58653
|
+
__exports__.StartTag = StartTag;function EndTag(tagName) {
|
58528
58654
|
this.type = 'EndTag';
|
58529
58655
|
this.tagName = tagName || '';
|
58530
58656
|
}
|
58531
58657
|
|
58532
|
-
__exports__.EndTag = EndTag;
|
58533
|
-
addToTagName: function(char) {
|
58534
|
-
this.tagName += char;
|
58535
|
-
},
|
58536
|
-
finalize: function () {
|
58537
|
-
return this;
|
58538
|
-
}
|
58539
|
-
};
|
58540
|
-
|
58541
|
-
function Chars(chars) {
|
58658
|
+
__exports__.EndTag = EndTag;function Chars(chars) {
|
58542
58659
|
this.type = 'Chars';
|
58543
58660
|
this.chars = chars || "";
|
58544
58661
|
}
|
58545
58662
|
|
58546
|
-
__exports__.Chars = Chars;
|
58547
|
-
addChar: function(char) {
|
58548
|
-
this.chars += char;
|
58549
|
-
}
|
58550
|
-
};
|
58551
|
-
|
58552
|
-
function Comment(chars) {
|
58663
|
+
__exports__.Chars = Chars;function Comment(chars) {
|
58553
58664
|
this.type = 'Comment';
|
58554
58665
|
this.chars = chars || '';
|
58555
58666
|
}
|
58556
58667
|
|
58557
|
-
__exports__.Comment = Comment;
|
58558
|
-
addChar: function(char) {
|
58559
|
-
this.chars += char;
|
58560
|
-
},
|
58561
|
-
|
58562
|
-
finalize: function() { return this; }
|
58563
|
-
};
|
58668
|
+
__exports__.Comment = Comment;
|
58564
58669
|
});
|
58565
58670
|
enifed("simple-html-tokenizer/utils",
|
58566
58671
|
["exports"],
|