'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _core = require('@react-navigation/core'); var _queryString = require('query-string'); var _queryString2 = _interopRequireDefault(_queryString); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const getTopNavigation = navigation => { const parent = navigation.dangerouslyGetParent(); if (parent) { return getTopNavigation(parent); } return navigation; }; class LinkWithNavigation extends _react.Component { render() { const { children, params, routeName, routeKey, navigation, action } = this.props; const topNavigation = getTopNavigation(navigation); const topRouter = topNavigation.router; const navAction = action || _core.NavigationActions.navigate({ routeName, key: routeKey, params }); if (!action && !routeName && !routeKey) { throw new Error('Must provide a routeName, routeKey, or a navigation action prop to <Link>'); } if (action && routeKey) { throw new Error('Cannot specify a conflicting "routeKey" and a navigation "action" prop. Either use routeName with routeKey to specify a navigate action, or provide the specific navigation "action" prop.'); } if (action && routeName) { throw new Error('Cannot specify a conflicting "routeName" and a navigation "action" prop. Either use routeName with routeKey to specify a navigate action, or provide the specific navigation "action" prop.'); } const navActionResponse = topRouter.getStateForAction(navAction, topNavigation.state); const nextState = navActionResponse === null ? topNavigation.state : navActionResponse; const pathAndParams = topRouter.getPathAndParamsForState(nextState); const href = Object.keys(pathAndParams.params).length ? `/${pathAndParams.path}?${_queryString2.default.stringify(pathAndParams.params)}` : `/${pathAndParams.path}`; return _react2.default.createElement( 'a', { href: href, onClick: e => { navigation.dispatch(navAction); e.preventDefault(); } }, children ); } } const Link = (0, _core.withNavigation)(LinkWithNavigation); exports.default = Link;