// Generated by CoffeeScript 1.12.8 (function() { Turbolinks.HeadDetails = (function() { var elementIsMetaElementWithName, elementIsScript, elementIsStylesheet, elementIsTracked, elementType; HeadDetails.fromHeadElement = function(headElement) { var ref; return new this((ref = headElement != null ? headElement.childNodes : void 0) != null ? ref : []); }; function HeadDetails(childNodes) { var base, data, i, key, len, node; this.elements = {}; for (i = 0, len = childNodes.length; i < len; i++) { node = childNodes[i]; if (!(node.nodeType === Node.ELEMENT_NODE)) { continue; } key = node.outerHTML; data = (base = this.elements)[key] != null ? base[key] : base[key] = { type: elementType(node), tracked: elementIsTracked(node), elements: [] }; data.elements.push(node); } } HeadDetails.prototype.hasElementWithKey = function(key) { return key in this.elements; }; HeadDetails.prototype.getTrackedElementSignature = function() { var key, tracked; return ((function() { var ref, results; ref = this.elements; results = []; for (key in ref) { tracked = ref[key].tracked; if (tracked) { results.push(key); } } return results; }).call(this)).join(""); }; HeadDetails.prototype.getScriptElementsNotInDetails = function(headDetails) { return this.getElementsMatchingTypeNotInDetails("script", headDetails); }; HeadDetails.prototype.getStylesheetElementsNotInDetails = function(headDetails) { return this.getElementsMatchingTypeNotInDetails("stylesheet", headDetails); }; HeadDetails.prototype.getElementsMatchingTypeNotInDetails = function(matchedType, headDetails) { var elements, key, ref, ref1, results, type; ref = this.elements; results = []; for (key in ref) { ref1 = ref[key], type = ref1.type, elements = ref1.elements; if (type === matchedType && !headDetails.hasElementWithKey(key)) { results.push(elements[0]); } } return results; }; HeadDetails.prototype.getProvisionalElements = function() { var elements, key, provisionalElements, ref, ref1, tracked, type; provisionalElements = []; ref = this.elements; for (key in ref) { ref1 = ref[key], type = ref1.type, tracked = ref1.tracked, elements = ref1.elements; if ((type == null) && !tracked) { provisionalElements.push.apply(provisionalElements, elements); } else if (elements.length > 1) { provisionalElements.push.apply(provisionalElements, elements.slice(1)); } } return provisionalElements; }; HeadDetails.prototype.getMetaValue = function(name) { var ref; return (ref = this.findMetaElementByName(name)) != null ? ref.getAttribute("content") : void 0; }; HeadDetails.prototype.findMetaElementByName = function(name) { var element, elements, key, ref; element = void 0; ref = this.elements; for (key in ref) { elements = ref[key].elements; if (elementIsMetaElementWithName(elements[0], name)) { element = elements[0]; } } return element; }; elementType = function(element) { if (elementIsScript(element)) { return "script"; } else if (elementIsStylesheet(element)) { return "stylesheet"; } }; elementIsTracked = function(element) { return element.getAttribute("data-turbolinks-track") === "reload"; }; elementIsScript = function(element) { var tagName; tagName = element.tagName.toLowerCase(); return tagName === "script"; }; elementIsStylesheet = function(element) { var tagName; tagName = element.tagName.toLowerCase(); return tagName === "style" || (tagName === "link" && element.getAttribute("rel") === "stylesheet"); }; elementIsMetaElementWithName = function(element, name) { var tagName; tagName = element.tagName.toLowerCase(); return tagName === "meta" && element.getAttribute("name") === name; }; return HeadDetails; })(); }).call(this);