HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/share/nodejs/turbolinks/src/turbolinks/head_details.js
// 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);