state-in-url
Version:
Store state in URL as in object, types and structure are preserved, with TS validation. Same API as React.useState, wthout any hasssle or boilerplate. Next.js@14-15, react-router@6-7, and remix@2.
2 lines (1 loc) • 718 B
JavaScript
;var n=require("react");var u=require("../encodeState/encodeState.js");var i=require("../subscribers.js");var o=require("../utils.js");var s=require("./hrefWithState.js");function l(e){return e&&e.__esModule?e:{default:e}}var c=l(n);const f=/^[a-z][a-z\d+\-.]*:|^\/\//i;function d(e){return e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||!!e.currentTarget?.target}function h(e){return i.stateMap.get(e)??u.decodeState(o.filterUnknownParamsClient(e,window.location.search),e)}function v(e,t){return c.default.useCallback(r=>({href:r,onClick:a=>{if(f.test(r)||d(a))return;a.preventDefault();t(s.hrefWithState(r,e,h(e),window.location.search))}}),[e,t])}exports.useLinkProps=v;