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/browser_adapter.js
// Generated by CoffeeScript 1.12.8
(function() {
  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };

  require('./http_request');

  require('./progress_bar');

  Turbolinks.BrowserAdapter = (function() {
    var NETWORK_FAILURE, TIMEOUT_FAILURE, ref;

    ref = Turbolinks.HttpRequest, NETWORK_FAILURE = ref.NETWORK_FAILURE, TIMEOUT_FAILURE = ref.TIMEOUT_FAILURE;

    function BrowserAdapter(controller) {
      this.controller = controller;
      this.showProgressBar = bind(this.showProgressBar, this);
      this.progressBar = new Turbolinks.ProgressBar;
    }

    BrowserAdapter.prototype.visitProposedToLocationWithAction = function(location, action) {
      return this.controller.startVisitToLocationWithAction(location, action);
    };

    BrowserAdapter.prototype.visitStarted = function(visit) {
      visit.issueRequest();
      visit.changeHistory();
      return visit.loadCachedSnapshot();
    };

    BrowserAdapter.prototype.visitRequestStarted = function(visit) {
      this.progressBar.setValue(0);
      if (visit.hasCachedSnapshot() || visit.action !== "restore") {
        return this.showProgressBarAfterDelay();
      } else {
        return this.showProgressBar();
      }
    };

    BrowserAdapter.prototype.visitRequestProgressed = function(visit) {
      return this.progressBar.setValue(visit.progress);
    };

    BrowserAdapter.prototype.visitRequestCompleted = function(visit) {
      return visit.loadResponse();
    };

    BrowserAdapter.prototype.visitRequestFailedWithStatusCode = function(visit, statusCode) {
      switch (statusCode) {
        case NETWORK_FAILURE:
        case TIMEOUT_FAILURE:
          return this.reload();
        default:
          return visit.loadResponse();
      }
    };

    BrowserAdapter.prototype.visitRequestFinished = function(visit) {
      return this.hideProgressBar();
    };

    BrowserAdapter.prototype.visitCompleted = function(visit) {
      return visit.followRedirect();
    };

    BrowserAdapter.prototype.pageInvalidated = function() {
      return this.reload();
    };

    BrowserAdapter.prototype.showProgressBarAfterDelay = function() {
      return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);
    };

    BrowserAdapter.prototype.showProgressBar = function() {
      return this.progressBar.show();
    };

    BrowserAdapter.prototype.hideProgressBar = function() {
      this.progressBar.hide();
      return clearTimeout(this.progressBarTimeout);
    };

    BrowserAdapter.prototype.reload = function() {
      return window.location.reload();
    };

    return BrowserAdapter;

  })();

}).call(this);