| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | (function (root, factory) {  if (typeof define === 'function' && define.amd) {    // AMD. Register as an anonymous module unless amdModuleId is set    define('simditor-autosave', ["jquery","simple-module","simditor"], function (a0,b1,c2) {      return (root['SimditorAutosave'] = factory(a0,b1,c2));    });  } else if (typeof exports === 'object') {    // Node. Does not work with strict CommonJS, but    // only CommonJS-like environments that support module.exports,    // like Node.    module.exports = factory(require("jquery"),require("simple-module"),require("simditor"));  } else {    root['SimditorAutosave'] = factory(jQuery,SimpleModule,Simditor);  }}(this, function ($, SimpleModule, Simditor) {var SimditorAutosave,  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },  hasProp = {}.hasOwnProperty;SimditorAutosave = (function(superClass) {  extend(SimditorAutosave, superClass);  function SimditorAutosave() {    return SimditorAutosave.__super__.constructor.apply(this, arguments);  }  SimditorAutosave.pluginName = 'Autosave';  SimditorAutosave.prototype.opts = {    autosave: true,    autosavePath: null  };  SimditorAutosave.prototype._init = function() {    var currentVal, link, name, val;    this.editor = this._module;    if (!this.opts.autosave) {      return;    }    this.name = typeof this.opts.autosave === 'string' ? this.opts.autosave : 'simditor';    if (this.opts.autosavePath) {      this.path = this.opts.autosavePath;    } else {      link = $("<a/>", {        href: location.href      });      name = this.editor.textarea.data('autosave') || this.name;      this.path = "/" + (link[0].pathname.replace(/\/$/g, "").replace(/^\//g, "")) + "/autosave/" + name + "/";    }    if (!this.path) {      return;    }    this.editor.on("valuechanged", (function(_this) {      return function() {        return _this.storage.set(_this.path, _this.editor.getValue());      };    })(this));    this.editor.el.closest('form').on('ajax:success.simditor-' + this.editor.id, (function(_this) {      return function(e) {        return _this.storage.remove(_this.path);      };    })(this));    val = this.storage.get(this.path);    if (!val) {      return;    }    currentVal = this.editor.textarea.val();    if (val === currentVal) {      return;    }    if (this.editor.textarea.is('[data-autosave-confirm]')) {      if (confirm(this.editor.textarea.data('autosave-confirm') || 'Are you sure to restore unsaved changes?')) {        return this.editor.setValue(val);      } else {        return this.storage.remove(this.path);      }    } else {      return this.editor.setValue(val);    }  };  SimditorAutosave.prototype.storage = {    supported: function() {      var error;      try {        localStorage.setItem('_storageSupported', 'yes');        localStorage.removeItem('_storageSupported');        return true;      } catch (_error) {        error = _error;        return false;      }    },    set: function(key, val, session) {      var storage;      if (session == null) {        session = false;      }      if (!this.supported()) {        return;      }      storage = session ? sessionStorage : localStorage;      return storage.setItem(key, val);    },    get: function(key, session) {      var storage;      if (session == null) {        session = false;      }      if (!this.supported()) {        return;      }      storage = session ? sessionStorage : localStorage;      return storage[key];    },    remove: function(key, session) {      var storage;      if (session == null) {        session = false;      }      if (!this.supported()) {        return;      }      storage = session ? sessionStorage : localStorage;      return storage.removeItem(key);    }  };  return SimditorAutosave;})(SimpleModule);Simditor.connect(SimditorAutosave);return SimditorAutosave;}));
 |