%PDF- %PDF-
| Direktori : /home/lightco1/luminero.com.au/media/lib_compojoom/third/polyfills/ |
| Current File : /home/lightco1/luminero.com.au/media/lib_compojoom/third/polyfills/template.js |
(function() {
var support = ("content" in document.createElement("template"));
// Set the content property if missing
if (!support) {
var
/**
* Prefer an array to a NodeList
* Otherwise, updating the content property of a node
* will update the NodeList and we'll loose the nested <template>
*/
templates = Array.prototype.slice.call(document.getElementsByTagName("template")),
template, content, fragment, node, i = 0, j;
// For each <template> element get its content and wrap it in a document fragment
while ((template = templates[i++])) {
content = template.children;
fragment = document.createDocumentFragment();
for (j = 0; node = content[j]; j++) {
fragment.appendChild(node);
}
template.content = fragment;
}
}
// Prepare a clone function to allow nested <template> elements
function clone() {
var
templates = this.querySelectorAll("template"),
fragments = [],
template,
i = 0;
// If the support is OK simply clone and return
if (support) {
template = this.cloneNode(true);
templates = template.content.querySelectorAll("template");
// Set the clone method for each nested <template> element
for (; templates[i]; i++) {
templates[i].clone = clone;
}
return template;
}
// Loop through nested <template> to retrieve the content property
for (; templates[i]; i++) {
fragments.push(templates[i].content);
}
// Now, clone the document fragment
template = this.cloneNode(true);
// Makes sure the clone have a "content" and "clone" properties
template.content = this.content;
template.clone = clone;
/**
* Retrieve the nested <template> once again
* Since we just cloned the document fragment,
* the content's property of the nested <template> might be undefined
* We have to re-set it using the fragment array we previously got
*/
templates = template.querySelectorAll("template");
// Loop to set the content property of each nested template
for (i = 0; templates[i]; i++) {
templates[i].content = fragments[i];
templates[i].clone = clone; // Makes sure to set the clone method as well
}
return template;
}
var
templates = document.querySelectorAll("template"),
template, i = 0;
// Pollute the DOM with a "clone" method on each <template> element
while ((template = templates[i++])) {
template.clone = clone;
}
}());