JSFiddle - React, Tailwind, and code Playground

by shapeshifta

Babel + JSX

class Trackor {
  constructor() {
    if (sessionStorage.tabId && sessionStorage.closedLastTab !== false) {
      this.tabId = sessionStorage.tabId;
    } else {
      let tabId = this.uuid();
      this.tabId = tabId;
      sessionStorage.tabId = tabId;
    }
  }
  uuid() {
    function s4() {
      return Math.floor((1 + Math.random()) * 0x10000)
        .toString(16)
        .substring(1);
    }
    return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
      s4() + '-' + s4() + s4() + s4();
  }
  set tabId(id) {
    if (!sessionStorage.tabId) {
      sessionStorage.tabId = id;
    } else {
      console.log('tab id already set');
    }
  }
  get tabId() {
    return this.tabId = sessionStorage.tabId;
  }

}
sessionStorage.clear();
console.log(sessionStorage.tabId);
let trackor = new Trackor();
console.log(sessionStorage.tabId);
console.log(trackor.tabId);
console.log(trackor.tabId);
console.log(sessionStorage.tabId);

sessionStorage.closedLastTab = false;
// tab was duplicated
$(window).on('unload beforeunload', function() {
  sessionStorage.closedLastTab = true;
});