-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbackbone.viewcache.min.js
More file actions
6 lines (6 loc) · 1.82 KB
/
backbone.viewcache.min.js
File metadata and controls
6 lines (6 loc) · 1.82 KB
1
2
3
4
5
6
/*!
* backbone.viewcache.js v1.1.2
* Copyright 2014, 2015 Ingmar Hergst
* backbone.viewcache.js may be freely distributed under the MIT license.
*/
!function(e,o){if("function"==typeof define&&define.amd)define(["backbone","underscore","jquery"],o);else if("object"==typeof exports){var r=require("backbone"),n=require("underscore");r.$=r.$||require("jquery"),module.exports=o(r,n,r.$)}else o(e.Backbone,e._,e.Backbone.$)}(this,function(e,o,r,n){function i(){var e=h.checkExpireds||h.cacheExpiry;e&&(f=o.now()+1e3*e)}function c(o,r){var n;h.retainScrollPosition&&(n=e.ViewCache.get(r),n&&n[o+"ScrollPosition"]())}function t(e){delete y[e]}function s(e){var r=y[e],n=r&&r._cacheExpiry;n&&o.now()>n&&t(e)}function l(e){var o,r=e?s:t;for(o in y)y.hasOwnProperty(o)&&r(o)}function a(r){return o.isString(r)?r:e.history.fragment}var u,f,p={retainScrollPosition:!0,scrollElement:window,cacheExpiry:n,checkExpireds:n,scrollToTopByDefault:!0},h=p,y={};return o.extend(e.View.prototype,{saveScrollPosition:function(){this._scrollPosition=r(h.scrollElement).scrollTop()},restoreScrollPosition:function(){this._scrollPosition?r(h.scrollElement).scrollTop(this._scrollPosition):h.scrollToTopByDefault&&r(h.scrollElement).scrollTop(0)},setCacheExpiry:function(e){e&&(this._cacheExpiry=o.now()+1e3*e)}}),e.ViewCache={config:function(e){return e&&(e.checkExpireds||(e.checkExpireds=e.cacheExpiry||p.cacheExpiry),h=o.defaults(e,p)),h},get:function(e){return e=a(e),s(e),y[e]},set:function(e,r,n){return o.isBoolean(r)&&(n=r),r=a(r),e._cacheExpiry&&!n||e.setCacheExpiry(h.cacheExpiry),!f&&e._cacheExpiry&&i(),y[r]=e,e},remove:function(e){e=a(e),t(e)},clear:function(){l()},clearExpireds:function(){l(!0)},beforeRoute:function(){o.isUndefined(u)||(c("save",u),this.lastUrlFragment=u,f&&o.now()>f&&(l(!0),i()))},afterRoute:function(){var e=a();c("restore",e),u=e}},e.ViewCache});