history-query-enhancer
Version:
Enhance session history with query property
2 lines (1 loc) • 1.43 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.HistoryQueryEnhancer=t()}(this,function(){"use strict";var u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e};return function(e){var t=e.parse,c=e.stringify;return function(r){var o=function(e){return u({},e,{query:t(e.search)})},n=function(e){var t=e.query,n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n}(e,["query"]);return u({},n,{search:t&&"object"==typeof t?c(t):n.search})},e=u({},r,{location:o(r.location),push:function(e,t){return"object"!=typeof e?r.push(e,t):r.push(n(e))},replace:function(e,t){return"object"!=typeof e?r.replace(e,t):r.replace(n(e))},block:function(n){return r.block("function"!=typeof n?n:function(e,t){return n(o(e),t)})},listen:function(n){return r.listen(function(e,t){return n(o(e),t)})},createHref:function(e){return r.createHref(n(e))}});return Object.defineProperties(e,{length:{get:function(){return r.length}},action:{get:function(){return r.action}},location:{get:function(){return o(r.location)}}}),e}}});