{"version":3,"file":"js/2699.chunk.js","mappings":"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","sources":["webpack:///./node_modules/react-router-dom/modules/BrowserRouter.js","webpack:///./node_modules/react-router-dom/modules/HashRouter.js","webpack:///./node_modules/react-router-dom/modules/utils/locationUtils.js","webpack:///./node_modules/react-router-dom/modules/Link.js","webpack:///./node_modules/react-router-dom/modules/NavLink.js","webpack:///./node_modules/react-swipeable/src/types.ts","webpack:///./node_modules/react-swipeable/src/index.ts","webpack:///./node_modules/reselect/es/defaultMemoize.js","webpack:///./node_modules/reselect/es/index.js","webpack:///./node_modules/usehooks-ts/dist/esm/useElementSize/useElementSize.js","webpack:///./node_modules/usehooks-ts/dist/esm/useEventListener/useEventListener.js","webpack:///./node_modules/usehooks-ts/dist/esm/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js"],"sourcesContent":["import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\n          event.button === 0 && // ignore everything but left clicks\n          (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n          !isModifiedEvent(event) // ignore clicks with modifier keys\n        ) {\n          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const method = replace ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\",\n      activeStyle,\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      sensitive,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                sensitive,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          const className = isActive\n            ? joinClassnames(classNameProp, activeClassName)\n            : classNameProp;\n          const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.string,\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool,\n    style: PropTypes.object\n  };\n}\n\nexport default NavLink;\n","import * as React from \"react\";\n\nexport const LEFT = \"Left\";\nexport const RIGHT = \"Right\";\nexport const UP = \"Up\";\nexport const DOWN = \"Down\";\nexport type HandledEvents = React.MouseEvent | TouchEvent | MouseEvent;\nexport type Vector2 = [number, number];\nexport type SwipeDirections =\n  | typeof LEFT\n  | typeof RIGHT\n  | typeof UP\n  | typeof DOWN;\nexport interface SwipeEventData {\n  /**\n   * Absolute displacement of swipe in x. Math.abs(deltaX);\n   */\n  absX: number;\n  /**\n   * Absolute displacement of swipe in y. Math.abs(deltaY);\n   */\n  absY: number;\n  /**\n   * Displacement of swipe in x. (current.x - initial.x)\n   */\n  deltaX: number;\n  /**\n   * Displacement of swipe in y. (current.y - initial.y)\n   */\n  deltaY: number;\n  /**\n   * Direction of swipe - Left | Right | Up | Down\n   */\n  dir: SwipeDirections;\n  /**\n   * Source event.\n   */\n  event: HandledEvents;\n  /**\n   * True for the first event of a tracked swipe.\n   */\n  first: boolean;\n  /**\n   * Location where swipe started - [x, y].\n   */\n  initial: Vector2;\n  /**\n   * \"Absolute velocity\" (speed) - √(absX^2 + absY^2) / time\n   */\n  velocity: number;\n  /**\n   * Velocity per axis - [ deltaX/time, deltaY/time ]\n   */\n  vxvy: Vector2;\n}\n\nexport type SwipeCallback = (eventData: SwipeEventData) => void;\nexport type TapCallback = ({ event }: { event: HandledEvents }) => void;\n\nexport type SwipeableDirectionCallbacks = {\n  /**\n   * Called after a DOWN swipe\n   */\n  onSwipedDown: SwipeCallback;\n  /**\n   * Called after a LEFT swipe\n   */\n  onSwipedLeft: SwipeCallback;\n  /**\n   * Called after a RIGHT swipe\n   */\n  onSwipedRight: SwipeCallback;\n  /**\n   * Called after a UP swipe\n   */\n  onSwipedUp: SwipeCallback;\n};\n\nexport type SwipeableCallbacks = SwipeableDirectionCallbacks & {\n  /**\n   * Called at start of a tracked swipe.\n   */\n  onSwipeStart: SwipeCallback;\n  /**\n   * Called after any swipe.\n   */\n  onSwiped: SwipeCallback;\n  /**\n   * Called for each move event during a tracked swipe.\n   */\n  onSwiping: SwipeCallback;\n  /**\n   * Called after a tap. A touch under the min distance, `delta`.\n   */\n  onTap: TapCallback;\n  /**\n   * Called for `touchstart` and `mousedown`.\n   */\n  onTouchStartOrOnMouseDown: TapCallback;\n  /**\n   * Called for `touchend` and `mouseup`.\n   */\n  onTouchEndOrOnMouseUp: TapCallback;\n};\n\n// Configuration Options\nexport type ConfigurationOptionDelta =\n  | number\n  | { [key in Lowercase<SwipeDirections>]?: number };\n\nexport interface ConfigurationOptions {\n  /**\n   * Min distance(px) before a swipe starts. **Default**: `10`\n   */\n  delta: ConfigurationOptionDelta;\n  /**\n   * Prevents scroll during swipe in most cases. **Default**: `false`\n   */\n  preventScrollOnSwipe: boolean;\n  /**\n   * Set a rotation angle. **Default**: `0`\n   */\n  rotationAngle: number;\n  /**\n   * Track mouse input. **Default**: `false`\n   */\n  trackMouse: boolean;\n  /**\n   * Track touch input. **Default**: `true`\n   */\n  trackTouch: boolean;\n  /**\n   * Allowable duration of a swipe (ms). **Default**: `Infinity`\n   */\n  swipeDuration: number;\n  /**\n   * Options for touch event listeners\n   */\n  touchEventOptions: { passive: boolean };\n}\n\nexport type SwipeableProps = Partial<SwipeableCallbacks & ConfigurationOptions>;\n\nexport type SwipeablePropsWithDefaultOptions = Partial<SwipeableCallbacks> &\n  ConfigurationOptions;\n\nexport interface SwipeableHandlers {\n  ref(element: HTMLElement | null): void;\n  onMouseDown?(event: React.MouseEvent): void;\n}\n\nexport type SwipeableState = {\n  cleanUpTouch?: () => void;\n  el?: HTMLElement;\n  eventData?: SwipeEventData;\n  first: boolean;\n  initial: Vector2;\n  start: number;\n  swiping: boolean;\n  xy: Vector2;\n};\n\nexport type StateSetter = (\n  state: SwipeableState,\n  props: SwipeablePropsWithDefaultOptions\n) => SwipeableState;\nexport type Setter = (stateSetter: StateSetter) => void;\nexport type AttachTouch = (\n  el: HTMLElement,\n  props: SwipeablePropsWithDefaultOptions\n) => () => void;\n","/* global document */\nimport * as React from \"react\";\nimport {\n  AttachTouch,\n  SwipeDirections,\n  DOWN,\n  SwipeEventData,\n  HandledEvents,\n  LEFT,\n  RIGHT,\n  Setter,\n  ConfigurationOptions,\n  SwipeableDirectionCallbacks,\n  SwipeableHandlers,\n  SwipeableProps,\n  SwipeablePropsWithDefaultOptions,\n  SwipeableState,\n  SwipeCallback,\n  TapCallback,\n  UP,\n  Vector2,\n} from \"./types\";\n\nexport {\n  LEFT,\n  RIGHT,\n  UP,\n  DOWN,\n  SwipeDirections,\n  SwipeEventData,\n  SwipeableDirectionCallbacks,\n  SwipeCallback,\n  TapCallback,\n  SwipeableHandlers,\n  SwipeableProps,\n  Vector2,\n};\n\nconst defaultProps: ConfigurationOptions = {\n  delta: 10,\n  preventScrollOnSwipe: false,\n  rotationAngle: 0,\n  trackMouse: false,\n  trackTouch: true,\n  swipeDuration: Infinity,\n  touchEventOptions: { passive: true },\n};\nconst initialState: SwipeableState = {\n  first: true,\n  initial: [0, 0],\n  start: 0,\n  swiping: false,\n  xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\n\nfunction getDirection(\n  absX: number,\n  absY: number,\n  deltaX: number,\n  deltaY: number\n): SwipeDirections {\n  if (absX > absY) {\n    if (deltaX > 0) {\n      return RIGHT;\n    }\n    return LEFT;\n  } else if (deltaY > 0) {\n    return DOWN;\n  }\n  return UP;\n}\n\nfunction rotateXYByAngle(pos: Vector2, angle: number): Vector2 {\n  if (angle === 0) return pos;\n  const angleInRadians = (Math.PI / 180) * angle;\n  const x =\n    pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n  const y =\n    pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n  return [x, y];\n}\n\nfunction getHandlers(\n  set: Setter,\n  handlerProps: { trackMouse: boolean | undefined }\n): [\n  {\n    ref: (element: HTMLElement | null) => void;\n    onMouseDown?: (event: React.MouseEvent) => void;\n  },\n  AttachTouch\n] {\n  const onStart = (event: HandledEvents) => {\n    const isTouch = \"touches\" in event;\n    // if more than a single touch don't track, for now...\n    if (isTouch && event.touches.length > 1) return;\n\n    set((state, props) => {\n      // setup mouse listeners on document to track swipe since swipe can leave container\n      if (props.trackMouse && !isTouch) {\n        document.addEventListener(mouseMove, onMove);\n        document.addEventListener(mouseUp, onUp);\n      }\n      const { clientX, clientY } = isTouch ? event.touches[0] : event;\n      const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n\n      props.onTouchStartOrOnMouseDown &&\n        props.onTouchStartOrOnMouseDown({ event });\n\n      return {\n        ...state,\n        ...initialState,\n        initial: xy.slice() as Vector2,\n        xy,\n        start: event.timeStamp || 0,\n      };\n    });\n  };\n\n  const onMove = (event: HandledEvents) => {\n    set((state, props) => {\n      const isTouch = \"touches\" in event;\n      // Discount a swipe if additional touches are present after\n      // a swipe has started.\n      if (isTouch && event.touches.length > 1) {\n        return state;\n      }\n\n      // if swipe has exceeded duration stop tracking\n      if (event.timeStamp - state.start > props.swipeDuration) {\n        return state.swiping ? { ...state, swiping: false } : state;\n      }\n\n      const { clientX, clientY } = isTouch ? event.touches[0] : event;\n      const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n      const deltaX = x - state.xy[0];\n      const deltaY = y - state.xy[1];\n      const absX = Math.abs(deltaX);\n      const absY = Math.abs(deltaY);\n      const time = (event.timeStamp || 0) - state.start;\n      const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n      const vxvy: Vector2 = [deltaX / (time || 1), deltaY / (time || 1)];\n\n      const dir = getDirection(absX, absY, deltaX, deltaY);\n\n      // if swipe is under delta and we have not started to track a swipe: skip update\n      const delta =\n        typeof props.delta === \"number\"\n          ? props.delta\n          : props.delta[dir.toLowerCase() as Lowercase<SwipeDirections>] ||\n            defaultProps.delta;\n      if (absX < delta && absY < delta && !state.swiping) return state;\n\n      const eventData = {\n        absX,\n        absY,\n        deltaX,\n        deltaY,\n        dir,\n        event,\n        first: state.first,\n        initial: state.initial,\n        velocity,\n        vxvy,\n      };\n\n      // call onSwipeStart if present and is first swipe event\n      eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n\n      // call onSwiping if present\n      props.onSwiping && props.onSwiping(eventData);\n\n      // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n      // so we can call preventDefault if needed\n      let cancelablePageSwipe = false;\n      if (\n        props.onSwiping ||\n        props.onSwiped ||\n        props[`onSwiped${dir}` as keyof SwipeableDirectionCallbacks]\n      ) {\n        cancelablePageSwipe = true;\n      }\n\n      if (\n        cancelablePageSwipe &&\n        props.preventScrollOnSwipe &&\n        props.trackTouch &&\n        event.cancelable\n      ) {\n        event.preventDefault();\n      }\n\n      return {\n        ...state,\n        // first is now always false\n        first: false,\n        eventData,\n        swiping: true,\n      };\n    });\n  };\n\n  const onEnd = (event: HandledEvents) => {\n    set((state, props) => {\n      let eventData: SwipeEventData | undefined;\n      if (state.swiping && state.eventData) {\n        // if swipe is less than duration fire swiped callbacks\n        if (event.timeStamp - state.start < props.swipeDuration) {\n          eventData = { ...state.eventData, event };\n          props.onSwiped && props.onSwiped(eventData);\n\n          const onSwipedDir =\n            props[\n              `onSwiped${eventData.dir}` as keyof SwipeableDirectionCallbacks\n            ];\n          onSwipedDir && onSwipedDir(eventData);\n        }\n      } else {\n        props.onTap && props.onTap({ event });\n      }\n\n      props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n\n      return { ...state, ...initialState, eventData };\n    });\n  };\n\n  const cleanUpMouse = () => {\n    // safe to just call removeEventListener\n    document.removeEventListener(mouseMove, onMove);\n    document.removeEventListener(mouseUp, onUp);\n  };\n\n  const onUp = (e: HandledEvents) => {\n    cleanUpMouse();\n    onEnd(e);\n  };\n\n  /**\n   * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n   * - true => { passive: false }\n   * - false => { passive: true } // Default\n   *\n   * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n   *\n   * props.touchEventOptions can also be set for all touch event listeners,\n   * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n   * supersede and force passive to false.\n   *\n   */\n  const attachTouch: AttachTouch = (el, props) => {\n    let cleanup = () => {};\n    if (el && el.addEventListener) {\n      const baseOptions = {\n        ...defaultProps.touchEventOptions,\n        ...props.touchEventOptions,\n      };\n      // attach touch event listeners and handlers\n      const tls: [\n        typeof touchStart | typeof touchMove | typeof touchEnd,\n        (e: HandledEvents) => void,\n        { passive: boolean }\n      ][] = [\n        [touchStart, onStart, baseOptions],\n        // preventScrollOnSwipe option supersedes touchEventOptions.passive\n        [\n          touchMove,\n          onMove,\n          {\n            ...baseOptions,\n            ...(props.preventScrollOnSwipe ? { passive: false } : {}),\n          },\n        ],\n        [touchEnd, onEnd, baseOptions],\n      ];\n      tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n      // return properly scoped cleanup method for removing listeners, options not required\n      cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n    }\n    return cleanup;\n  };\n\n  const onRef = (el: HTMLElement | null) => {\n    // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n    // ignore null here\n    if (el === null) return;\n    set((state, props) => {\n      // if the same DOM el as previous just return state\n      if (state.el === el) return state;\n\n      const addState: { cleanUpTouch?: () => void } = {};\n      // if new DOM el clean up old DOM and reset cleanUpTouch\n      if (state.el && state.el !== el && state.cleanUpTouch) {\n        state.cleanUpTouch();\n        addState.cleanUpTouch = void 0;\n      }\n      // only attach if we want to track touch\n      if (props.trackTouch && el) {\n        addState.cleanUpTouch = attachTouch(el, props);\n      }\n\n      // store event attached DOM el for comparison, clean up, and re-attachment\n      return { ...state, el, ...addState };\n    });\n  };\n\n  // set ref callback to attach touch event listeners\n  const output: { ref: typeof onRef; onMouseDown?: typeof onStart } = {\n    ref: onRef,\n  };\n\n  // if track mouse attach mouse down listener\n  if (handlerProps.trackMouse) {\n    output.onMouseDown = onStart;\n  }\n\n  return [output, attachTouch];\n}\n\nfunction updateTransientState(\n  state: SwipeableState,\n  props: SwipeablePropsWithDefaultOptions,\n  previousProps: SwipeablePropsWithDefaultOptions,\n  attachTouch: AttachTouch\n) {\n  // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n  if (!props.trackTouch || !state.el) {\n    if (state.cleanUpTouch) {\n      state.cleanUpTouch();\n    }\n\n    return {\n      ...state,\n      cleanUpTouch: undefined,\n    };\n  }\n\n  // trackTouch is on, so if there are no handlers attached, attach them and exit\n  if (!state.cleanUpTouch) {\n    return {\n      ...state,\n      cleanUpTouch: attachTouch(state.el, props),\n    };\n  }\n\n  // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n  // remove and reattach handlers (this is required to update the passive option when attaching\n  // the handlers)\n  if (\n    props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n    props.touchEventOptions.passive !== previousProps.touchEventOptions.passive\n  ) {\n    state.cleanUpTouch();\n\n    return {\n      ...state,\n      cleanUpTouch: attachTouch(state.el, props),\n    };\n  }\n\n  return state;\n}\n\nexport function useSwipeable(options: SwipeableProps): SwipeableHandlers {\n  const { trackMouse } = options;\n  const transientState = React.useRef({ ...initialState });\n  const transientProps = React.useRef<SwipeablePropsWithDefaultOptions>({\n    ...defaultProps,\n  });\n\n  // track previous rendered props\n  const previousProps = React.useRef<SwipeablePropsWithDefaultOptions>({\n    ...transientProps.current,\n  });\n  previousProps.current = { ...transientProps.current };\n\n  // update current render props & defaults\n  transientProps.current = {\n    ...defaultProps,\n    ...options,\n  };\n  // Force defaults for config properties\n  let defaultKey: keyof ConfigurationOptions;\n  for (defaultKey in defaultProps) {\n    if (transientProps.current[defaultKey] === void 0) {\n      (transientProps.current[defaultKey] as any) = defaultProps[defaultKey];\n    }\n  }\n\n  const [handlers, attachTouch] = React.useMemo(\n    () =>\n      getHandlers(\n        (stateSetter) =>\n          (transientState.current = stateSetter(\n            transientState.current,\n            transientProps.current\n          )),\n        { trackMouse }\n      ),\n    [trackMouse]\n  );\n\n  transientState.current = updateTransientState(\n    transientState.current,\n    transientProps.current,\n    previousProps.current,\n    attachTouch\n  );\n\n  return handlers;\n}\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};","import { useCallback, useState } from 'react';\nimport { useEventListener, useIsomorphicLayoutEffect } from '..';\nfunction useElementSize() {\n    const [ref, setRef] = useState(null);\n    const [size, setSize] = useState({\n        width: 0,\n        height: 0,\n    });\n    const handleSize = useCallback(() => {\n        setSize({\n            width: (ref === null || ref === void 0 ? void 0 : ref.offsetWidth) || 0,\n            height: (ref === null || ref === void 0 ? void 0 : ref.offsetHeight) || 0,\n        });\n    }, [ref === null || ref === void 0 ? void 0 : ref.offsetHeight, ref === null || ref === void 0 ? void 0 : ref.offsetWidth]);\n    useEventListener('resize', handleSize);\n    useIsomorphicLayoutEffect(() => {\n        handleSize();\n    }, [ref === null || ref === void 0 ? void 0 : ref.offsetHeight, ref === null || ref === void 0 ? void 0 : ref.offsetWidth]);\n    return [setRef, size];\n}\nexport default useElementSize;\n","import { useEffect, useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from '..';\nfunction useEventListener(eventName, handler, element, options) {\n    const savedHandler = useRef(handler);\n    useIsomorphicLayoutEffect(() => {\n        savedHandler.current = handler;\n    }, [handler]);\n    useEffect(() => {\n        var _a;\n        const targetElement = (_a = element === null || element === void 0 ? void 0 : element.current) !== null && _a !== void 0 ? _a : window;\n        if (!(targetElement && targetElement.addEventListener))\n            return;\n        const listener = event => savedHandler.current(event);\n        targetElement.addEventListener(eventName, listener, options);\n        return () => {\n            targetElement.removeEventListener(eventName, listener, options);\n        };\n    }, [eventName, element, options]);\n}\nexport default useEventListener;\n","import { useEffect, useLayoutEffect } from 'react';\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n"],"names":["BrowserRouter","history","createHistory","props","render","this","children","React","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","C","forwardRef","LinkAnchor","forwardedRef","innerRef","navigate","onClick","rest","target","event","ex","preventDefault","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","ref","Link","component","replace","RouterContext","context","invariant","location","href","createHref","push","ariaCurrent","activeClassName","activeStyle","classNameProp","className","exact","isActiveProp","isActive","locationProp","sensitive","strict","styleProp","style","toLocation","path","pathname","escapedPath","match","matchPath","classnames","filter","i","join","joinClassnames","LEFT","RIGHT","UP","DOWN","defaultProps","delta","preventScrollOnSwipe","rotationAngle","trackMouse","trackTouch","swipeDuration","Infinity","touchEventOptions","passive","initialState","first","initial","start","swiping","xy","mouseMove","mouseUp","touchEnd","touchMove","touchStart","rotateXYByAngle","pos","angle","angleInRadians","Math","PI","cos","sin","getHandlers","set","handlerProps","onStart","isTouch","touches","length","state","document","addEventListener","onMove","onUp","clientX","clientY","onTouchStartOrOnMouseDown","slice","timeStamp","x","y","deltaX","deltaY","absX","abs","absY","time","velocity","sqrt","vxvy","dir","getDirection","toLowerCase","eventData","onSwipeStart","onSwiping","cancelablePageSwipe","onSwiped","cancelable","onEnd","onSwipedDir","onTap","onTouchEndOrOnMouseUp","e","removeEventListener","attachTouch","el","cleanup","baseOptions","tls","forEach","h","o","output","addState","cleanUpTouch","onMouseDown","useSwipeable","options","transientState","transientProps","previousProps","current","defaultKey","handlers","stateSetter","undefined","updateTransientState","NOT_FOUND","defaultEqualityCheck","a","b","defaultMemoize","func","equalityCheckOrOptions","equals","entry","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","comparator","prev","next","createCacheKeyComparator","cache","get","key","value","put","getEntries","clear","entries","cacheIndex","findIndex","splice","unshift","pop","createLruCache","memoized","arguments","apply","matchingEntry","find","clearCache","createSelectorCreator","memoize","_len","memoizeOptionsFromArgs","Array","_key","_len2","funcs","_key2","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","Error","_directlyPassedOption2","finalMemoizeOptions","isArray","dependencies","every","dep","dependencyTypes","map","name","getDependencies","memoizedResultFunc","concat","selector","params","Object","assign","lastResult","recomputations","resetRecomputations","createSelector","setRef","useState","size","setSize","width","height","handleSize","useCallback","offsetWidth","offsetHeight","eventName","handler","element","savedHandler","useRef","useEffect","_a","targetElement","window","listener","useLayoutEffect"],"sourceRoot":""}