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/snapshot.js
// Generated by CoffeeScript 1.12.8
(function() {
  require('./head_details');

  Turbolinks.Snapshot = (function() {
    Snapshot.wrap = function(value) {
      if (value instanceof this) {
        return value;
      } else if (typeof value === "string") {
        return this.fromHTMLString(value);
      } else {
        return this.fromHTMLElement(value);
      }
    };

    Snapshot.fromHTMLString = function(html) {
      var htmlElement;
      htmlElement = document.createElement("html");
      htmlElement.innerHTML = html;
      return this.fromHTMLElement(htmlElement);
    };

    Snapshot.fromHTMLElement = function(htmlElement) {
      var bodyElement, headDetails, headElement, ref;
      headElement = htmlElement.querySelector("head");
      bodyElement = (ref = htmlElement.querySelector("body")) != null ? ref : document.createElement("body");
      headDetails = Turbolinks.HeadDetails.fromHeadElement(headElement);
      return new this(headDetails, bodyElement);
    };

    function Snapshot(headDetails1, bodyElement1) {
      this.headDetails = headDetails1;
      this.bodyElement = bodyElement1;
    }

    Snapshot.prototype.clone = function() {
      return new this.constructor(this.headDetails, this.bodyElement.cloneNode(true));
    };

    Snapshot.prototype.getRootLocation = function() {
      var ref, root;
      root = (ref = this.getSetting("root")) != null ? ref : "/";
      return new Turbolinks.Location(root);
    };

    Snapshot.prototype.getCacheControlValue = function() {
      return this.getSetting("cache-control");
    };

    Snapshot.prototype.getElementForAnchor = function(anchor) {
      try {
        return this.bodyElement.querySelector("[id='" + anchor + "'], a[name='" + anchor + "']");
      } catch (error) {}
    };

    Snapshot.prototype.getPermanentElements = function() {
      return this.bodyElement.querySelectorAll("[id][data-turbolinks-permanent]");
    };

    Snapshot.prototype.getPermanentElementById = function(id) {
      return this.bodyElement.querySelector("#" + id + "[data-turbolinks-permanent]");
    };

    Snapshot.prototype.getPermanentElementsPresentInSnapshot = function(snapshot) {
      var element, i, len, ref, results;
      ref = this.getPermanentElements();
      results = [];
      for (i = 0, len = ref.length; i < len; i++) {
        element = ref[i];
        if (snapshot.getPermanentElementById(element.id)) {
          results.push(element);
        }
      }
      return results;
    };

    Snapshot.prototype.findFirstAutofocusableElement = function() {
      return this.bodyElement.querySelector("[autofocus]");
    };

    Snapshot.prototype.hasAnchor = function(anchor) {
      return this.getElementForAnchor(anchor) != null;
    };

    Snapshot.prototype.isPreviewable = function() {
      return this.getCacheControlValue() !== "no-preview";
    };

    Snapshot.prototype.isCacheable = function() {
      return this.getCacheControlValue() !== "no-cache";
    };

    Snapshot.prototype.isVisitable = function() {
      return this.getSetting("visit-control") !== "reload";
    };

    Snapshot.prototype.getSetting = function(name) {
      return this.headDetails.getMetaValue("turbolinks-" + name);
    };

    return Snapshot;

  })();

}).call(this);