UNPKG

4.39 kBJavaScriptView Raw
1!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e=e||self).CuriReactDOM={},e.React)}(this,function(e,g){"use strict";function a(e,n,t){if(void 0===t&&(t={}),!(n.name===e.name||t.partial&&function n(t,e){return e.some(function(e){return e.name===t||!!e.children&&n(t,e.children)})}(n.name,e.children)))return!1;var r=e.keys;if(r.length){if(!t.params)return!1;for(var a=0,o=r.length;a<o;a++){var u=r[a],i=t.params[u];if(!i||i!==n.params[u])return!1}}return!t.components||t.components(n.location)}var n=(g=g&&g.hasOwnProperty("default")?g.default:g).createContext({response:null,navigation:null}),u=n.Provider,t=n.Consumer,r=g.createContext(null),i=r.Provider,o=r.Consumer;function m(){return g.useContext(r)}function c(){return g.useContext(n)}function y(e){return m().url(e)}function p(){return!0}function h(e){var n=e.url,t=e.onNav,r=e.method,a=e.target,o=e.state,u=e.canNavigate,i=void 0===u?p:u,c=m(),s=g.useCallback(function(e){t&&t(e),i(e,a)&&(e.preventDefault(),c.navigate({url:n,state:o,method:r}))},[n,r,o,t,a]);return{url:n,eventHandler:s}}function N(e){var t=e.url,r=e.onNav,a=e.method,o=e.target,u=e.state,n=e.canNavigate,i=void 0===n?p:n,c=m(),s=g.useRef(void 0),f=g.useState(!1),l=f[0],v=f[1];g.useEffect(function(){return function(){s.current&&s.current()}},[]);var d=g.useCallback(function(e){if(r&&r(e),i(e,o)){e.preventDefault();var n=function(){s.current=void 0,v(!1)};v(!0),s.current=c.navigate({url:t,state:u,method:a,cancelled:n,finished:n})}},[t,a,u,r,o]);return{url:t,eventHandler:d,navigating:l}}var C=function(){return(C=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var a in n=arguments[t])Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a]);return e}).apply(this,arguments)};function O(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)n.indexOf(r[a])<0&&(t[r[a]]=e[r[a]])}return t}function b(e,n){return!e.defaultPrevented&&!n&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}var s=g.forwardRef(function(e,n){var t,r=e.name,a=e.params,o=e.query,u=e.hash,i=e.state,c=e.onNav,s=e.method,f=e.children,l=void 0===(t=e.anchor)?"a":t,v=O(e,["name","params","query","hash","state","onNav","method","children","anchor"]),d=y({name:r,params:a,query:o,hash:u}),m=h({url:d,state:i,onNav:c,method:s,canNavigate:b,target:v.target}).eventHandler;return g.createElement(l,C({},v,{onClick:m,href:d,ref:n}),f)}),f=g.forwardRef(function(e,n){var t,r,a=e.name,o=e.params,u=e.query,i=e.hash,c=e.state,s=e.onNav,f=e.method,l=e.children,v=void 0===(t=e.anchor)?"a":t,d=O(e,["name","params","query","hash","state","onNav","method","children","anchor"]),m=y({name:a,params:o,query:u,hash:i}),p=(r=N({url:m,state:c,onNav:s,method:f,canNavigate:b,target:d.target})).eventHandler,h=r.navigating;return g.createElement(v,C({},d,{onClick:p,href:m,ref:n}),l(h))});e.AsyncLink=f,e.Link=s,e.ResponseConsumer=t,e.RouterConsumer=o,e.createRouterComponent=function(o){function r(){return o.current()}return function(e){var n=g.useState(r),t=n[0],a=n[1];return g.useEffect(function(){var r=!1,e=o.observe(function(e){var n=e.response,t=e.navigation;r||a({response:n,navigation:t})},{initial:!1});return function(){r=!0,e()}},[]),g.createElement(i,{value:o},g.createElement(u,{value:t},e.children))}},e.useActive=function(e){var n=m(),t=c().response,r=n.route(e.name);return!!r&&a(r,t,{params:e.params,partial:e.partial,components:e.components})},e.useConfirm=function(e){var n=m();g.useEffect(function(){return n.history.confirm(e),function(){n.history.confirm()}},[e])},e.useNavigating=function(){var t=m(),e=g.useState(void 0),n=e[0],r=e[1];return g.useEffect(function(){var n=!1,e=t.cancel(function(e){n||r(function(){return e})});return function(){n=!0,e()}},[]),n},e.useNavigationFocus=function(n,e){void 0===e&&(e={});var t=c().response,r=e.preserve,a=e.preventScroll,o=void 0!==a&&a;g.useEffect(function(){var e=n.current;null!==e&&(r&&e.contains(document.activeElement)||e.focus({preventScroll:o}))},[t])},e.useNavigationHandler=h,e.useResponse=c,e.useRouter=m,e.useStatefulNavigationHandler=N,e.useURL=y,Object.defineProperty(e,"__esModule",{value:!0})});