in Canvas/CanvasSimple/lib/winjs-4.0.1/js/base.js [20889:21035]
sourceProperties: literal(binding.source),
destProperties: literal(binding.destination),
dest: binding.elementCapture,
initialValue: binding.initialValue,
}
);
case BindingKind.tree:
return binding.definition();
case BindingKind.text:
// do nothing, text bindings are taken care of seperately
break;
case BindingKind.error:
// do nothing, errors are reported and ignored
break;
default:
throw "NYI";
}
});
var binding_processing, delayed_binding_processing;
if (supportDelayBindings) {
binding_processing = all_binding_processing.filter(function (unused, index) {
return !that._bindings[index].delayable;
});
delayed_binding_processing = all_binding_processing.filter(function (unused, index) {
return that._bindings[index].delayable;
});
} else {
binding_processing = all_binding_processing;
delayed_binding_processing = [];
}
var instances = values(this._instanceVariables);
var instanceDefinitions = instances
.filter(function (instance) { return instance.kind === InstanceKind.variable; })
.map(function (variable) { return variable.definition(); });
var captures = this._captureCSE.definitions();
var globals = this._globalCSE.definitions();
var data = this._dataCSE.definitions();
var set_msParentSelectorScope = this._children.map(function (child) {
return that.formatCodeN("{0}.msParentSelectorScope = true", child);
});
var suffix = this._suffix.map(function (statement) {
return statement();
});
var renderComplete = "";
if (supportDelayBindings && delayed_binding_processing.length) {
renderComplete = that.formatCode(
renderItemImplRenderCompleteTemplate,
{
delayed_binding_processing: statements(delayed_binding_processing)
}
);
}
var result = that.formatCode(
bodyTemplate,
mergeAll([
this._staticVariables,
replacements || {},
{
profilerMarkIdentifierStart: literal("WinJS.Binding.Template:render" + this._profilerMarkIdentifier + ",StartTM"),
profilerMarkIdentifierStop: literal("WinJS.Binding.Template:render" + this._profilerMarkIdentifier + ",StopTM"),
html: this._html(),
tagName: literal(this._templateElement.tagName),
instance_variable_declarations: declarationList(instances),
global_definitions: statements(globals),
data_definitions: statements(data),
instance_variable_definitions: statements(instanceDefinitions),
capture_definitions: statements(captures),
set_msParentSelectorScope: statements(set_msParentSelectorScope),
debug_break: this.generateDebugBreak(),
control_processing: statements(control_processing),
control_counter: this._controlCounter,
binding_processing: statements(binding_processing),
renderComplete: renderComplete,
suffix_statements: statements(suffix),
nestedTemplates: this._nestedTemplates,
returnedElement: this._returnedElement,
},
])
);
return this.prettify(result);
},
createAsyncParts: function () {
this._nestedTemplates = this._nestedTemplates || this.defineInstance(
InstanceKind.variable,
"nestedTemplates",
function () { return newArray(0); }
);
this._controlCounter = this._controlCounter || this.defineInstance(
InstanceKind.variable,
"controlCounter",
function () { return literal(1); }
);
},
createTextBindingHole: function (tagName, attribute, id) {
if (!this._textBindingPrefix) {
var c = "";
while (this._html.text.indexOf("textbinding" + c) !== -1) {
c = c || 0;
c++;
}
this._textBindingPrefix = "textbinding" + c;
// NOTE: the form of this regex needs to be coordinated with any special cases which
// are introduced by the switch below.
this._textBindingRegex = new RegExp("(#?" + this._textBindingPrefix + "_\\d+)");
}
// Sometimes text bindings need to be of a particular form to suppress warnings from
// the host, specifically there is a case with IMG/src attribute where if you assign
// a naked textbinding_X to it you get a warning in the console of an unresolved image
// instead we prefix it with a # which is enough to suppress that message.
//
var result = this._textBindingPrefix + "_" + id;
if (tagName === "IMG" && attribute === "src") {
result = "#" + result;
}
return result;
},
deadCodeElimination: function () {
var that = this;
// Eliminate all captured elements which are no longer in the tree, this can happen if
// these captured elements are children of a node which had a text binding to 'innerText'
// or 'textContent' as those kill the subtree.
//
Object.keys(this._instanceVariables).forEach(function (key) {
var iv = that._instanceVariables[key];
if (iv.kind === InstanceKind.capture) {
if (!that._templateContent.contains(iv.element)) {