{"version":3,"file":"static/js/main.6d4eed24.js","mappings":"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","sources":["../node_modules/axios/node_modules/form-data/lib/browser.js","../node_modules/matter-js/build/matter.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tween-functions/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/deprecations.ts","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","reportWebVitals.js","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/engine.io-client/build/esm/globals.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/transports/webtransport.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../node_modules/socket.io-client/build/esm/on.js","../node_modules/socket.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/contrib/backo2.js","../node_modules/socket.io-client/build/esm/manager.js","../node_modules/socket.io-client/build/esm/index.js","../node_modules/socket.io-client/build/esm/url.js","socket.js","desktop/game/Review.js","AdBanner.js","Main.js","login/Login.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","404.js","TermsAndPrivacy.js","login/GoogleCallback.js","login/KakaoCallback.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/env/classes/FormData.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","shop.js","mobile/FastBody.js","mobile/Shop.js","mobile/Rank.js","mobile/Learn.js","mobile/Mypage.js","mobile/components/Header.js","../node_modules/react-icons/lib/iconsManifest.mjs","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/fa/index.mjs","mobile/components/BottomNavigation.js","../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../node_modules/motion-utils/dist/es/memo.mjs","../node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs","../node_modules/motion-dom/dist/es/animation/controls/BaseGroup.mjs","../node_modules/motion-dom/dist/es/animation/controls/Group.mjs","../node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs","../node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs","../node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs","../node_modules/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs","../node_modules/motion-dom/dist/es/utils/is-bezier-definition.mjs","../node_modules/motion-dom/dist/es/utils/supports/flags.mjs","../node_modules/motion-dom/dist/es/utils/supports/memo.mjs","../node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs","../node_modules/motion-utils/dist/es/progress.mjs","../node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs","../node_modules/motion-dom/dist/es/animation/waapi/utils/easing.mjs","../node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs","../node_modules/motion-dom/dist/es/gestures/utils/setup.mjs","../node_modules/motion-dom/dist/es/utils/resolve-elements.mjs","../node_modules/motion-dom/dist/es/gestures/hover.mjs","../node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs","../node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs","../node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs","../node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs","../node_modules/motion-dom/dist/es/gestures/press/index.mjs","../node_modules/framer-motion/dist/es/render/html/utils/keys-transform.mjs","../node_modules/framer-motion/dist/es/render/html/utils/keys-position.mjs","../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../node_modules/motion-utils/dist/es/noop.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","../node_modules/motion-utils/dist/es/time-conversion.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../node_modules/framer-motion/dist/es/easing/back.mjs","../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../node_modules/framer-motion/dist/es/easing/circ.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../node_modules/framer-motion/dist/es/utils/clamp.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs","../node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs","../node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs","../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs","../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs","../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../node_modules/motion-utils/dist/es/errors.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../node_modules/framer-motion/dist/es/utils/mix/number.mjs","../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../node_modules/framer-motion/dist/es/utils/pipe.mjs","../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","../node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../node_modules/framer-motion/dist/es/utils/mix/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/defaults.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../node_modules/framer-motion/dist/es/easing/ease.mjs","../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs","../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../node_modules/framer-motion/dist/es/utils/distance.mjs","../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs","../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/utils/delay.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../node_modules/framer-motion/dist/es/animation/animate/single-value.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../node_modules/framer-motion/dist/es/gestures/hover.mjs","../node_modules/framer-motion/dist/es/gestures/press.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/gestures/focus.mjs","../node_modules/framer-motion/dist/es/motion/features/layout.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/render/components/create-factory.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/store.mjs","../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs","../node_modules/framer-motion/dist/es/render/components/motion/create.mjs","mobile/Mobile.js","../node_modules/react-confetti/src/Particle.ts","../node_modules/react-confetti/src/utils.ts","../node_modules/react-confetti/src/ParticleGenerator.ts","../node_modules/react-confetti/src/Confetti.ts","../node_modules/react-confetti/src/ReactConfetti.tsx","desktop/game/Goban.js","desktop/game/OnlineBody.js","desktop/game/FriendGame.js","desktop/game/GuestGame.js","desktop/game/Header.js","desktop/engines/omokEngine.js","desktop/game/Body.js","desktop/game/FastBody.js","desktop/game/Main.js","data/botData.js","desktop/game/Bottom.js","desktop/game/AIbody.js","desktop/game/BotMain.js","desktop/game/HomeBody.js","desktop/game/HomeMain.js","index.js"],"sourcesContent":["/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","/*!\n * matter-js 0.20.0 by @liabru\n * http://brm.io/matter-js/\n * License MIT\n * \n * The MIT License (MIT)\n * \n * Copyright (c) Liam Brummitt and contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Matter\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Matter\"] = factory();\n\telse\n\t\troot[\"Matter\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 20);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n/**\n* The `Matter.Common` module contains utility functions that are common to all modules.\n*\n* @class Common\n*/\n\nvar Common = {};\n\nmodule.exports = Common;\n\n(function() {\n\n Common._baseDelta = 1000 / 60;\n Common._nextId = 0;\n Common._seed = 0;\n Common._nowStartTime = +(new Date());\n Common._warnedOnce = {};\n Common._decomp = null;\n \n /**\n * Extends the object in the first argument using the object in the second argument.\n * @method extend\n * @param {} obj\n * @param {boolean} deep\n * @return {} obj extended\n */\n Common.extend = function(obj, deep) {\n var argsStart,\n args,\n deepClone;\n\n if (typeof deep === 'boolean') {\n argsStart = 2;\n deepClone = deep;\n } else {\n argsStart = 1;\n deepClone = true;\n }\n\n for (var i = argsStart; i < arguments.length; i++) {\n var source = arguments[i];\n\n if (source) {\n for (var prop in source) {\n if (deepClone && source[prop] && source[prop].constructor === Object) {\n if (!obj[prop] || obj[prop].constructor === Object) {\n obj[prop] = obj[prop] || {};\n Common.extend(obj[prop], deepClone, source[prop]);\n } else {\n obj[prop] = source[prop];\n }\n } else {\n obj[prop] = source[prop];\n }\n }\n }\n }\n \n return obj;\n };\n\n /**\n * Creates a new clone of the object, if deep is true references will also be cloned.\n * @method clone\n * @param {} obj\n * @param {bool} deep\n * @return {} obj cloned\n */\n Common.clone = function(obj, deep) {\n return Common.extend({}, deep, obj);\n };\n\n /**\n * Returns the list of keys for the given object.\n * @method keys\n * @param {} obj\n * @return {string[]} keys\n */\n Common.keys = function(obj) {\n if (Object.keys)\n return Object.keys(obj);\n\n // avoid hasOwnProperty for performance\n var keys = [];\n for (var key in obj)\n keys.push(key);\n return keys;\n };\n\n /**\n * Returns the list of values for the given object.\n * @method values\n * @param {} obj\n * @return {array} Array of the objects property values\n */\n Common.values = function(obj) {\n var values = [];\n \n if (Object.keys) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n \n // avoid hasOwnProperty for performance\n for (var key in obj)\n values.push(obj[key]);\n return values;\n };\n\n /**\n * Gets a value from `base` relative to the `path` string.\n * @method get\n * @param {} obj The base object\n * @param {string} path The path relative to `base`, e.g. 'Foo.Bar.baz'\n * @param {number} [begin] Path slice begin\n * @param {number} [end] Path slice end\n * @return {} The object at the given path\n */\n Common.get = function(obj, path, begin, end) {\n path = path.split('.').slice(begin, end);\n\n for (var i = 0; i < path.length; i += 1) {\n obj = obj[path[i]];\n }\n\n return obj;\n };\n\n /**\n * Sets a value on `base` relative to the given `path` string.\n * @method set\n * @param {} obj The base object\n * @param {string} path The path relative to `base`, e.g. 'Foo.Bar.baz'\n * @param {} val The value to set\n * @param {number} [begin] Path slice begin\n * @param {number} [end] Path slice end\n * @return {} Pass through `val` for chaining\n */\n Common.set = function(obj, path, val, begin, end) {\n var parts = path.split('.').slice(begin, end);\n Common.get(obj, path, 0, -1)[parts[parts.length - 1]] = val;\n return val;\n };\n\n /**\n * Shuffles the given array in-place.\n * The function uses a seeded random generator.\n * @method shuffle\n * @param {array} array\n * @return {array} array shuffled randomly\n */\n Common.shuffle = function(array) {\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Common.random() * (i + 1));\n var temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n return array;\n };\n\n /**\n * Randomly chooses a value from a list with equal probability.\n * The function uses a seeded random generator.\n * @method choose\n * @param {array} choices\n * @return {object} A random choice object from the array\n */\n Common.choose = function(choices) {\n return choices[Math.floor(Common.random() * choices.length)];\n };\n\n /**\n * Returns true if the object is a HTMLElement, otherwise false.\n * @method isElement\n * @param {object} obj\n * @return {boolean} True if the object is a HTMLElement, otherwise false\n */\n Common.isElement = function(obj) {\n if (typeof HTMLElement !== 'undefined') {\n return obj instanceof HTMLElement;\n }\n\n return !!(obj && obj.nodeType && obj.nodeName);\n };\n\n /**\n * Returns true if the object is an array.\n * @method isArray\n * @param {object} obj\n * @return {boolean} True if the object is an array, otherwise false\n */\n Common.isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n\n /**\n * Returns true if the object is a function.\n * @method isFunction\n * @param {object} obj\n * @return {boolean} True if the object is a function, otherwise false\n */\n Common.isFunction = function(obj) {\n return typeof obj === \"function\";\n };\n\n /**\n * Returns true if the object is a plain object.\n * @method isPlainObject\n * @param {object} obj\n * @return {boolean} True if the object is a plain object, otherwise false\n */\n Common.isPlainObject = function(obj) {\n return typeof obj === 'object' && obj.constructor === Object;\n };\n\n /**\n * Returns true if the object is a string.\n * @method isString\n * @param {object} obj\n * @return {boolean} True if the object is a string, otherwise false\n */\n Common.isString = function(obj) {\n return toString.call(obj) === '[object String]';\n };\n \n /**\n * Returns the given value clamped between a minimum and maximum value.\n * @method clamp\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number} The value clamped between min and max inclusive\n */\n Common.clamp = function(value, min, max) {\n if (value < min)\n return min;\n if (value > max)\n return max;\n return value;\n };\n \n /**\n * Returns the sign of the given value.\n * @method sign\n * @param {number} value\n * @return {number} -1 if negative, +1 if 0 or positive\n */\n Common.sign = function(value) {\n return value < 0 ? -1 : 1;\n };\n \n /**\n * Returns the current timestamp since the time origin (e.g. from page load).\n * The result is in milliseconds and will use high-resolution timing if available.\n * @method now\n * @return {number} the current timestamp in milliseconds\n */\n Common.now = function() {\n if (typeof window !== 'undefined' && window.performance) {\n if (window.performance.now) {\n return window.performance.now();\n } else if (window.performance.webkitNow) {\n return window.performance.webkitNow();\n }\n }\n\n if (Date.now) {\n return Date.now();\n }\n\n return (new Date()) - Common._nowStartTime;\n };\n \n /**\n * Returns a random value between a minimum and a maximum value inclusive.\n * The function uses a seeded random generator.\n * @method random\n * @param {number} min\n * @param {number} max\n * @return {number} A random number between min and max inclusive\n */\n Common.random = function(min, max) {\n min = (typeof min !== \"undefined\") ? min : 0;\n max = (typeof max !== \"undefined\") ? max : 1;\n return min + _seededRandom() * (max - min);\n };\n\n var _seededRandom = function() {\n // https://en.wikipedia.org/wiki/Linear_congruential_generator\n Common._seed = (Common._seed * 9301 + 49297) % 233280;\n return Common._seed / 233280;\n };\n\n /**\n * Converts a CSS hex colour string into an integer.\n * @method colorToNumber\n * @param {string} colorString\n * @return {number} An integer representing the CSS hex string\n */\n Common.colorToNumber = function(colorString) {\n colorString = colorString.replace('#','');\n\n if (colorString.length == 3) {\n colorString = colorString.charAt(0) + colorString.charAt(0)\n + colorString.charAt(1) + colorString.charAt(1)\n + colorString.charAt(2) + colorString.charAt(2);\n }\n\n return parseInt(colorString, 16);\n };\n\n /**\n * The console logging level to use, where each level includes all levels above and excludes the levels below.\n * The default level is 'debug' which shows all console messages. \n *\n * Possible level values are:\n * - 0 = None\n * - 1 = Debug\n * - 2 = Info\n * - 3 = Warn\n * - 4 = Error\n * @static\n * @property logLevel\n * @type {Number}\n * @default 1\n */\n Common.logLevel = 1;\n\n /**\n * Shows a `console.log` message only if the current `Common.logLevel` allows it.\n * The message will be prefixed with 'matter-js' to make it easily identifiable.\n * @method log\n * @param ...objs {} The objects to log.\n */\n Common.log = function() {\n if (console && Common.logLevel > 0 && Common.logLevel <= 3) {\n console.log.apply(console, ['matter-js:'].concat(Array.prototype.slice.call(arguments)));\n }\n };\n\n /**\n * Shows a `console.info` message only if the current `Common.logLevel` allows it.\n * The message will be prefixed with 'matter-js' to make it easily identifiable.\n * @method info\n * @param ...objs {} The objects to log.\n */\n Common.info = function() {\n if (console && Common.logLevel > 0 && Common.logLevel <= 2) {\n console.info.apply(console, ['matter-js:'].concat(Array.prototype.slice.call(arguments)));\n }\n };\n\n /**\n * Shows a `console.warn` message only if the current `Common.logLevel` allows it.\n * The message will be prefixed with 'matter-js' to make it easily identifiable.\n * @method warn\n * @param ...objs {} The objects to log.\n */\n Common.warn = function() {\n if (console && Common.logLevel > 0 && Common.logLevel <= 3) {\n console.warn.apply(console, ['matter-js:'].concat(Array.prototype.slice.call(arguments)));\n }\n };\n\n /**\n * Uses `Common.warn` to log the given message one time only.\n * @method warnOnce\n * @param ...objs {} The objects to log.\n */\n Common.warnOnce = function() {\n var message = Array.prototype.slice.call(arguments).join(' ');\n\n if (!Common._warnedOnce[message]) {\n Common.warn(message);\n Common._warnedOnce[message] = true;\n }\n };\n\n /**\n * Shows a deprecated console warning when the function on the given object is called.\n * The target function will be replaced with a new function that first shows the warning\n * and then calls the original function.\n * @method deprecated\n * @param {object} obj The object or module\n * @param {string} name The property name of the function on obj\n * @param {string} warning The one-time message to show if the function is called\n */\n Common.deprecated = function(obj, prop, warning) {\n obj[prop] = Common.chain(function() {\n Common.warnOnce('🔅 deprecated 🔅', warning);\n }, obj[prop]);\n };\n\n /**\n * Returns the next unique sequential ID.\n * @method nextId\n * @return {Number} Unique sequential ID\n */\n Common.nextId = function() {\n return Common._nextId++;\n };\n\n /**\n * A cross browser compatible indexOf implementation.\n * @method indexOf\n * @param {array} haystack\n * @param {object} needle\n * @return {number} The position of needle in haystack, otherwise -1.\n */\n Common.indexOf = function(haystack, needle) {\n if (haystack.indexOf)\n return haystack.indexOf(needle);\n\n for (var i = 0; i < haystack.length; i++) {\n if (haystack[i] === needle)\n return i;\n }\n\n return -1;\n };\n\n /**\n * A cross browser compatible array map implementation.\n * @method map\n * @param {array} list\n * @param {function} func\n * @return {array} Values from list transformed by func.\n */\n Common.map = function(list, func) {\n if (list.map) {\n return list.map(func);\n }\n\n var mapped = [];\n\n for (var i = 0; i < list.length; i += 1) {\n mapped.push(func(list[i]));\n }\n\n return mapped;\n };\n\n /**\n * Takes a directed graph and returns the partially ordered set of vertices in topological order.\n * Circular dependencies are allowed.\n * @method topologicalSort\n * @param {object} graph\n * @return {array} Partially ordered set of vertices in topological order.\n */\n Common.topologicalSort = function(graph) {\n // https://github.com/mgechev/javascript-algorithms\n // Copyright (c) Minko Gechev (MIT license)\n // Modifications: tidy formatting and naming\n var result = [],\n visited = [],\n temp = [];\n\n for (var node in graph) {\n if (!visited[node] && !temp[node]) {\n Common._topologicalSort(node, visited, temp, graph, result);\n }\n }\n\n return result;\n };\n\n Common._topologicalSort = function(node, visited, temp, graph, result) {\n var neighbors = graph[node] || [];\n temp[node] = true;\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = neighbors[i];\n\n if (temp[neighbor]) {\n // skip circular dependencies\n continue;\n }\n\n if (!visited[neighbor]) {\n Common._topologicalSort(neighbor, visited, temp, graph, result);\n }\n }\n\n temp[node] = false;\n visited[node] = true;\n\n result.push(node);\n };\n\n /**\n * Takes _n_ functions as arguments and returns a new function that calls them in order.\n * The arguments applied when calling the new function will also be applied to every function passed.\n * The value of `this` refers to the last value returned in the chain that was not `undefined`.\n * Therefore if a passed function does not return a value, the previously returned value is maintained.\n * After all passed functions have been called the new function returns the last returned value (if any).\n * If any of the passed functions are a chain, then the chain will be flattened.\n * @method chain\n * @param ...funcs {function} The functions to chain.\n * @return {function} A new function that calls the passed functions in order.\n */\n Common.chain = function() {\n var funcs = [];\n\n for (var i = 0; i < arguments.length; i += 1) {\n var func = arguments[i];\n\n if (func._chained) {\n // flatten already chained functions\n funcs.push.apply(funcs, func._chained);\n } else {\n funcs.push(func);\n }\n }\n\n var chain = function() {\n // https://github.com/GoogleChrome/devtools-docs/issues/53#issuecomment-51941358\n var lastResult,\n args = new Array(arguments.length);\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n args[i] = arguments[i];\n }\n\n for (i = 0; i < funcs.length; i += 1) {\n var result = funcs[i].apply(lastResult, args);\n\n if (typeof result !== 'undefined') {\n lastResult = result;\n }\n }\n\n return lastResult;\n };\n\n chain._chained = funcs;\n\n return chain;\n };\n\n /**\n * Chains a function to excute before the original function on the given `path` relative to `base`.\n * See also docs for `Common.chain`.\n * @method chainPathBefore\n * @param {} base The base object\n * @param {string} path The path relative to `base`\n * @param {function} func The function to chain before the original\n * @return {function} The chained function that replaced the original\n */\n Common.chainPathBefore = function(base, path, func) {\n return Common.set(base, path, Common.chain(\n func,\n Common.get(base, path)\n ));\n };\n\n /**\n * Chains a function to excute after the original function on the given `path` relative to `base`.\n * See also docs for `Common.chain`.\n * @method chainPathAfter\n * @param {} base The base object\n * @param {string} path The path relative to `base`\n * @param {function} func The function to chain after the original\n * @return {function} The chained function that replaced the original\n */\n Common.chainPathAfter = function(base, path, func) {\n return Common.set(base, path, Common.chain(\n Common.get(base, path),\n func\n ));\n };\n\n /**\n * Provide the [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module to enable\n * concave vertex decomposition support when using `Bodies.fromVertices` e.g. `Common.setDecomp(require('poly-decomp'))`.\n * @method setDecomp\n * @param {} decomp The [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module.\n */\n Common.setDecomp = function(decomp) {\n Common._decomp = decomp;\n };\n\n /**\n * Returns the [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module provided through `Common.setDecomp`,\n * otherwise returns the global `decomp` if set.\n * @method getDecomp\n * @return {} The [poly-decomp](https://github.com/schteppe/poly-decomp.js) library module if provided.\n */\n Common.getDecomp = function() {\n // get user provided decomp if set\n var decomp = Common._decomp;\n\n try {\n // otherwise from window global\n if (!decomp && typeof window !== 'undefined') {\n decomp = window.decomp;\n }\n \n // otherwise from node global\n if (!decomp && typeof global !== 'undefined') {\n decomp = global.decomp;\n }\n } catch (e) {\n // decomp not available\n decomp = null;\n }\n\n return decomp;\n };\n})();\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n/**\n* The `Matter.Bounds` module contains methods for creating and manipulating axis-aligned bounding boxes (AABB).\n*\n* @class Bounds\n*/\n\nvar Bounds = {};\n\nmodule.exports = Bounds;\n\n(function() {\n\n /**\n * Creates a new axis-aligned bounding box (AABB) for the given vertices.\n * @method create\n * @param {vertices} vertices\n * @return {bounds} A new bounds object\n */\n Bounds.create = function(vertices) {\n var bounds = { \n min: { x: 0, y: 0 }, \n max: { x: 0, y: 0 }\n };\n\n if (vertices)\n Bounds.update(bounds, vertices);\n \n return bounds;\n };\n\n /**\n * Updates bounds using the given vertices and extends the bounds given a velocity.\n * @method update\n * @param {bounds} bounds\n * @param {vertices} vertices\n * @param {vector} velocity\n */\n Bounds.update = function(bounds, vertices, velocity) {\n bounds.min.x = Infinity;\n bounds.max.x = -Infinity;\n bounds.min.y = Infinity;\n bounds.max.y = -Infinity;\n\n for (var i = 0; i < vertices.length; i++) {\n var vertex = vertices[i];\n if (vertex.x > bounds.max.x) bounds.max.x = vertex.x;\n if (vertex.x < bounds.min.x) bounds.min.x = vertex.x;\n if (vertex.y > bounds.max.y) bounds.max.y = vertex.y;\n if (vertex.y < bounds.min.y) bounds.min.y = vertex.y;\n }\n \n if (velocity) {\n if (velocity.x > 0) {\n bounds.max.x += velocity.x;\n } else {\n bounds.min.x += velocity.x;\n }\n \n if (velocity.y > 0) {\n bounds.max.y += velocity.y;\n } else {\n bounds.min.y += velocity.y;\n }\n }\n };\n\n /**\n * Returns true if the bounds contains the given point.\n * @method contains\n * @param {bounds} bounds\n * @param {vector} point\n * @return {boolean} True if the bounds contain the point, otherwise false\n */\n Bounds.contains = function(bounds, point) {\n return point.x >= bounds.min.x && point.x <= bounds.max.x \n && point.y >= bounds.min.y && point.y <= bounds.max.y;\n };\n\n /**\n * Returns true if the two bounds intersect.\n * @method overlaps\n * @param {bounds} boundsA\n * @param {bounds} boundsB\n * @return {boolean} True if the bounds overlap, otherwise false\n */\n Bounds.overlaps = function(boundsA, boundsB) {\n return (boundsA.min.x <= boundsB.max.x && boundsA.max.x >= boundsB.min.x\n && boundsA.max.y >= boundsB.min.y && boundsA.min.y <= boundsB.max.y);\n };\n\n /**\n * Translates the bounds by the given vector.\n * @method translate\n * @param {bounds} bounds\n * @param {vector} vector\n */\n Bounds.translate = function(bounds, vector) {\n bounds.min.x += vector.x;\n bounds.max.x += vector.x;\n bounds.min.y += vector.y;\n bounds.max.y += vector.y;\n };\n\n /**\n * Shifts the bounds to the given position.\n * @method shift\n * @param {bounds} bounds\n * @param {vector} position\n */\n Bounds.shift = function(bounds, position) {\n var deltaX = bounds.max.x - bounds.min.x,\n deltaY = bounds.max.y - bounds.min.y;\n \n bounds.min.x = position.x;\n bounds.max.x = position.x + deltaX;\n bounds.min.y = position.y;\n bounds.max.y = position.y + deltaY;\n };\n \n})();\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n/**\n* The `Matter.Vector` module contains methods for creating and manipulating vectors.\n* Vectors are the basis of all the geometry related operations in the engine.\n* A `Matter.Vector` object is of the form `{ x: 0, y: 0 }`.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Vector\n*/\n\n// TODO: consider params for reusing vector objects\n\nvar Vector = {};\n\nmodule.exports = Vector;\n\n(function() {\n\n /**\n * Creates a new vector.\n * @method create\n * @param {number} x\n * @param {number} y\n * @return {vector} A new vector\n */\n Vector.create = function(x, y) {\n return { x: x || 0, y: y || 0 };\n };\n\n /**\n * Returns a new vector with `x` and `y` copied from the given `vector`.\n * @method clone\n * @param {vector} vector\n * @return {vector} A new cloned vector\n */\n Vector.clone = function(vector) {\n return { x: vector.x, y: vector.y };\n };\n\n /**\n * Returns the magnitude (length) of a vector.\n * @method magnitude\n * @param {vector} vector\n * @return {number} The magnitude of the vector\n */\n Vector.magnitude = function(vector) {\n return Math.sqrt((vector.x * vector.x) + (vector.y * vector.y));\n };\n\n /**\n * Returns the magnitude (length) of a vector (therefore saving a `sqrt` operation).\n * @method magnitudeSquared\n * @param {vector} vector\n * @return {number} The squared magnitude of the vector\n */\n Vector.magnitudeSquared = function(vector) {\n return (vector.x * vector.x) + (vector.y * vector.y);\n };\n\n /**\n * Rotates the vector about (0, 0) by specified angle.\n * @method rotate\n * @param {vector} vector\n * @param {number} angle\n * @param {vector} [output]\n * @return {vector} The vector rotated about (0, 0)\n */\n Vector.rotate = function(vector, angle, output) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n if (!output) output = {};\n var x = vector.x * cos - vector.y * sin;\n output.y = vector.x * sin + vector.y * cos;\n output.x = x;\n return output;\n };\n\n /**\n * Rotates the vector about a specified point by specified angle.\n * @method rotateAbout\n * @param {vector} vector\n * @param {number} angle\n * @param {vector} point\n * @param {vector} [output]\n * @return {vector} A new vector rotated about the point\n */\n Vector.rotateAbout = function(vector, angle, point, output) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n if (!output) output = {};\n var x = point.x + ((vector.x - point.x) * cos - (vector.y - point.y) * sin);\n output.y = point.y + ((vector.x - point.x) * sin + (vector.y - point.y) * cos);\n output.x = x;\n return output;\n };\n\n /**\n * Normalises a vector (such that its magnitude is `1`).\n * @method normalise\n * @param {vector} vector\n * @return {vector} A new vector normalised\n */\n Vector.normalise = function(vector) {\n var magnitude = Vector.magnitude(vector);\n if (magnitude === 0)\n return { x: 0, y: 0 };\n return { x: vector.x / magnitude, y: vector.y / magnitude };\n };\n\n /**\n * Returns the dot-product of two vectors.\n * @method dot\n * @param {vector} vectorA\n * @param {vector} vectorB\n * @return {number} The dot product of the two vectors\n */\n Vector.dot = function(vectorA, vectorB) {\n return (vectorA.x * vectorB.x) + (vectorA.y * vectorB.y);\n };\n\n /**\n * Returns the cross-product of two vectors.\n * @method cross\n * @param {vector} vectorA\n * @param {vector} vectorB\n * @return {number} The cross product of the two vectors\n */\n Vector.cross = function(vectorA, vectorB) {\n return (vectorA.x * vectorB.y) - (vectorA.y * vectorB.x);\n };\n\n /**\n * Returns the cross-product of three vectors.\n * @method cross3\n * @param {vector} vectorA\n * @param {vector} vectorB\n * @param {vector} vectorC\n * @return {number} The cross product of the three vectors\n */\n Vector.cross3 = function(vectorA, vectorB, vectorC) {\n return (vectorB.x - vectorA.x) * (vectorC.y - vectorA.y) - (vectorB.y - vectorA.y) * (vectorC.x - vectorA.x);\n };\n\n /**\n * Adds the two vectors.\n * @method add\n * @param {vector} vectorA\n * @param {vector} vectorB\n * @param {vector} [output]\n * @return {vector} A new vector of vectorA and vectorB added\n */\n Vector.add = function(vectorA, vectorB, output) {\n if (!output) output = {};\n output.x = vectorA.x + vectorB.x;\n output.y = vectorA.y + vectorB.y;\n return output;\n };\n\n /**\n * Subtracts the two vectors.\n * @method sub\n * @param {vector} vectorA\n * @param {vector} vectorB\n * @param {vector} [output]\n * @return {vector} A new vector of vectorA and vectorB subtracted\n */\n Vector.sub = function(vectorA, vectorB, output) {\n if (!output) output = {};\n output.x = vectorA.x - vectorB.x;\n output.y = vectorA.y - vectorB.y;\n return output;\n };\n\n /**\n * Multiplies a vector and a scalar.\n * @method mult\n * @param {vector} vector\n * @param {number} scalar\n * @return {vector} A new vector multiplied by scalar\n */\n Vector.mult = function(vector, scalar) {\n return { x: vector.x * scalar, y: vector.y * scalar };\n };\n\n /**\n * Divides a vector and a scalar.\n * @method div\n * @param {vector} vector\n * @param {number} scalar\n * @return {vector} A new vector divided by scalar\n */\n Vector.div = function(vector, scalar) {\n return { x: vector.x / scalar, y: vector.y / scalar };\n };\n\n /**\n * Returns the perpendicular vector. Set `negate` to true for the perpendicular in the opposite direction.\n * @method perp\n * @param {vector} vector\n * @param {bool} [negate=false]\n * @return {vector} The perpendicular vector\n */\n Vector.perp = function(vector, negate) {\n negate = negate === true ? -1 : 1;\n return { x: negate * -vector.y, y: negate * vector.x };\n };\n\n /**\n * Negates both components of a vector such that it points in the opposite direction.\n * @method neg\n * @param {vector} vector\n * @return {vector} The negated vector\n */\n Vector.neg = function(vector) {\n return { x: -vector.x, y: -vector.y };\n };\n\n /**\n * Returns the angle between the vector `vectorB - vectorA` and the x-axis in radians.\n * @method angle\n * @param {vector} vectorA\n * @param {vector} vectorB\n * @return {number} The angle in radians\n */\n Vector.angle = function(vectorA, vectorB) {\n return Math.atan2(vectorB.y - vectorA.y, vectorB.x - vectorA.x);\n };\n\n /**\n * Temporary vector pool (not thread-safe).\n * @property _temp\n * @type {vector[]}\n * @private\n */\n Vector._temp = [\n Vector.create(), Vector.create(), \n Vector.create(), Vector.create(), \n Vector.create(), Vector.create()\n ];\n\n})();\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Vertices` module contains methods for creating and manipulating sets of vertices.\n* A set of vertices is an array of `Matter.Vector` with additional indexing properties inserted by `Vertices.create`.\n* A `Matter.Body` maintains a set of vertices to represent the shape of the object (its convex hull).\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Vertices\n*/\n\nvar Vertices = {};\n\nmodule.exports = Vertices;\n\nvar Vector = __webpack_require__(2);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * Creates a new set of `Matter.Body` compatible vertices.\n * The `points` argument accepts an array of `Matter.Vector` points orientated around the origin `(0, 0)`, for example:\n *\n * [{ x: 0, y: 0 }, { x: 25, y: 50 }, { x: 50, y: 0 }]\n *\n * The `Vertices.create` method returns a new array of vertices, which are similar to Matter.Vector objects,\n * but with some additional references required for efficient collision detection routines.\n *\n * Vertices must be specified in clockwise order.\n *\n * Note that the `body` argument is not optional, a `Matter.Body` reference must be provided.\n *\n * @method create\n * @param {vector[]} points\n * @param {body} body\n */\n Vertices.create = function(points, body) {\n var vertices = [];\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i],\n vertex = {\n x: point.x,\n y: point.y,\n index: i,\n body: body,\n isInternal: false\n };\n\n vertices.push(vertex);\n }\n\n return vertices;\n };\n\n /**\n * Parses a string containing ordered x y pairs separated by spaces (and optionally commas), \n * into a `Matter.Vertices` object for the given `Matter.Body`.\n * For parsing SVG paths, see `Svg.pathToVertices`.\n * @method fromPath\n * @param {string} path\n * @param {body} body\n * @return {vertices} vertices\n */\n Vertices.fromPath = function(path, body) {\n var pathPattern = /L?\\s*([-\\d.e]+)[\\s,]*([-\\d.e]+)*/ig,\n points = [];\n\n path.replace(pathPattern, function(match, x, y) {\n points.push({ x: parseFloat(x), y: parseFloat(y) });\n });\n\n return Vertices.create(points, body);\n };\n\n /**\n * Returns the centre (centroid) of the set of vertices.\n * @method centre\n * @param {vertices} vertices\n * @return {vector} The centre point\n */\n Vertices.centre = function(vertices) {\n var area = Vertices.area(vertices, true),\n centre = { x: 0, y: 0 },\n cross,\n temp,\n j;\n\n for (var i = 0; i < vertices.length; i++) {\n j = (i + 1) % vertices.length;\n cross = Vector.cross(vertices[i], vertices[j]);\n temp = Vector.mult(Vector.add(vertices[i], vertices[j]), cross);\n centre = Vector.add(centre, temp);\n }\n\n return Vector.div(centre, 6 * area);\n };\n\n /**\n * Returns the average (mean) of the set of vertices.\n * @method mean\n * @param {vertices} vertices\n * @return {vector} The average point\n */\n Vertices.mean = function(vertices) {\n var average = { x: 0, y: 0 };\n\n for (var i = 0; i < vertices.length; i++) {\n average.x += vertices[i].x;\n average.y += vertices[i].y;\n }\n\n return Vector.div(average, vertices.length);\n };\n\n /**\n * Returns the area of the set of vertices.\n * @method area\n * @param {vertices} vertices\n * @param {bool} signed\n * @return {number} The area\n */\n Vertices.area = function(vertices, signed) {\n var area = 0,\n j = vertices.length - 1;\n\n for (var i = 0; i < vertices.length; i++) {\n area += (vertices[j].x - vertices[i].x) * (vertices[j].y + vertices[i].y);\n j = i;\n }\n\n if (signed)\n return area / 2;\n\n return Math.abs(area) / 2;\n };\n\n /**\n * Returns the moment of inertia (second moment of area) of the set of vertices given the total mass.\n * @method inertia\n * @param {vertices} vertices\n * @param {number} mass\n * @return {number} The polygon's moment of inertia\n */\n Vertices.inertia = function(vertices, mass) {\n var numerator = 0,\n denominator = 0,\n v = vertices,\n cross,\n j;\n\n // find the polygon's moment of inertia, using second moment of area\n // from equations at http://www.physicsforums.com/showthread.php?t=25293\n for (var n = 0; n < v.length; n++) {\n j = (n + 1) % v.length;\n cross = Math.abs(Vector.cross(v[j], v[n]));\n numerator += cross * (Vector.dot(v[j], v[j]) + Vector.dot(v[j], v[n]) + Vector.dot(v[n], v[n]));\n denominator += cross;\n }\n\n return (mass / 6) * (numerator / denominator);\n };\n\n /**\n * Translates the set of vertices in-place.\n * @method translate\n * @param {vertices} vertices\n * @param {vector} vector\n * @param {number} scalar\n */\n Vertices.translate = function(vertices, vector, scalar) {\n scalar = typeof scalar !== 'undefined' ? scalar : 1;\n\n var verticesLength = vertices.length,\n translateX = vector.x * scalar,\n translateY = vector.y * scalar,\n i;\n \n for (i = 0; i < verticesLength; i++) {\n vertices[i].x += translateX;\n vertices[i].y += translateY;\n }\n\n return vertices;\n };\n\n /**\n * Rotates the set of vertices in-place.\n * @method rotate\n * @param {vertices} vertices\n * @param {number} angle\n * @param {vector} point\n */\n Vertices.rotate = function(vertices, angle, point) {\n if (angle === 0)\n return;\n\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n pointX = point.x,\n pointY = point.y,\n verticesLength = vertices.length,\n vertex,\n dx,\n dy,\n i;\n\n for (i = 0; i < verticesLength; i++) {\n vertex = vertices[i];\n dx = vertex.x - pointX;\n dy = vertex.y - pointY;\n vertex.x = pointX + (dx * cos - dy * sin);\n vertex.y = pointY + (dx * sin + dy * cos);\n }\n\n return vertices;\n };\n\n /**\n * Returns `true` if the `point` is inside the set of `vertices`.\n * @method contains\n * @param {vertices} vertices\n * @param {vector} point\n * @return {boolean} True if the vertices contains point, otherwise false\n */\n Vertices.contains = function(vertices, point) {\n var pointX = point.x,\n pointY = point.y,\n verticesLength = vertices.length,\n vertex = vertices[verticesLength - 1],\n nextVertex;\n\n for (var i = 0; i < verticesLength; i++) {\n nextVertex = vertices[i];\n\n if ((pointX - vertex.x) * (nextVertex.y - vertex.y) \n + (pointY - vertex.y) * (vertex.x - nextVertex.x) > 0) {\n return false;\n }\n\n vertex = nextVertex;\n }\n\n return true;\n };\n\n /**\n * Scales the vertices from a point (default is centre) in-place.\n * @method scale\n * @param {vertices} vertices\n * @param {number} scaleX\n * @param {number} scaleY\n * @param {vector} point\n */\n Vertices.scale = function(vertices, scaleX, scaleY, point) {\n if (scaleX === 1 && scaleY === 1)\n return vertices;\n\n point = point || Vertices.centre(vertices);\n\n var vertex,\n delta;\n\n for (var i = 0; i < vertices.length; i++) {\n vertex = vertices[i];\n delta = Vector.sub(vertex, point);\n vertices[i].x = point.x + delta.x * scaleX;\n vertices[i].y = point.y + delta.y * scaleY;\n }\n\n return vertices;\n };\n\n /**\n * Chamfers a set of vertices by giving them rounded corners, returns a new set of vertices.\n * The radius parameter is a single number or an array to specify the radius for each vertex.\n * @method chamfer\n * @param {vertices} vertices\n * @param {number[]} radius\n * @param {number} quality\n * @param {number} qualityMin\n * @param {number} qualityMax\n */\n Vertices.chamfer = function(vertices, radius, quality, qualityMin, qualityMax) {\n if (typeof radius === 'number') {\n radius = [radius];\n } else {\n radius = radius || [8];\n }\n\n // quality defaults to -1, which is auto\n quality = (typeof quality !== 'undefined') ? quality : -1;\n qualityMin = qualityMin || 2;\n qualityMax = qualityMax || 14;\n\n var newVertices = [];\n\n for (var i = 0; i < vertices.length; i++) {\n var prevVertex = vertices[i - 1 >= 0 ? i - 1 : vertices.length - 1],\n vertex = vertices[i],\n nextVertex = vertices[(i + 1) % vertices.length],\n currentRadius = radius[i < radius.length ? i : radius.length - 1];\n\n if (currentRadius === 0) {\n newVertices.push(vertex);\n continue;\n }\n\n var prevNormal = Vector.normalise({ \n x: vertex.y - prevVertex.y, \n y: prevVertex.x - vertex.x\n });\n\n var nextNormal = Vector.normalise({ \n x: nextVertex.y - vertex.y, \n y: vertex.x - nextVertex.x\n });\n\n var diagonalRadius = Math.sqrt(2 * Math.pow(currentRadius, 2)),\n radiusVector = Vector.mult(Common.clone(prevNormal), currentRadius),\n midNormal = Vector.normalise(Vector.mult(Vector.add(prevNormal, nextNormal), 0.5)),\n scaledVertex = Vector.sub(vertex, Vector.mult(midNormal, diagonalRadius));\n\n var precision = quality;\n\n if (quality === -1) {\n // automatically decide precision\n precision = Math.pow(currentRadius, 0.32) * 1.75;\n }\n\n precision = Common.clamp(precision, qualityMin, qualityMax);\n\n // use an even value for precision, more likely to reduce axes by using symmetry\n if (precision % 2 === 1)\n precision += 1;\n\n var alpha = Math.acos(Vector.dot(prevNormal, nextNormal)),\n theta = alpha / precision;\n\n for (var j = 0; j < precision; j++) {\n newVertices.push(Vector.add(Vector.rotate(radiusVector, theta * j), scaledVertex));\n }\n }\n\n return newVertices;\n };\n\n /**\n * Sorts the input vertices into clockwise order in place.\n * @method clockwiseSort\n * @param {vertices} vertices\n * @return {vertices} vertices\n */\n Vertices.clockwiseSort = function(vertices) {\n var centre = Vertices.mean(vertices);\n\n vertices.sort(function(vertexA, vertexB) {\n return Vector.angle(centre, vertexA) - Vector.angle(centre, vertexB);\n });\n\n return vertices;\n };\n\n /**\n * Returns true if the vertices form a convex shape (vertices must be in clockwise order).\n * @method isConvex\n * @param {vertices} vertices\n * @return {bool} `true` if the `vertices` are convex, `false` if not (or `null` if not computable).\n */\n Vertices.isConvex = function(vertices) {\n // http://paulbourke.net/geometry/polygonmesh/\n // Copyright (c) Paul Bourke (use permitted)\n\n var flag = 0,\n n = vertices.length,\n i,\n j,\n k,\n z;\n\n if (n < 3)\n return null;\n\n for (i = 0; i < n; i++) {\n j = (i + 1) % n;\n k = (i + 2) % n;\n z = (vertices[j].x - vertices[i].x) * (vertices[k].y - vertices[j].y);\n z -= (vertices[j].y - vertices[i].y) * (vertices[k].x - vertices[j].x);\n\n if (z < 0) {\n flag |= 1;\n } else if (z > 0) {\n flag |= 2;\n }\n\n if (flag === 3) {\n return false;\n }\n }\n\n if (flag !== 0){\n return true;\n } else {\n return null;\n }\n };\n\n /**\n * Returns the convex hull of the input vertices as a new array of points.\n * @method hull\n * @param {vertices} vertices\n * @return [vertex] vertices\n */\n Vertices.hull = function(vertices) {\n // http://geomalgorithms.com/a10-_hull-1.html\n\n var upper = [],\n lower = [], \n vertex,\n i;\n\n // sort vertices on x-axis (y-axis for ties)\n vertices = vertices.slice(0);\n vertices.sort(function(vertexA, vertexB) {\n var dx = vertexA.x - vertexB.x;\n return dx !== 0 ? dx : vertexA.y - vertexB.y;\n });\n\n // build lower hull\n for (i = 0; i < vertices.length; i += 1) {\n vertex = vertices[i];\n\n while (lower.length >= 2 \n && Vector.cross3(lower[lower.length - 2], lower[lower.length - 1], vertex) <= 0) {\n lower.pop();\n }\n\n lower.push(vertex);\n }\n\n // build upper hull\n for (i = vertices.length - 1; i >= 0; i -= 1) {\n vertex = vertices[i];\n\n while (upper.length >= 2 \n && Vector.cross3(upper[upper.length - 2], upper[upper.length - 1], vertex) <= 0) {\n upper.pop();\n }\n\n upper.push(vertex);\n }\n\n // concatenation of the lower and upper hulls gives the convex hull\n // omit last points because they are repeated at the beginning of the other list\n upper.pop();\n lower.pop();\n\n return upper.concat(lower);\n };\n\n})();\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Body` module contains methods for creating and manipulating rigid bodies.\n* For creating bodies with common configurations such as rectangles, circles and other polygons see the module `Matter.Bodies`.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n\n* @class Body\n*/\n\nvar Body = {};\n\nmodule.exports = Body;\n\nvar Vertices = __webpack_require__(3);\nvar Vector = __webpack_require__(2);\nvar Sleeping = __webpack_require__(7);\nvar Common = __webpack_require__(0);\nvar Bounds = __webpack_require__(1);\nvar Axes = __webpack_require__(11);\n\n(function() {\n\n Body._timeCorrection = true;\n Body._inertiaScale = 4;\n Body._nextCollidingGroupId = 1;\n Body._nextNonCollidingGroupId = -1;\n Body._nextCategory = 0x0001;\n Body._baseDelta = 1000 / 60;\n\n /**\n * Creates a new rigid body model. The options parameter is an object that specifies any properties you wish to override the defaults.\n * All properties have default values, and many are pre-calculated automatically based on other properties.\n * Vertices must be specified in clockwise order.\n * See the properties section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {} options\n * @return {body} body\n */\n Body.create = function(options) {\n var defaults = {\n id: Common.nextId(),\n type: 'body',\n label: 'Body',\n parts: [],\n plugin: {},\n angle: 0,\n vertices: Vertices.fromPath('L 0 0 L 40 0 L 40 40 L 0 40'),\n position: { x: 0, y: 0 },\n force: { x: 0, y: 0 },\n torque: 0,\n positionImpulse: { x: 0, y: 0 },\n constraintImpulse: { x: 0, y: 0, angle: 0 },\n totalContacts: 0,\n speed: 0,\n angularSpeed: 0,\n velocity: { x: 0, y: 0 },\n angularVelocity: 0,\n isSensor: false,\n isStatic: false,\n isSleeping: false,\n motion: 0,\n sleepThreshold: 60,\n density: 0.001,\n restitution: 0,\n friction: 0.1,\n frictionStatic: 0.5,\n frictionAir: 0.01,\n collisionFilter: {\n category: 0x0001,\n mask: 0xFFFFFFFF,\n group: 0\n },\n slop: 0.05,\n timeScale: 1,\n render: {\n visible: true,\n opacity: 1,\n strokeStyle: null,\n fillStyle: null,\n lineWidth: null,\n sprite: {\n xScale: 1,\n yScale: 1,\n xOffset: 0,\n yOffset: 0\n }\n },\n events: null,\n bounds: null,\n chamfer: null,\n circleRadius: 0,\n positionPrev: null,\n anglePrev: 0,\n parent: null,\n axes: null,\n area: 0,\n mass: 0,\n inertia: 0,\n deltaTime: 1000 / 60,\n _original: null\n };\n\n var body = Common.extend(defaults, options);\n\n _initProperties(body, options);\n\n return body;\n };\n\n /**\n * Returns the next unique group index for which bodies will collide.\n * If `isNonColliding` is `true`, returns the next unique group index for which bodies will _not_ collide.\n * See `body.collisionFilter` for more information.\n * @method nextGroup\n * @param {bool} [isNonColliding=false]\n * @return {Number} Unique group index\n */\n Body.nextGroup = function(isNonColliding) {\n if (isNonColliding)\n return Body._nextNonCollidingGroupId--;\n\n return Body._nextCollidingGroupId++;\n };\n\n /**\n * Returns the next unique category bitfield (starting after the initial default category `0x0001`).\n * There are 32 available. See `body.collisionFilter` for more information.\n * @method nextCategory\n * @return {Number} Unique category bitfield\n */\n Body.nextCategory = function() {\n Body._nextCategory = Body._nextCategory << 1;\n return Body._nextCategory;\n };\n\n /**\n * Initialises body properties.\n * @method _initProperties\n * @private\n * @param {body} body\n * @param {} [options]\n */\n var _initProperties = function(body, options) {\n options = options || {};\n\n // init required properties (order is important)\n Body.set(body, {\n bounds: body.bounds || Bounds.create(body.vertices),\n positionPrev: body.positionPrev || Vector.clone(body.position),\n anglePrev: body.anglePrev || body.angle,\n vertices: body.vertices,\n parts: body.parts || [body],\n isStatic: body.isStatic,\n isSleeping: body.isSleeping,\n parent: body.parent || body\n });\n\n Vertices.rotate(body.vertices, body.angle, body.position);\n Axes.rotate(body.axes, body.angle);\n Bounds.update(body.bounds, body.vertices, body.velocity);\n\n // allow options to override the automatically calculated properties\n Body.set(body, {\n axes: options.axes || body.axes,\n area: options.area || body.area,\n mass: options.mass || body.mass,\n inertia: options.inertia || body.inertia\n });\n\n // render properties\n var defaultFillStyle = (body.isStatic ? '#14151f' : Common.choose(['#f19648', '#f5d259', '#f55a3c', '#063e7b', '#ececd1'])),\n defaultStrokeStyle = body.isStatic ? '#555' : '#ccc',\n defaultLineWidth = body.isStatic && body.render.fillStyle === null ? 1 : 0;\n body.render.fillStyle = body.render.fillStyle || defaultFillStyle;\n body.render.strokeStyle = body.render.strokeStyle || defaultStrokeStyle;\n body.render.lineWidth = body.render.lineWidth || defaultLineWidth;\n body.render.sprite.xOffset += -(body.bounds.min.x - body.position.x) / (body.bounds.max.x - body.bounds.min.x);\n body.render.sprite.yOffset += -(body.bounds.min.y - body.position.y) / (body.bounds.max.y - body.bounds.min.y);\n };\n\n /**\n * Given a property and a value (or map of), sets the property(s) on the body, using the appropriate setter functions if they exist.\n * Prefer to use the actual setter functions in performance critical situations.\n * @method set\n * @param {body} body\n * @param {} settings A property name (or map of properties and values) to set on the body.\n * @param {} value The value to set if `settings` is a single property name.\n */\n Body.set = function(body, settings, value) {\n var property;\n\n if (typeof settings === 'string') {\n property = settings;\n settings = {};\n settings[property] = value;\n }\n\n for (property in settings) {\n if (!Object.prototype.hasOwnProperty.call(settings, property))\n continue;\n\n value = settings[property];\n switch (property) {\n\n case 'isStatic':\n Body.setStatic(body, value);\n break;\n case 'isSleeping':\n Sleeping.set(body, value);\n break;\n case 'mass':\n Body.setMass(body, value);\n break;\n case 'density':\n Body.setDensity(body, value);\n break;\n case 'inertia':\n Body.setInertia(body, value);\n break;\n case 'vertices':\n Body.setVertices(body, value);\n break;\n case 'position':\n Body.setPosition(body, value);\n break;\n case 'angle':\n Body.setAngle(body, value);\n break;\n case 'velocity':\n Body.setVelocity(body, value);\n break;\n case 'angularVelocity':\n Body.setAngularVelocity(body, value);\n break;\n case 'speed':\n Body.setSpeed(body, value);\n break;\n case 'angularSpeed':\n Body.setAngularSpeed(body, value);\n break;\n case 'parts':\n Body.setParts(body, value);\n break;\n case 'centre':\n Body.setCentre(body, value);\n break;\n default:\n body[property] = value;\n\n }\n }\n };\n\n /**\n * Sets the body as static, including isStatic flag and setting mass and inertia to Infinity.\n * @method setStatic\n * @param {body} body\n * @param {bool} isStatic\n */\n Body.setStatic = function(body, isStatic) {\n for (var i = 0; i < body.parts.length; i++) {\n var part = body.parts[i];\n\n if (isStatic) {\n if (!part.isStatic) {\n part._original = {\n restitution: part.restitution,\n friction: part.friction,\n mass: part.mass,\n inertia: part.inertia,\n density: part.density,\n inverseMass: part.inverseMass,\n inverseInertia: part.inverseInertia\n };\n }\n\n part.restitution = 0;\n part.friction = 1;\n part.mass = part.inertia = part.density = Infinity;\n part.inverseMass = part.inverseInertia = 0;\n\n part.positionPrev.x = part.position.x;\n part.positionPrev.y = part.position.y;\n part.anglePrev = part.angle;\n part.angularVelocity = 0;\n part.speed = 0;\n part.angularSpeed = 0;\n part.motion = 0;\n } else if (part._original) {\n part.restitution = part._original.restitution;\n part.friction = part._original.friction;\n part.mass = part._original.mass;\n part.inertia = part._original.inertia;\n part.density = part._original.density;\n part.inverseMass = part._original.inverseMass;\n part.inverseInertia = part._original.inverseInertia;\n\n part._original = null;\n }\n\n part.isStatic = isStatic;\n }\n };\n\n /**\n * Sets the mass of the body. Inverse mass, density and inertia are automatically updated to reflect the change.\n * @method setMass\n * @param {body} body\n * @param {number} mass\n */\n Body.setMass = function(body, mass) {\n var moment = body.inertia / (body.mass / 6);\n body.inertia = moment * (mass / 6);\n body.inverseInertia = 1 / body.inertia;\n\n body.mass = mass;\n body.inverseMass = 1 / body.mass;\n body.density = body.mass / body.area;\n };\n\n /**\n * Sets the density of the body. Mass and inertia are automatically updated to reflect the change.\n * @method setDensity\n * @param {body} body\n * @param {number} density\n */\n Body.setDensity = function(body, density) {\n Body.setMass(body, density * body.area);\n body.density = density;\n };\n\n /**\n * Sets the moment of inertia of the body. This is the second moment of area in two dimensions.\n * Inverse inertia is automatically updated to reflect the change. Mass is not changed.\n * @method setInertia\n * @param {body} body\n * @param {number} inertia\n */\n Body.setInertia = function(body, inertia) {\n body.inertia = inertia;\n body.inverseInertia = 1 / body.inertia;\n };\n\n /**\n * Sets the body's vertices and updates body properties accordingly, including inertia, area and mass (with respect to `body.density`).\n * Vertices will be automatically transformed to be orientated around their centre of mass as the origin.\n * They are then automatically translated to world space based on `body.position`.\n *\n * The `vertices` argument should be passed as an array of `Matter.Vector` points (or a `Matter.Vertices` array).\n * Vertices must form a convex hull. Concave vertices must be decomposed into convex parts.\n * \n * @method setVertices\n * @param {body} body\n * @param {vector[]} vertices\n */\n Body.setVertices = function(body, vertices) {\n // change vertices\n if (vertices[0].body === body) {\n body.vertices = vertices;\n } else {\n body.vertices = Vertices.create(vertices, body);\n }\n\n // update properties\n body.axes = Axes.fromVertices(body.vertices);\n body.area = Vertices.area(body.vertices);\n Body.setMass(body, body.density * body.area);\n\n // orient vertices around the centre of mass at origin (0, 0)\n var centre = Vertices.centre(body.vertices);\n Vertices.translate(body.vertices, centre, -1);\n\n // update inertia while vertices are at origin (0, 0)\n Body.setInertia(body, Body._inertiaScale * Vertices.inertia(body.vertices, body.mass));\n\n // update geometry\n Vertices.translate(body.vertices, body.position);\n Bounds.update(body.bounds, body.vertices, body.velocity);\n };\n\n /**\n * Sets the parts of the `body`. \n * \n * See `body.parts` for details and requirements on how parts are used.\n * \n * See Bodies.fromVertices for a related utility.\n * \n * This function updates `body` mass, inertia and centroid based on the parts geometry. \n * Sets each `part.parent` to be this `body`. \n * \n * The convex hull is computed and set on this `body` (unless `autoHull` is `false`). \n * Automatically ensures that the first part in `body.parts` is the `body`.\n * @method setParts\n * @param {body} body\n * @param {body[]} parts\n * @param {bool} [autoHull=true]\n */\n Body.setParts = function(body, parts, autoHull) {\n var i;\n\n // add all the parts, ensuring that the first part is always the parent body\n parts = parts.slice(0);\n body.parts.length = 0;\n body.parts.push(body);\n body.parent = body;\n\n for (i = 0; i < parts.length; i++) {\n var part = parts[i];\n if (part !== body) {\n part.parent = body;\n body.parts.push(part);\n }\n }\n\n if (body.parts.length === 1)\n return;\n\n autoHull = typeof autoHull !== 'undefined' ? autoHull : true;\n\n // find the convex hull of all parts to set on the parent body\n if (autoHull) {\n var vertices = [];\n for (i = 0; i < parts.length; i++) {\n vertices = vertices.concat(parts[i].vertices);\n }\n\n Vertices.clockwiseSort(vertices);\n\n var hull = Vertices.hull(vertices),\n hullCentre = Vertices.centre(hull);\n\n Body.setVertices(body, hull);\n Vertices.translate(body.vertices, hullCentre);\n }\n\n // sum the properties of all compound parts of the parent body\n var total = Body._totalProperties(body);\n\n body.area = total.area;\n body.parent = body;\n body.position.x = total.centre.x;\n body.position.y = total.centre.y;\n body.positionPrev.x = total.centre.x;\n body.positionPrev.y = total.centre.y;\n\n Body.setMass(body, total.mass);\n Body.setInertia(body, total.inertia);\n Body.setPosition(body, total.centre);\n };\n\n /**\n * Set the centre of mass of the body. \n * The `centre` is a vector in world-space unless `relative` is set, in which case it is a translation.\n * The centre of mass is the point the body rotates about and can be used to simulate non-uniform density.\n * This is equal to moving `body.position` but not the `body.vertices`.\n * Invalid if the `centre` falls outside the body's convex hull.\n * @method setCentre\n * @param {body} body\n * @param {vector} centre\n * @param {bool} relative\n */\n Body.setCentre = function(body, centre, relative) {\n if (!relative) {\n body.positionPrev.x = centre.x - (body.position.x - body.positionPrev.x);\n body.positionPrev.y = centre.y - (body.position.y - body.positionPrev.y);\n body.position.x = centre.x;\n body.position.y = centre.y;\n } else {\n body.positionPrev.x += centre.x;\n body.positionPrev.y += centre.y;\n body.position.x += centre.x;\n body.position.y += centre.y;\n }\n };\n\n /**\n * Sets the position of the body. By default velocity is unchanged.\n * If `updateVelocity` is `true` then velocity is inferred from the change in position.\n * @method setPosition\n * @param {body} body\n * @param {vector} position\n * @param {boolean} [updateVelocity=false]\n */\n Body.setPosition = function(body, position, updateVelocity) {\n var delta = Vector.sub(position, body.position);\n\n if (updateVelocity) {\n body.positionPrev.x = body.position.x;\n body.positionPrev.y = body.position.y;\n body.velocity.x = delta.x;\n body.velocity.y = delta.y;\n body.speed = Vector.magnitude(delta);\n } else {\n body.positionPrev.x += delta.x;\n body.positionPrev.y += delta.y;\n }\n\n for (var i = 0; i < body.parts.length; i++) {\n var part = body.parts[i];\n part.position.x += delta.x;\n part.position.y += delta.y;\n Vertices.translate(part.vertices, delta);\n Bounds.update(part.bounds, part.vertices, body.velocity);\n }\n };\n\n /**\n * Sets the angle of the body. By default angular velocity is unchanged.\n * If `updateVelocity` is `true` then angular velocity is inferred from the change in angle.\n * @method setAngle\n * @param {body} body\n * @param {number} angle\n * @param {boolean} [updateVelocity=false]\n */\n Body.setAngle = function(body, angle, updateVelocity) {\n var delta = angle - body.angle;\n \n if (updateVelocity) {\n body.anglePrev = body.angle;\n body.angularVelocity = delta;\n body.angularSpeed = Math.abs(delta);\n } else {\n body.anglePrev += delta;\n }\n\n for (var i = 0; i < body.parts.length; i++) {\n var part = body.parts[i];\n part.angle += delta;\n Vertices.rotate(part.vertices, delta, body.position);\n Axes.rotate(part.axes, delta);\n Bounds.update(part.bounds, part.vertices, body.velocity);\n if (i > 0) {\n Vector.rotateAbout(part.position, delta, body.position, part.position);\n }\n }\n };\n\n /**\n * Sets the current linear velocity of the body. \n * Affects body speed.\n * @method setVelocity\n * @param {body} body\n * @param {vector} velocity\n */\n Body.setVelocity = function(body, velocity) {\n var timeScale = body.deltaTime / Body._baseDelta;\n body.positionPrev.x = body.position.x - velocity.x * timeScale;\n body.positionPrev.y = body.position.y - velocity.y * timeScale;\n body.velocity.x = (body.position.x - body.positionPrev.x) / timeScale;\n body.velocity.y = (body.position.y - body.positionPrev.y) / timeScale;\n body.speed = Vector.magnitude(body.velocity);\n };\n\n /**\n * Gets the current linear velocity of the body.\n * @method getVelocity\n * @param {body} body\n * @return {vector} velocity\n */\n Body.getVelocity = function(body) {\n var timeScale = Body._baseDelta / body.deltaTime;\n\n return {\n x: (body.position.x - body.positionPrev.x) * timeScale,\n y: (body.position.y - body.positionPrev.y) * timeScale\n };\n };\n\n /**\n * Gets the current linear speed of the body. \n * Equivalent to the magnitude of its velocity.\n * @method getSpeed\n * @param {body} body\n * @return {number} speed\n */\n Body.getSpeed = function(body) {\n return Vector.magnitude(Body.getVelocity(body));\n };\n\n /**\n * Sets the current linear speed of the body. \n * Direction is maintained. Affects body velocity.\n * @method setSpeed\n * @param {body} body\n * @param {number} speed\n */\n Body.setSpeed = function(body, speed) {\n Body.setVelocity(body, Vector.mult(Vector.normalise(Body.getVelocity(body)), speed));\n };\n\n /**\n * Sets the current rotational velocity of the body. \n * Affects body angular speed.\n * @method setAngularVelocity\n * @param {body} body\n * @param {number} velocity\n */\n Body.setAngularVelocity = function(body, velocity) {\n var timeScale = body.deltaTime / Body._baseDelta;\n body.anglePrev = body.angle - velocity * timeScale;\n body.angularVelocity = (body.angle - body.anglePrev) / timeScale;\n body.angularSpeed = Math.abs(body.angularVelocity);\n };\n\n /**\n * Gets the current rotational velocity of the body.\n * @method getAngularVelocity\n * @param {body} body\n * @return {number} angular velocity\n */\n Body.getAngularVelocity = function(body) {\n return (body.angle - body.anglePrev) * Body._baseDelta / body.deltaTime;\n };\n\n /**\n * Gets the current rotational speed of the body. \n * Equivalent to the magnitude of its angular velocity.\n * @method getAngularSpeed\n * @param {body} body\n * @return {number} angular speed\n */\n Body.getAngularSpeed = function(body) {\n return Math.abs(Body.getAngularVelocity(body));\n };\n\n /**\n * Sets the current rotational speed of the body. \n * Direction is maintained. Affects body angular velocity.\n * @method setAngularSpeed\n * @param {body} body\n * @param {number} speed\n */\n Body.setAngularSpeed = function(body, speed) {\n Body.setAngularVelocity(body, Common.sign(Body.getAngularVelocity(body)) * speed);\n };\n\n /**\n * Moves a body by a given vector relative to its current position. By default velocity is unchanged.\n * If `updateVelocity` is `true` then velocity is inferred from the change in position.\n * @method translate\n * @param {body} body\n * @param {vector} translation\n * @param {boolean} [updateVelocity=false]\n */\n Body.translate = function(body, translation, updateVelocity) {\n Body.setPosition(body, Vector.add(body.position, translation), updateVelocity);\n };\n\n /**\n * Rotates a body by a given angle relative to its current angle. By default angular velocity is unchanged.\n * If `updateVelocity` is `true` then angular velocity is inferred from the change in angle.\n * @method rotate\n * @param {body} body\n * @param {number} rotation\n * @param {vector} [point]\n * @param {boolean} [updateVelocity=false]\n */\n Body.rotate = function(body, rotation, point, updateVelocity) {\n if (!point) {\n Body.setAngle(body, body.angle + rotation, updateVelocity);\n } else {\n var cos = Math.cos(rotation),\n sin = Math.sin(rotation),\n dx = body.position.x - point.x,\n dy = body.position.y - point.y;\n \n Body.setPosition(body, {\n x: point.x + (dx * cos - dy * sin),\n y: point.y + (dx * sin + dy * cos)\n }, updateVelocity);\n\n Body.setAngle(body, body.angle + rotation, updateVelocity);\n }\n };\n\n /**\n * Scales the body, including updating physical properties (mass, area, axes, inertia), from a world-space point (default is body centre).\n * @method scale\n * @param {body} body\n * @param {number} scaleX\n * @param {number} scaleY\n * @param {vector} [point]\n */\n Body.scale = function(body, scaleX, scaleY, point) {\n var totalArea = 0,\n totalInertia = 0;\n\n point = point || body.position;\n\n for (var i = 0; i < body.parts.length; i++) {\n var part = body.parts[i];\n\n // scale vertices\n Vertices.scale(part.vertices, scaleX, scaleY, point);\n\n // update properties\n part.axes = Axes.fromVertices(part.vertices);\n part.area = Vertices.area(part.vertices);\n Body.setMass(part, body.density * part.area);\n\n // update inertia (requires vertices to be at origin)\n Vertices.translate(part.vertices, { x: -part.position.x, y: -part.position.y });\n Body.setInertia(part, Body._inertiaScale * Vertices.inertia(part.vertices, part.mass));\n Vertices.translate(part.vertices, { x: part.position.x, y: part.position.y });\n\n if (i > 0) {\n totalArea += part.area;\n totalInertia += part.inertia;\n }\n\n // scale position\n part.position.x = point.x + (part.position.x - point.x) * scaleX;\n part.position.y = point.y + (part.position.y - point.y) * scaleY;\n\n // update bounds\n Bounds.update(part.bounds, part.vertices, body.velocity);\n }\n\n // handle parent body\n if (body.parts.length > 1) {\n body.area = totalArea;\n\n if (!body.isStatic) {\n Body.setMass(body, body.density * totalArea);\n Body.setInertia(body, totalInertia);\n }\n }\n\n // handle circles\n if (body.circleRadius) { \n if (scaleX === scaleY) {\n body.circleRadius *= scaleX;\n } else {\n // body is no longer a circle\n body.circleRadius = null;\n }\n }\n };\n\n /**\n * Performs an update by integrating the equations of motion on the `body`.\n * This is applied every update by `Matter.Engine` automatically.\n * @method update\n * @param {body} body\n * @param {number} [deltaTime=16.666]\n */\n Body.update = function(body, deltaTime) {\n deltaTime = (typeof deltaTime !== 'undefined' ? deltaTime : (1000 / 60)) * body.timeScale;\n\n var deltaTimeSquared = deltaTime * deltaTime,\n correction = Body._timeCorrection ? deltaTime / (body.deltaTime || deltaTime) : 1;\n\n // from the previous step\n var frictionAir = 1 - body.frictionAir * (deltaTime / Common._baseDelta),\n velocityPrevX = (body.position.x - body.positionPrev.x) * correction,\n velocityPrevY = (body.position.y - body.positionPrev.y) * correction;\n\n // update velocity with Verlet integration\n body.velocity.x = (velocityPrevX * frictionAir) + (body.force.x / body.mass) * deltaTimeSquared;\n body.velocity.y = (velocityPrevY * frictionAir) + (body.force.y / body.mass) * deltaTimeSquared;\n\n body.positionPrev.x = body.position.x;\n body.positionPrev.y = body.position.y;\n body.position.x += body.velocity.x;\n body.position.y += body.velocity.y;\n body.deltaTime = deltaTime;\n\n // update angular velocity with Verlet integration\n body.angularVelocity = ((body.angle - body.anglePrev) * frictionAir * correction) + (body.torque / body.inertia) * deltaTimeSquared;\n body.anglePrev = body.angle;\n body.angle += body.angularVelocity;\n\n // transform the body geometry\n for (var i = 0; i < body.parts.length; i++) {\n var part = body.parts[i];\n\n Vertices.translate(part.vertices, body.velocity);\n \n if (i > 0) {\n part.position.x += body.velocity.x;\n part.position.y += body.velocity.y;\n }\n\n if (body.angularVelocity !== 0) {\n Vertices.rotate(part.vertices, body.angularVelocity, body.position);\n Axes.rotate(part.axes, body.angularVelocity);\n if (i > 0) {\n Vector.rotateAbout(part.position, body.angularVelocity, body.position, part.position);\n }\n }\n\n Bounds.update(part.bounds, part.vertices, body.velocity);\n }\n };\n\n /**\n * Updates properties `body.velocity`, `body.speed`, `body.angularVelocity` and `body.angularSpeed` which are normalised in relation to `Body._baseDelta`.\n * @method updateVelocities\n * @param {body} body\n */\n Body.updateVelocities = function(body) {\n var timeScale = Body._baseDelta / body.deltaTime,\n bodyVelocity = body.velocity;\n\n bodyVelocity.x = (body.position.x - body.positionPrev.x) * timeScale;\n bodyVelocity.y = (body.position.y - body.positionPrev.y) * timeScale;\n body.speed = Math.sqrt((bodyVelocity.x * bodyVelocity.x) + (bodyVelocity.y * bodyVelocity.y));\n\n body.angularVelocity = (body.angle - body.anglePrev) * timeScale;\n body.angularSpeed = Math.abs(body.angularVelocity);\n };\n\n /**\n * Applies the `force` to the `body` from the force origin `position` in world-space, over a single timestep, including applying any resulting angular torque.\n * \n * Forces are useful for effects like gravity, wind or rocket thrust, but can be difficult in practice when precise control is needed. In these cases see `Body.setVelocity` and `Body.setPosition` as an alternative.\n * \n * The force from this function is only applied once for the duration of a single timestep, in other words the duration depends directly on the current engine update `delta` and the rate of calls to this function.\n * \n * Therefore to account for time, you should apply the force constantly over as many engine updates as equivalent to the intended duration.\n * \n * If all or part of the force duration is some fraction of a timestep, first multiply the force by `duration / timestep`.\n * \n * The force origin `position` in world-space must also be specified. Passing `body.position` will result in zero angular effect as the force origin would be at the centre of mass.\n * \n * The `body` will take time to accelerate under a force, the resulting effect depends on duration of the force, the body mass and other forces on the body including friction combined.\n * @method applyForce\n * @param {body} body\n * @param {vector} position The force origin in world-space. Pass `body.position` to avoid angular torque.\n * @param {vector} force\n */\n Body.applyForce = function(body, position, force) {\n var offset = { x: position.x - body.position.x, y: position.y - body.position.y };\n body.force.x += force.x;\n body.force.y += force.y;\n body.torque += offset.x * force.y - offset.y * force.x;\n };\n\n /**\n * Returns the sums of the properties of all compound parts of the parent body.\n * @method _totalProperties\n * @private\n * @param {body} body\n * @return {}\n */\n Body._totalProperties = function(body) {\n // from equations at:\n // https://ecourses.ou.edu/cgi-bin/ebook.cgi?doc=&topic=st&chap_sec=07.2&page=theory\n // http://output.to/sideway/default.asp?qno=121100087\n\n var properties = {\n mass: 0,\n area: 0,\n inertia: 0,\n centre: { x: 0, y: 0 }\n };\n\n // sum the properties of all compound parts of the parent body\n for (var i = body.parts.length === 1 ? 0 : 1; i < body.parts.length; i++) {\n var part = body.parts[i],\n mass = part.mass !== Infinity ? part.mass : 1;\n\n properties.mass += mass;\n properties.area += part.area;\n properties.inertia += part.inertia;\n properties.centre = Vector.add(properties.centre, Vector.mult(part.position, mass));\n }\n\n properties.centre = Vector.div(properties.centre, properties.mass);\n\n return properties;\n };\n\n /*\n *\n * Events Documentation\n *\n */\n\n /**\n * Fired when a body starts sleeping (where `this` is the body).\n *\n * @event sleepStart\n * @this {body} The body that has started sleeping\n * @param {} event An event object\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when a body ends sleeping (where `this` is the body).\n *\n * @event sleepEnd\n * @this {body} The body that has ended sleeping\n * @param {} event An event object\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * An integer `Number` uniquely identifying number generated in `Body.create` by `Common.nextId`.\n *\n * @property id\n * @type number\n */\n\n /**\n * _Read only_. Set by `Body.create`.\n * \n * A `String` denoting the type of object.\n *\n * @readOnly\n * @property type\n * @type string\n * @default \"body\"\n */\n\n /**\n * An arbitrary `String` name to help the user identify and manage bodies.\n *\n * @property label\n * @type string\n * @default \"Body\"\n */\n\n /**\n * _Read only_. Use `Body.setParts` to set. \n * \n * See `Bodies.fromVertices` for a related utility.\n * \n * An array of bodies (the 'parts') that make up this body (the 'parent'). The first body in this array must always be a self-reference to this `body`. \n * \n * The parts are fixed together and therefore perform as a single unified rigid body.\n * \n * Parts in relation to each other are allowed to overlap, as well as form gaps or holes, so can be used to create complex concave bodies unlike when using a single part. \n * \n * Use properties and functions on the parent `body` rather than on parts.\n * \n * Outside of their geometry, most properties on parts are not considered or updated. \n * As such 'per-part' material properties among others are not currently considered.\n * \n * Parts should be created specifically for their parent body. \n * Parts should not be shared or reused between bodies, only one parent is supported. \n * Parts should not have their own parts, they are not handled recursively. \n * Parts should not be added to the world directly or any other composite. \n * Parts own vertices must be convex and in clockwise order. \n * \n * A body with more than one part is sometimes referred to as a 'compound' body. \n * \n * Use `Body.setParts` when setting parts to ensure correct updates of all properties. \n *\n * @readOnly\n * @property parts\n * @type body[]\n */\n\n /**\n * An object reserved for storing plugin-specific properties.\n *\n * @property plugin\n * @type {}\n */\n\n /**\n * _Read only_. Updated by `Body.setParts`.\n * \n * A reference to the body that this is a part of. See `body.parts`.\n * This is a self reference if the body is not a part of another body.\n *\n * @readOnly\n * @property parent\n * @type body\n */\n\n /**\n * A `Number` specifying the angle of the body, in radians.\n *\n * @property angle\n * @type number\n * @default 0\n */\n\n /**\n * _Read only_. Use `Body.setVertices` or `Body.setParts` to set. See also `Bodies.fromVertices`.\n * \n * An array of `Vector` objects that specify the convex hull of the rigid body.\n * These should be provided about the origin `(0, 0)`. E.g.\n *\n * `[{ x: 0, y: 0 }, { x: 25, y: 50 }, { x: 50, y: 0 }]`\n * \n * Vertices must always be convex, in clockwise order and must not contain any duplicate points.\n * \n * Concave vertices should be decomposed into convex `parts`, see `Bodies.fromVertices` and `Body.setParts`.\n *\n * When set the vertices are translated such that `body.position` is at the centre of mass.\n * Many other body properties are automatically calculated from these vertices when set including `density`, `area` and `inertia`.\n * \n * The module `Matter.Vertices` contains useful methods for working with vertices.\n *\n * @readOnly\n * @property vertices\n * @type vector[]\n */\n\n /**\n * _Read only_. Use `Body.setPosition` to set. \n * \n * A `Vector` that specifies the current world-space position of the body.\n * \n * @readOnly\n * @property position\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * A `Vector` that accumulates the total force applied to the body for a single update.\n * Force is zeroed after every `Engine.update`, so constant forces should be applied for every update they are needed. See also `Body.applyForce`.\n * \n * @property force\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * A `Number` that accumulates the total torque (turning force) applied to the body for a single update. See also `Body.applyForce`.\n * Torque is zeroed after every `Engine.update`, so constant torques should be applied for every update they are needed.\n *\n * Torques result in angular acceleration on every update, which depends on body inertia and the engine update delta.\n * \n * @property torque\n * @type number\n * @default 0\n */\n\n /**\n * _Read only_. Use `Body.setSpeed` to set. \n * \n * See `Body.getSpeed` for details.\n * \n * Equivalent to the magnitude of `body.velocity` (always positive).\n * \n * @readOnly\n * @property speed\n * @type number\n * @default 0\n */\n\n /**\n * _Read only_. Use `Body.setVelocity` to set. \n * \n * See `Body.getVelocity` for details.\n * \n * Equivalent to the magnitude of `body.angularVelocity` (always positive).\n * \n * @readOnly\n * @property velocity\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * _Read only_. Use `Body.setAngularSpeed` to set. \n * \n * See `Body.getAngularSpeed` for details.\n * \n * \n * @readOnly\n * @property angularSpeed\n * @type number\n * @default 0\n */\n\n /**\n * _Read only_. Use `Body.setAngularVelocity` to set. \n * \n * See `Body.getAngularVelocity` for details.\n * \n *\n * @readOnly\n * @property angularVelocity\n * @type number\n * @default 0\n */\n\n /**\n * _Read only_. Use `Body.setStatic` to set. \n * \n * A flag that indicates whether a body is considered static. A static body can never change position or angle and is completely fixed.\n *\n * @readOnly\n * @property isStatic\n * @type boolean\n * @default false\n */\n\n /**\n * A flag that indicates whether a body is a sensor. Sensor triggers collision events, but doesn't react with colliding body physically.\n *\n * @property isSensor\n * @type boolean\n * @default false\n */\n\n /**\n * _Read only_. Use `Sleeping.set` to set. \n * \n * A flag that indicates whether the body is considered sleeping. A sleeping body acts similar to a static body, except it is only temporary and can be awoken.\n *\n * @readOnly\n * @property isSleeping\n * @type boolean\n * @default false\n */\n\n /**\n * _Read only_. Calculated during engine update only when sleeping is enabled.\n * \n * A `Number` that loosely measures the amount of movement a body currently has.\n *\n * Derived from `body.speed^2 + body.angularSpeed^2`. See `Sleeping.update`.\n * \n * @readOnly\n * @property motion\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that defines the length of time during which this body must have near-zero velocity before it is set as sleeping by the `Matter.Sleeping` module (if sleeping is enabled by the engine).\n * \n * @property sleepThreshold\n * @type number\n * @default 60\n */\n\n /**\n * _Read only_. Use `Body.setDensity` to set. \n * \n * A `Number` that defines the density of the body (mass per unit area).\n * \n * Mass will also be updated when set.\n *\n * @readOnly\n * @property density\n * @type number\n * @default 0.001\n */\n\n /**\n * _Read only_. Use `Body.setMass` to set. \n * \n * A `Number` that defines the mass of the body.\n * \n * Density will also be updated when set.\n * \n * @readOnly\n * @property mass\n * @type number\n */\n\n /**\n * _Read only_. Use `Body.setMass` to set. \n * \n * A `Number` that defines the inverse mass of the body (`1 / mass`).\n *\n * @readOnly\n * @property inverseMass\n * @type number\n */\n\n /**\n * _Read only_. Automatically calculated when vertices, mass or density are set or set through `Body.setInertia`.\n * \n * A `Number` that defines the moment of inertia of the body. This is the second moment of area in two dimensions.\n * \n * Can be manually set to `Infinity` to prevent rotation of the body. See `Body.setInertia`.\n * \n * @readOnly\n * @property inertia\n * @type number\n */\n\n /**\n * _Read only_. Automatically calculated when vertices, mass or density are set or calculated by `Body.setInertia`.\n * \n * A `Number` that defines the inverse moment of inertia of the body (`1 / inertia`).\n * \n * @readOnly\n * @property inverseInertia\n * @type number\n */\n\n /**\n * A `Number` that defines the restitution (elasticity) of the body. The value is always positive and is in the range `(0, 1)`.\n * A value of `0` means collisions may be perfectly inelastic and no bouncing may occur. \n * A value of `0.8` means the body may bounce back with approximately 80% of its kinetic energy.\n * Note that collision response is based on _pairs_ of bodies, and that `restitution` values are _combined_ with the following formula:\n *\n * `Math.max(bodyA.restitution, bodyB.restitution)`\n *\n * @property restitution\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that defines the friction of the body. The value is always positive and is in the range `(0, 1)`.\n * A value of `0` means that the body may slide indefinitely.\n * A value of `1` means the body may come to a stop almost instantly after a force is applied.\n *\n * The effects of the value may be non-linear. \n * High values may be unstable depending on the body.\n * The engine uses a Coulomb friction model including static and kinetic friction.\n * Note that collision response is based on _pairs_ of bodies, and that `friction` values are _combined_ with the following formula:\n *\n * `Math.min(bodyA.friction, bodyB.friction)`\n *\n * @property friction\n * @type number\n * @default 0.1\n */\n\n /**\n * A `Number` that defines the static friction of the body (in the Coulomb friction model). \n * A value of `0` means the body will never 'stick' when it is nearly stationary and only dynamic `friction` is used.\n * The higher the value (e.g. `10`), the more force it will take to initially get the body moving when nearly stationary.\n * This value is multiplied with the `friction` property to make it easier to change `friction` and maintain an appropriate amount of static friction.\n *\n * @property frictionStatic\n * @type number\n * @default 0.5\n */\n\n /**\n * A `Number` that defines the air friction of the body (air resistance). \n * A value of `0` means the body will never slow as it moves through space.\n * The higher the value, the faster a body slows when moving through space.\n * The effects of the value are non-linear. \n *\n * @property frictionAir\n * @type number\n * @default 0.01\n */\n\n /**\n * An `Object` that specifies the collision filtering properties of this body.\n *\n * Collisions between two bodies will obey the following rules:\n * - If the two bodies have the same non-zero value of `collisionFilter.group`,\n * they will always collide if the value is positive, and they will never collide\n * if the value is negative.\n * - If the two bodies have different values of `collisionFilter.group` or if one\n * (or both) of the bodies has a value of 0, then the category/mask rules apply as follows:\n *\n * Each body belongs to a collision category, given by `collisionFilter.category`. This\n * value is used as a bit field and the category should have only one bit set, meaning that\n * the value of this property is a power of two in the range [1, 2^31]. Thus, there are 32\n * different collision categories available.\n *\n * Each body also defines a collision bitmask, given by `collisionFilter.mask` which specifies\n * the categories it collides with (the value is the bitwise AND value of all these categories).\n *\n * Using the category/mask rules, two bodies `A` and `B` collide if each includes the other's\n * category in its mask, i.e. `(categoryA & maskB) !== 0` and `(categoryB & maskA) !== 0`\n * are both true.\n *\n * @property collisionFilter\n * @type object\n */\n\n /**\n * An Integer `Number`, that specifies the collision group this body belongs to.\n * See `body.collisionFilter` for more information.\n *\n * @property collisionFilter.group\n * @type object\n * @default 0\n */\n\n /**\n * A bit field that specifies the collision category this body belongs to.\n * The category value should have only one bit set, for example `0x0001`.\n * This means there are up to 32 unique collision categories available.\n * See `body.collisionFilter` for more information.\n *\n * @property collisionFilter.category\n * @type object\n * @default 1\n */\n\n /**\n * A bit mask that specifies the collision categories this body may collide with.\n * See `body.collisionFilter` for more information.\n *\n * @property collisionFilter.mask\n * @type object\n * @default -1\n */\n\n /**\n * A `Number` that specifies a thin boundary around the body where it is allowed to slightly sink into other bodies.\n * \n * This is required for proper collision response, including friction and restitution effects.\n * \n * The default should generally suffice in most cases. You may need to decrease this value for very small bodies that are nearing the default value in scale.\n *\n * @property slop\n * @type number\n * @default 0.05\n */\n\n /**\n * A `Number` that specifies per-body time scaling.\n *\n * @property timeScale\n * @type number\n * @default 1\n */\n\n /**\n * _Read only_. Updated during engine update.\n * \n * A `Number` that records the last delta time value used to update this body.\n * Used to calculate speed and velocity.\n *\n * @readOnly\n * @property deltaTime\n * @type number\n * @default 1000 / 60\n */\n\n /**\n * An `Object` that defines the rendering properties to be consumed by the module `Matter.Render`.\n *\n * @property render\n * @type object\n */\n\n /**\n * A flag that indicates if the body should be rendered.\n *\n * @property render.visible\n * @type boolean\n * @default true\n */\n\n /**\n * Sets the opacity to use when rendering.\n *\n * @property render.opacity\n * @type number\n * @default 1\n */\n\n /**\n * An `Object` that defines the sprite properties to use when rendering, if any.\n *\n * @property render.sprite\n * @type object\n */\n\n /**\n * An `String` that defines the path to the image to use as the sprite texture, if any.\n *\n * @property render.sprite.texture\n * @type string\n */\n \n /**\n * A `Number` that defines the scaling in the x-axis for the sprite, if any.\n *\n * @property render.sprite.xScale\n * @type number\n * @default 1\n */\n\n /**\n * A `Number` that defines the scaling in the y-axis for the sprite, if any.\n *\n * @property render.sprite.yScale\n * @type number\n * @default 1\n */\n\n /**\n * A `Number` that defines the offset in the x-axis for the sprite (normalised by texture width).\n *\n * @property render.sprite.xOffset\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that defines the offset in the y-axis for the sprite (normalised by texture height).\n *\n * @property render.sprite.yOffset\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that defines the line width to use when rendering the body outline (if a sprite is not defined).\n * A value of `0` means no outline will be rendered.\n *\n * @property render.lineWidth\n * @type number\n * @default 0\n */\n\n /**\n * A `String` that defines the fill style to use when rendering the body (if a sprite is not defined).\n * It is the same as when using a canvas, so it accepts CSS style property values.\n *\n * @property render.fillStyle\n * @type string\n * @default a random colour\n */\n\n /**\n * A `String` that defines the stroke style to use when rendering the body outline (if a sprite is not defined).\n * It is the same as when using a canvas, so it accepts CSS style property values.\n *\n * @property render.strokeStyle\n * @type string\n * @default a random colour\n */\n\n /**\n * _Read only_. Calculated automatically when vertices are set.\n * \n * An array of unique axis vectors (edge normals) used for collision detection.\n * These are automatically calculated when vertices are set.\n * They are constantly updated by `Body.update` during the simulation.\n *\n * @readOnly\n * @property axes\n * @type vector[]\n */\n \n /**\n * _Read only_. Calculated automatically when vertices are set.\n * \n * A `Number` that measures the area of the body's convex hull.\n * \n * @readOnly\n * @property area\n * @type string\n * @default \n */\n\n /**\n * A `Bounds` object that defines the AABB region for the body.\n * It is automatically calculated when vertices are set and constantly updated by `Body.update` during simulation.\n * \n * @property bounds\n * @type bounds\n */\n\n /**\n * Temporarily may hold parameters to be passed to `Vertices.chamfer` where supported by external functions.\n * \n * See `Vertices.chamfer` for possible parameters this object may hold.\n * \n * Currently only functions inside `Matter.Bodies` provide a utility using this property as a vertices pre-processing option.\n * \n * Alternatively consider using `Vertices.chamfer` directly on vertices before passing them to a body creation function.\n * \n * @property chamfer\n * @type object|null|undefined\n */\n\n})();\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Events` module contains methods to fire and listen to events on other objects.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Events\n*/\n\nvar Events = {};\n\nmodule.exports = Events;\n\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * Subscribes a callback function to the given object's `eventName`.\n * @method on\n * @param {} object\n * @param {string} eventNames\n * @param {function} callback\n */\n Events.on = function(object, eventNames, callback) {\n var names = eventNames.split(' '),\n name;\n\n for (var i = 0; i < names.length; i++) {\n name = names[i];\n object.events = object.events || {};\n object.events[name] = object.events[name] || [];\n object.events[name].push(callback);\n }\n\n return callback;\n };\n\n /**\n * Removes the given event callback. If no callback, clears all callbacks in `eventNames`. If no `eventNames`, clears all events.\n * @method off\n * @param {} object\n * @param {string} eventNames\n * @param {function} callback\n */\n Events.off = function(object, eventNames, callback) {\n if (!eventNames) {\n object.events = {};\n return;\n }\n\n // handle Events.off(object, callback)\n if (typeof eventNames === 'function') {\n callback = eventNames;\n eventNames = Common.keys(object.events).join(' ');\n }\n\n var names = eventNames.split(' ');\n\n for (var i = 0; i < names.length; i++) {\n var callbacks = object.events[names[i]],\n newCallbacks = [];\n\n if (callback && callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n if (callbacks[j] !== callback)\n newCallbacks.push(callbacks[j]);\n }\n }\n\n object.events[names[i]] = newCallbacks;\n }\n };\n\n /**\n * Fires all the callbacks subscribed to the given object's `eventName`, in the order they subscribed, if any.\n * @method trigger\n * @param {} object\n * @param {string} eventNames\n * @param {} event\n */\n Events.trigger = function(object, eventNames, event) {\n var names,\n name,\n callbacks,\n eventClone;\n\n var events = object.events;\n \n if (events && Common.keys(events).length > 0) {\n if (!event)\n event = {};\n\n names = eventNames.split(' ');\n\n for (var i = 0; i < names.length; i++) {\n name = names[i];\n callbacks = events[name];\n\n if (callbacks) {\n eventClone = Common.clone(event, false);\n eventClone.name = name;\n eventClone.source = object;\n\n for (var j = 0; j < callbacks.length; j++) {\n callbacks[j].apply(object, [eventClone]);\n }\n }\n }\n }\n };\n\n})();\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* A composite is a collection of `Matter.Body`, `Matter.Constraint` and other `Matter.Composite` objects.\n*\n* They are a container that can represent complex objects made of multiple parts, even if they are not physically connected.\n* A composite could contain anything from a single body all the way up to a whole world.\n* \n* When making any changes to composites, use the included functions rather than changing their properties directly.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Composite\n*/\n\nvar Composite = {};\n\nmodule.exports = Composite;\n\nvar Events = __webpack_require__(5);\nvar Common = __webpack_require__(0);\nvar Bounds = __webpack_require__(1);\nvar Body = __webpack_require__(4);\n\n(function() {\n\n /**\n * Creates a new composite. The options parameter is an object that specifies any properties you wish to override the defaults.\n * See the properites section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {} [options]\n * @return {composite} A new composite\n */\n Composite.create = function(options) {\n return Common.extend({ \n id: Common.nextId(),\n type: 'composite',\n parent: null,\n isModified: false,\n bodies: [], \n constraints: [], \n composites: [],\n label: 'Composite',\n plugin: {},\n cache: {\n allBodies: null,\n allConstraints: null,\n allComposites: null\n }\n }, options);\n };\n\n /**\n * Sets the composite's `isModified` flag. \n * If `updateParents` is true, all parents will be set (default: false).\n * If `updateChildren` is true, all children will be set (default: false).\n * @private\n * @method setModified\n * @param {composite} composite\n * @param {boolean} isModified\n * @param {boolean} [updateParents=false]\n * @param {boolean} [updateChildren=false]\n */\n Composite.setModified = function(composite, isModified, updateParents, updateChildren) {\n composite.isModified = isModified;\n\n if (isModified && composite.cache) {\n composite.cache.allBodies = null;\n composite.cache.allConstraints = null;\n composite.cache.allComposites = null;\n }\n\n if (updateParents && composite.parent) {\n Composite.setModified(composite.parent, isModified, updateParents, updateChildren);\n }\n\n if (updateChildren) {\n for (var i = 0; i < composite.composites.length; i++) {\n var childComposite = composite.composites[i];\n Composite.setModified(childComposite, isModified, updateParents, updateChildren);\n }\n }\n };\n\n /**\n * Generic single or multi-add function. Adds a single or an array of body(s), constraint(s) or composite(s) to the given composite.\n * Triggers `beforeAdd` and `afterAdd` events on the `composite`.\n * @method add\n * @param {composite} composite\n * @param {object|array} object A single or an array of body(s), constraint(s) or composite(s)\n * @return {composite} The original composite with the objects added\n */\n Composite.add = function(composite, object) {\n var objects = [].concat(object);\n\n Events.trigger(composite, 'beforeAdd', { object: object });\n\n for (var i = 0; i < objects.length; i++) {\n var obj = objects[i];\n\n switch (obj.type) {\n\n case 'body':\n // skip adding compound parts\n if (obj.parent !== obj) {\n Common.warn('Composite.add: skipped adding a compound body part (you must add its parent instead)');\n break;\n }\n\n Composite.addBody(composite, obj);\n break;\n case 'constraint':\n Composite.addConstraint(composite, obj);\n break;\n case 'composite':\n Composite.addComposite(composite, obj);\n break;\n case 'mouseConstraint':\n Composite.addConstraint(composite, obj.constraint);\n break;\n\n }\n }\n\n Events.trigger(composite, 'afterAdd', { object: object });\n\n return composite;\n };\n\n /**\n * Generic remove function. Removes one or many body(s), constraint(s) or a composite(s) to the given composite.\n * Optionally searching its children recursively.\n * Triggers `beforeRemove` and `afterRemove` events on the `composite`.\n * @method remove\n * @param {composite} composite\n * @param {object|array} object\n * @param {boolean} [deep=false]\n * @return {composite} The original composite with the objects removed\n */\n Composite.remove = function(composite, object, deep) {\n var objects = [].concat(object);\n\n Events.trigger(composite, 'beforeRemove', { object: object });\n\n for (var i = 0; i < objects.length; i++) {\n var obj = objects[i];\n\n switch (obj.type) {\n\n case 'body':\n Composite.removeBody(composite, obj, deep);\n break;\n case 'constraint':\n Composite.removeConstraint(composite, obj, deep);\n break;\n case 'composite':\n Composite.removeComposite(composite, obj, deep);\n break;\n case 'mouseConstraint':\n Composite.removeConstraint(composite, obj.constraint);\n break;\n\n }\n }\n\n Events.trigger(composite, 'afterRemove', { object: object });\n\n return composite;\n };\n\n /**\n * Adds a composite to the given composite.\n * @private\n * @method addComposite\n * @param {composite} compositeA\n * @param {composite} compositeB\n * @return {composite} The original compositeA with the objects from compositeB added\n */\n Composite.addComposite = function(compositeA, compositeB) {\n compositeA.composites.push(compositeB);\n compositeB.parent = compositeA;\n Composite.setModified(compositeA, true, true, false);\n return compositeA;\n };\n\n /**\n * Removes a composite from the given composite, and optionally searching its children recursively.\n * @private\n * @method removeComposite\n * @param {composite} compositeA\n * @param {composite} compositeB\n * @param {boolean} [deep=false]\n * @return {composite} The original compositeA with the composite removed\n */\n Composite.removeComposite = function(compositeA, compositeB, deep) {\n var position = Common.indexOf(compositeA.composites, compositeB);\n\n if (position !== -1) {\n var bodies = Composite.allBodies(compositeB);\n\n Composite.removeCompositeAt(compositeA, position);\n\n for (var i = 0; i < bodies.length; i++) {\n bodies[i].sleepCounter = 0;\n }\n }\n\n if (deep) {\n for (var i = 0; i < compositeA.composites.length; i++){\n Composite.removeComposite(compositeA.composites[i], compositeB, true);\n }\n }\n\n return compositeA;\n };\n\n /**\n * Removes a composite from the given composite.\n * @private\n * @method removeCompositeAt\n * @param {composite} composite\n * @param {number} position\n * @return {composite} The original composite with the composite removed\n */\n Composite.removeCompositeAt = function(composite, position) {\n composite.composites.splice(position, 1);\n Composite.setModified(composite, true, true, false);\n return composite;\n };\n\n /**\n * Adds a body to the given composite.\n * @private\n * @method addBody\n * @param {composite} composite\n * @param {body} body\n * @return {composite} The original composite with the body added\n */\n Composite.addBody = function(composite, body) {\n composite.bodies.push(body);\n Composite.setModified(composite, true, true, false);\n return composite;\n };\n\n /**\n * Removes a body from the given composite, and optionally searching its children recursively.\n * @private\n * @method removeBody\n * @param {composite} composite\n * @param {body} body\n * @param {boolean} [deep=false]\n * @return {composite} The original composite with the body removed\n */\n Composite.removeBody = function(composite, body, deep) {\n var position = Common.indexOf(composite.bodies, body);\n\n if (position !== -1) {\n Composite.removeBodyAt(composite, position);\n body.sleepCounter = 0;\n }\n\n if (deep) {\n for (var i = 0; i < composite.composites.length; i++){\n Composite.removeBody(composite.composites[i], body, true);\n }\n }\n\n return composite;\n };\n\n /**\n * Removes a body from the given composite.\n * @private\n * @method removeBodyAt\n * @param {composite} composite\n * @param {number} position\n * @return {composite} The original composite with the body removed\n */\n Composite.removeBodyAt = function(composite, position) {\n composite.bodies.splice(position, 1);\n Composite.setModified(composite, true, true, false);\n return composite;\n };\n\n /**\n * Adds a constraint to the given composite.\n * @private\n * @method addConstraint\n * @param {composite} composite\n * @param {constraint} constraint\n * @return {composite} The original composite with the constraint added\n */\n Composite.addConstraint = function(composite, constraint) {\n composite.constraints.push(constraint);\n Composite.setModified(composite, true, true, false);\n return composite;\n };\n\n /**\n * Removes a constraint from the given composite, and optionally searching its children recursively.\n * @private\n * @method removeConstraint\n * @param {composite} composite\n * @param {constraint} constraint\n * @param {boolean} [deep=false]\n * @return {composite} The original composite with the constraint removed\n */\n Composite.removeConstraint = function(composite, constraint, deep) {\n var position = Common.indexOf(composite.constraints, constraint);\n \n if (position !== -1) {\n Composite.removeConstraintAt(composite, position);\n }\n\n if (deep) {\n for (var i = 0; i < composite.composites.length; i++){\n Composite.removeConstraint(composite.composites[i], constraint, true);\n }\n }\n\n return composite;\n };\n\n /**\n * Removes a body from the given composite.\n * @private\n * @method removeConstraintAt\n * @param {composite} composite\n * @param {number} position\n * @return {composite} The original composite with the constraint removed\n */\n Composite.removeConstraintAt = function(composite, position) {\n composite.constraints.splice(position, 1);\n Composite.setModified(composite, true, true, false);\n return composite;\n };\n\n /**\n * Removes all bodies, constraints and composites from the given composite.\n * Optionally clearing its children recursively.\n * @method clear\n * @param {composite} composite\n * @param {boolean} keepStatic\n * @param {boolean} [deep=false]\n */\n Composite.clear = function(composite, keepStatic, deep) {\n if (deep) {\n for (var i = 0; i < composite.composites.length; i++){\n Composite.clear(composite.composites[i], keepStatic, true);\n }\n }\n \n if (keepStatic) {\n composite.bodies = composite.bodies.filter(function(body) { return body.isStatic; });\n } else {\n composite.bodies.length = 0;\n }\n\n composite.constraints.length = 0;\n composite.composites.length = 0;\n\n Composite.setModified(composite, true, true, false);\n\n return composite;\n };\n\n /**\n * Returns all bodies in the given composite, including all bodies in its children, recursively.\n * @method allBodies\n * @param {composite} composite\n * @return {body[]} All the bodies\n */\n Composite.allBodies = function(composite) {\n if (composite.cache && composite.cache.allBodies) {\n return composite.cache.allBodies;\n }\n\n var bodies = [].concat(composite.bodies);\n\n for (var i = 0; i < composite.composites.length; i++)\n bodies = bodies.concat(Composite.allBodies(composite.composites[i]));\n\n if (composite.cache) {\n composite.cache.allBodies = bodies;\n }\n\n return bodies;\n };\n\n /**\n * Returns all constraints in the given composite, including all constraints in its children, recursively.\n * @method allConstraints\n * @param {composite} composite\n * @return {constraint[]} All the constraints\n */\n Composite.allConstraints = function(composite) {\n if (composite.cache && composite.cache.allConstraints) {\n return composite.cache.allConstraints;\n }\n\n var constraints = [].concat(composite.constraints);\n\n for (var i = 0; i < composite.composites.length; i++)\n constraints = constraints.concat(Composite.allConstraints(composite.composites[i]));\n\n if (composite.cache) {\n composite.cache.allConstraints = constraints;\n }\n\n return constraints;\n };\n\n /**\n * Returns all composites in the given composite, including all composites in its children, recursively.\n * @method allComposites\n * @param {composite} composite\n * @return {composite[]} All the composites\n */\n Composite.allComposites = function(composite) {\n if (composite.cache && composite.cache.allComposites) {\n return composite.cache.allComposites;\n }\n\n var composites = [].concat(composite.composites);\n\n for (var i = 0; i < composite.composites.length; i++)\n composites = composites.concat(Composite.allComposites(composite.composites[i]));\n\n if (composite.cache) {\n composite.cache.allComposites = composites;\n }\n\n return composites;\n };\n\n /**\n * Searches the composite recursively for an object matching the type and id supplied, null if not found.\n * @method get\n * @param {composite} composite\n * @param {number} id\n * @param {string} type\n * @return {object} The requested object, if found\n */\n Composite.get = function(composite, id, type) {\n var objects,\n object;\n\n switch (type) {\n case 'body':\n objects = Composite.allBodies(composite);\n break;\n case 'constraint':\n objects = Composite.allConstraints(composite);\n break;\n case 'composite':\n objects = Composite.allComposites(composite).concat(composite);\n break;\n }\n\n if (!objects)\n return null;\n\n object = objects.filter(function(object) { \n return object.id.toString() === id.toString(); \n });\n\n return object.length === 0 ? null : object[0];\n };\n\n /**\n * Moves the given object(s) from compositeA to compositeB (equal to a remove followed by an add).\n * @method move\n * @param {compositeA} compositeA\n * @param {object[]} objects\n * @param {compositeB} compositeB\n * @return {composite} Returns compositeA\n */\n Composite.move = function(compositeA, objects, compositeB) {\n Composite.remove(compositeA, objects);\n Composite.add(compositeB, objects);\n return compositeA;\n };\n\n /**\n * Assigns new ids for all objects in the composite, recursively.\n * @method rebase\n * @param {composite} composite\n * @return {composite} Returns composite\n */\n Composite.rebase = function(composite) {\n var objects = Composite.allBodies(composite)\n .concat(Composite.allConstraints(composite))\n .concat(Composite.allComposites(composite));\n\n for (var i = 0; i < objects.length; i++) {\n objects[i].id = Common.nextId();\n }\n\n return composite;\n };\n\n /**\n * Translates all children in the composite by a given vector relative to their current positions, \n * without imparting any velocity.\n * @method translate\n * @param {composite} composite\n * @param {vector} translation\n * @param {bool} [recursive=true]\n */\n Composite.translate = function(composite, translation, recursive) {\n var bodies = recursive ? Composite.allBodies(composite) : composite.bodies;\n\n for (var i = 0; i < bodies.length; i++) {\n Body.translate(bodies[i], translation);\n }\n\n return composite;\n };\n\n /**\n * Rotates all children in the composite by a given angle about the given point, without imparting any angular velocity.\n * @method rotate\n * @param {composite} composite\n * @param {number} rotation\n * @param {vector} point\n * @param {bool} [recursive=true]\n */\n Composite.rotate = function(composite, rotation, point, recursive) {\n var cos = Math.cos(rotation),\n sin = Math.sin(rotation),\n bodies = recursive ? Composite.allBodies(composite) : composite.bodies;\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i],\n dx = body.position.x - point.x,\n dy = body.position.y - point.y;\n \n Body.setPosition(body, {\n x: point.x + (dx * cos - dy * sin),\n y: point.y + (dx * sin + dy * cos)\n });\n\n Body.rotate(body, rotation);\n }\n\n return composite;\n };\n\n /**\n * Scales all children in the composite, including updating physical properties (mass, area, axes, inertia), from a world-space point.\n * @method scale\n * @param {composite} composite\n * @param {number} scaleX\n * @param {number} scaleY\n * @param {vector} point\n * @param {bool} [recursive=true]\n */\n Composite.scale = function(composite, scaleX, scaleY, point, recursive) {\n var bodies = recursive ? Composite.allBodies(composite) : composite.bodies;\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i],\n dx = body.position.x - point.x,\n dy = body.position.y - point.y;\n \n Body.setPosition(body, {\n x: point.x + dx * scaleX,\n y: point.y + dy * scaleY\n });\n\n Body.scale(body, scaleX, scaleY);\n }\n\n return composite;\n };\n\n /**\n * Returns the union of the bounds of all of the composite's bodies.\n * @method bounds\n * @param {composite} composite The composite.\n * @returns {bounds} The composite bounds.\n */\n Composite.bounds = function(composite) {\n var bodies = Composite.allBodies(composite),\n vertices = [];\n\n for (var i = 0; i < bodies.length; i += 1) {\n var body = bodies[i];\n vertices.push(body.bounds.min, body.bounds.max);\n }\n\n return Bounds.create(vertices);\n };\n\n /*\n *\n * Events Documentation\n *\n */\n\n /**\n * Fired when a call to `Composite.add` is made, before objects have been added.\n *\n * @event beforeAdd\n * @param {} event An event object\n * @param {} event.object The object(s) to be added (may be a single body, constraint, composite or a mixed array of these)\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when a call to `Composite.add` is made, after objects have been added.\n *\n * @event afterAdd\n * @param {} event An event object\n * @param {} event.object The object(s) that have been added (may be a single body, constraint, composite or a mixed array of these)\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when a call to `Composite.remove` is made, before objects have been removed.\n *\n * @event beforeRemove\n * @param {} event An event object\n * @param {} event.object The object(s) to be removed (may be a single body, constraint, composite or a mixed array of these)\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when a call to `Composite.remove` is made, after objects have been removed.\n *\n * @event afterRemove\n * @param {} event An event object\n * @param {} event.object The object(s) that have been removed (may be a single body, constraint, composite or a mixed array of these)\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * An integer `Number` uniquely identifying number generated in `Composite.create` by `Common.nextId`.\n *\n * @property id\n * @type number\n */\n\n /**\n * A `String` denoting the type of object.\n *\n * @property type\n * @type string\n * @default \"composite\"\n * @readOnly\n */\n\n /**\n * An arbitrary `String` name to help the user identify and manage composites.\n *\n * @property label\n * @type string\n * @default \"Composite\"\n */\n\n /**\n * A flag that specifies whether the composite has been modified during the current step.\n * This is automatically managed when bodies, constraints or composites are added or removed.\n *\n * @property isModified\n * @type boolean\n * @default false\n */\n\n /**\n * The `Composite` that is the parent of this composite. It is automatically managed by the `Matter.Composite` methods.\n *\n * @property parent\n * @type composite\n * @default null\n */\n\n /**\n * An array of `Body` that are _direct_ children of this composite.\n * To add or remove bodies you should use `Composite.add` and `Composite.remove` methods rather than directly modifying this property.\n * If you wish to recursively find all descendants, you should use the `Composite.allBodies` method.\n *\n * @property bodies\n * @type body[]\n * @default []\n */\n\n /**\n * An array of `Constraint` that are _direct_ children of this composite.\n * To add or remove constraints you should use `Composite.add` and `Composite.remove` methods rather than directly modifying this property.\n * If you wish to recursively find all descendants, you should use the `Composite.allConstraints` method.\n *\n * @property constraints\n * @type constraint[]\n * @default []\n */\n\n /**\n * An array of `Composite` that are _direct_ children of this composite.\n * To add or remove composites you should use `Composite.add` and `Composite.remove` methods rather than directly modifying this property.\n * If you wish to recursively find all descendants, you should use the `Composite.allComposites` method.\n *\n * @property composites\n * @type composite[]\n * @default []\n */\n\n /**\n * An object reserved for storing plugin-specific properties.\n *\n * @property plugin\n * @type {}\n */\n\n /**\n * An object used for storing cached results for performance reasons.\n * This is used internally only and is automatically managed.\n *\n * @private\n * @property cache\n * @type {}\n */\n\n})();\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Sleeping` module contains methods to manage the sleeping state of bodies.\n*\n* @class Sleeping\n*/\n\nvar Sleeping = {};\n\nmodule.exports = Sleeping;\n\nvar Body = __webpack_require__(4);\nvar Events = __webpack_require__(5);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n Sleeping._motionWakeThreshold = 0.18;\n Sleeping._motionSleepThreshold = 0.08;\n Sleeping._minBias = 0.9;\n\n /**\n * Puts bodies to sleep or wakes them up depending on their motion.\n * @method update\n * @param {body[]} bodies\n * @param {number} delta\n */\n Sleeping.update = function(bodies, delta) {\n var timeScale = delta / Common._baseDelta,\n motionSleepThreshold = Sleeping._motionSleepThreshold;\n \n // update bodies sleeping status\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i],\n speed = Body.getSpeed(body),\n angularSpeed = Body.getAngularSpeed(body),\n motion = speed * speed + angularSpeed * angularSpeed;\n\n // wake up bodies if they have a force applied\n if (body.force.x !== 0 || body.force.y !== 0) {\n Sleeping.set(body, false);\n continue;\n }\n\n var minMotion = Math.min(body.motion, motion),\n maxMotion = Math.max(body.motion, motion);\n \n // biased average motion estimation between frames\n body.motion = Sleeping._minBias * minMotion + (1 - Sleeping._minBias) * maxMotion;\n\n if (body.sleepThreshold > 0 && body.motion < motionSleepThreshold) {\n body.sleepCounter += 1;\n \n if (body.sleepCounter >= body.sleepThreshold / timeScale) {\n Sleeping.set(body, true);\n }\n } else if (body.sleepCounter > 0) {\n body.sleepCounter -= 1;\n }\n }\n };\n\n /**\n * Given a set of colliding pairs, wakes the sleeping bodies involved.\n * @method afterCollisions\n * @param {pair[]} pairs\n */\n Sleeping.afterCollisions = function(pairs) {\n var motionSleepThreshold = Sleeping._motionSleepThreshold;\n\n // wake up bodies involved in collisions\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n \n // don't wake inactive pairs\n if (!pair.isActive)\n continue;\n\n var collision = pair.collision,\n bodyA = collision.bodyA.parent, \n bodyB = collision.bodyB.parent;\n \n // don't wake if at least one body is static\n if ((bodyA.isSleeping && bodyB.isSleeping) || bodyA.isStatic || bodyB.isStatic)\n continue;\n \n if (bodyA.isSleeping || bodyB.isSleeping) {\n var sleepingBody = (bodyA.isSleeping && !bodyA.isStatic) ? bodyA : bodyB,\n movingBody = sleepingBody === bodyA ? bodyB : bodyA;\n\n if (!sleepingBody.isStatic && movingBody.motion > motionSleepThreshold) {\n Sleeping.set(sleepingBody, false);\n }\n }\n }\n };\n \n /**\n * Set a body as sleeping or awake.\n * @method set\n * @param {body} body\n * @param {boolean} isSleeping\n */\n Sleeping.set = function(body, isSleeping) {\n var wasSleeping = body.isSleeping;\n\n if (isSleeping) {\n body.isSleeping = true;\n body.sleepCounter = body.sleepThreshold;\n\n body.positionImpulse.x = 0;\n body.positionImpulse.y = 0;\n\n body.positionPrev.x = body.position.x;\n body.positionPrev.y = body.position.y;\n\n body.anglePrev = body.angle;\n body.speed = 0;\n body.angularSpeed = 0;\n body.motion = 0;\n\n if (!wasSleeping) {\n Events.trigger(body, 'sleepStart');\n }\n } else {\n body.isSleeping = false;\n body.sleepCounter = 0;\n\n if (wasSleeping) {\n Events.trigger(body, 'sleepEnd');\n }\n }\n };\n\n})();\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Collision` module contains methods for detecting collisions between a given pair of bodies.\n*\n* For efficient detection between a list of bodies, see `Matter.Detector` and `Matter.Query`.\n*\n* See `Matter.Engine` for collision events.\n*\n* @class Collision\n*/\n\nvar Collision = {};\n\nmodule.exports = Collision;\n\nvar Vertices = __webpack_require__(3);\nvar Pair = __webpack_require__(9);\n\n(function() {\n var _supports = [];\n\n var _overlapAB = {\n overlap: 0,\n axis: null\n };\n\n var _overlapBA = {\n overlap: 0,\n axis: null\n };\n\n /**\n * Creates a new collision record.\n * @method create\n * @param {body} bodyA The first body part represented by the collision record\n * @param {body} bodyB The second body part represented by the collision record\n * @return {collision} A new collision record\n */\n Collision.create = function(bodyA, bodyB) {\n return { \n pair: null,\n collided: false,\n bodyA: bodyA,\n bodyB: bodyB,\n parentA: bodyA.parent,\n parentB: bodyB.parent,\n depth: 0,\n normal: { x: 0, y: 0 },\n tangent: { x: 0, y: 0 },\n penetration: { x: 0, y: 0 },\n supports: [null, null],\n supportCount: 0\n };\n };\n\n /**\n * Detect collision between two bodies.\n * @method collides\n * @param {body} bodyA\n * @param {body} bodyB\n * @param {pairs} [pairs] Optionally reuse collision records from existing pairs.\n * @return {collision|null} A collision record if detected, otherwise null\n */\n Collision.collides = function(bodyA, bodyB, pairs) {\n Collision._overlapAxes(_overlapAB, bodyA.vertices, bodyB.vertices, bodyA.axes);\n\n if (_overlapAB.overlap <= 0) {\n return null;\n }\n\n Collision._overlapAxes(_overlapBA, bodyB.vertices, bodyA.vertices, bodyB.axes);\n\n if (_overlapBA.overlap <= 0) {\n return null;\n }\n\n // reuse collision records for gc efficiency\n var pair = pairs && pairs.table[Pair.id(bodyA, bodyB)],\n collision;\n\n if (!pair) {\n collision = Collision.create(bodyA, bodyB);\n collision.collided = true;\n collision.bodyA = bodyA.id < bodyB.id ? bodyA : bodyB;\n collision.bodyB = bodyA.id < bodyB.id ? bodyB : bodyA;\n collision.parentA = collision.bodyA.parent;\n collision.parentB = collision.bodyB.parent;\n } else {\n collision = pair.collision;\n }\n\n bodyA = collision.bodyA;\n bodyB = collision.bodyB;\n\n var minOverlap;\n\n if (_overlapAB.overlap < _overlapBA.overlap) {\n minOverlap = _overlapAB;\n } else {\n minOverlap = _overlapBA;\n }\n\n var normal = collision.normal,\n tangent = collision.tangent,\n penetration = collision.penetration,\n supports = collision.supports,\n depth = minOverlap.overlap,\n minAxis = minOverlap.axis,\n normalX = minAxis.x,\n normalY = minAxis.y,\n deltaX = bodyB.position.x - bodyA.position.x,\n deltaY = bodyB.position.y - bodyA.position.y;\n\n // ensure normal is facing away from bodyA\n if (normalX * deltaX + normalY * deltaY >= 0) {\n normalX = -normalX;\n normalY = -normalY;\n }\n\n normal.x = normalX;\n normal.y = normalY;\n \n tangent.x = -normalY;\n tangent.y = normalX;\n\n penetration.x = normalX * depth;\n penetration.y = normalY * depth;\n\n collision.depth = depth;\n\n // find support points, there is always either exactly one or two\n var supportsB = Collision._findSupports(bodyA, bodyB, normal, 1),\n supportCount = 0;\n\n // find the supports from bodyB that are inside bodyA\n if (Vertices.contains(bodyA.vertices, supportsB[0])) {\n supports[supportCount++] = supportsB[0];\n }\n\n if (Vertices.contains(bodyA.vertices, supportsB[1])) {\n supports[supportCount++] = supportsB[1];\n }\n\n // find the supports from bodyA that are inside bodyB\n if (supportCount < 2) {\n var supportsA = Collision._findSupports(bodyB, bodyA, normal, -1);\n\n if (Vertices.contains(bodyB.vertices, supportsA[0])) {\n supports[supportCount++] = supportsA[0];\n }\n\n if (supportCount < 2 && Vertices.contains(bodyB.vertices, supportsA[1])) {\n supports[supportCount++] = supportsA[1];\n }\n }\n\n // account for the edge case of overlapping but no vertex containment\n if (supportCount === 0) {\n supports[supportCount++] = supportsB[0];\n }\n\n // update support count\n collision.supportCount = supportCount;\n\n return collision;\n };\n\n /**\n * Find the overlap between two sets of vertices.\n * @method _overlapAxes\n * @private\n * @param {object} result\n * @param {vertices} verticesA\n * @param {vertices} verticesB\n * @param {axes} axes\n */\n Collision._overlapAxes = function(result, verticesA, verticesB, axes) {\n var verticesALength = verticesA.length,\n verticesBLength = verticesB.length,\n verticesAX = verticesA[0].x,\n verticesAY = verticesA[0].y,\n verticesBX = verticesB[0].x,\n verticesBY = verticesB[0].y,\n axesLength = axes.length,\n overlapMin = Number.MAX_VALUE,\n overlapAxisNumber = 0,\n overlap,\n overlapAB,\n overlapBA,\n dot,\n i,\n j;\n\n for (i = 0; i < axesLength; i++) {\n var axis = axes[i],\n axisX = axis.x,\n axisY = axis.y,\n minA = verticesAX * axisX + verticesAY * axisY,\n minB = verticesBX * axisX + verticesBY * axisY,\n maxA = minA,\n maxB = minB;\n \n for (j = 1; j < verticesALength; j += 1) {\n dot = verticesA[j].x * axisX + verticesA[j].y * axisY;\n\n if (dot > maxA) { \n maxA = dot;\n } else if (dot < minA) { \n minA = dot;\n }\n }\n\n for (j = 1; j < verticesBLength; j += 1) {\n dot = verticesB[j].x * axisX + verticesB[j].y * axisY;\n\n if (dot > maxB) { \n maxB = dot;\n } else if (dot < minB) { \n minB = dot;\n }\n }\n\n overlapAB = maxA - minB;\n overlapBA = maxB - minA;\n overlap = overlapAB < overlapBA ? overlapAB : overlapBA;\n\n if (overlap < overlapMin) {\n overlapMin = overlap;\n overlapAxisNumber = i;\n\n if (overlap <= 0) {\n // can not be intersecting\n break;\n }\n } \n }\n\n result.axis = axes[overlapAxisNumber];\n result.overlap = overlapMin;\n };\n\n /**\n * Finds supporting vertices given two bodies along a given direction using hill-climbing.\n * @method _findSupports\n * @private\n * @param {body} bodyA\n * @param {body} bodyB\n * @param {vector} normal\n * @param {number} direction\n * @return [vector]\n */\n Collision._findSupports = function(bodyA, bodyB, normal, direction) {\n var vertices = bodyB.vertices,\n verticesLength = vertices.length,\n bodyAPositionX = bodyA.position.x,\n bodyAPositionY = bodyA.position.y,\n normalX = normal.x * direction,\n normalY = normal.y * direction,\n vertexA = vertices[0],\n vertexB = vertexA,\n nearestDistance = normalX * (bodyAPositionX - vertexB.x) + normalY * (bodyAPositionY - vertexB.y),\n vertexC,\n distance,\n j;\n\n // find deepest vertex relative to the axis\n for (j = 1; j < verticesLength; j += 1) {\n vertexB = vertices[j];\n distance = normalX * (bodyAPositionX - vertexB.x) + normalY * (bodyAPositionY - vertexB.y);\n\n // convex hill-climbing\n if (distance < nearestDistance) {\n nearestDistance = distance;\n vertexA = vertexB;\n }\n }\n\n // measure next vertex\n vertexC = vertices[(verticesLength + vertexA.index - 1) % verticesLength];\n nearestDistance = normalX * (bodyAPositionX - vertexC.x) + normalY * (bodyAPositionY - vertexC.y);\n\n // compare with previous vertex\n vertexB = vertices[(vertexA.index + 1) % verticesLength];\n if (normalX * (bodyAPositionX - vertexB.x) + normalY * (bodyAPositionY - vertexB.y) < nearestDistance) {\n _supports[0] = vertexA;\n _supports[1] = vertexB;\n\n return _supports;\n }\n\n _supports[0] = vertexA;\n _supports[1] = vertexC;\n\n return _supports;\n };\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * A reference to the pair using this collision record, if there is one.\n *\n * @property pair\n * @type {pair|null}\n * @default null\n */\n\n /**\n * A flag that indicates if the bodies were colliding when the collision was last updated.\n * \n * @property collided\n * @type boolean\n * @default false\n */\n\n /**\n * The first body part represented by the collision (see also `collision.parentA`).\n * \n * @property bodyA\n * @type body\n */\n\n /**\n * The second body part represented by the collision (see also `collision.parentB`).\n * \n * @property bodyB\n * @type body\n */\n\n /**\n * The first body represented by the collision (i.e. `collision.bodyA.parent`).\n * \n * @property parentA\n * @type body\n */\n\n /**\n * The second body represented by the collision (i.e. `collision.bodyB.parent`).\n * \n * @property parentB\n * @type body\n */\n\n /**\n * A `Number` that represents the minimum separating distance between the bodies along the collision normal.\n *\n * @readOnly\n * @property depth\n * @type number\n * @default 0\n */\n\n /**\n * A normalised `Vector` that represents the direction between the bodies that provides the minimum separating distance.\n *\n * @property normal\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * A normalised `Vector` that is the tangent direction to the collision normal.\n *\n * @property tangent\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * A `Vector` that represents the direction and depth of the collision.\n *\n * @property penetration\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * An array of body vertices that represent the support points in the collision.\n * \n * _Note:_ Only the first `collision.supportCount` items of `collision.supports` are active.\n * Therefore use `collision.supportCount` instead of `collision.supports.length` when iterating the active supports.\n * \n * These are the deepest vertices (along the collision normal) of each body that are contained by the other body's vertices.\n *\n * @property supports\n * @type vector[]\n * @default []\n */\n\n /**\n * The number of active supports for this collision found in `collision.supports`.\n * \n * _Note:_ Only the first `collision.supportCount` items of `collision.supports` are active.\n * Therefore use `collision.supportCount` instead of `collision.supports.length` when iterating the active supports.\n *\n * @property supportCount\n * @type number\n * @default 0\n */\n\n})();\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Pair` module contains methods for creating and manipulating collision pairs.\n*\n* @class Pair\n*/\n\nvar Pair = {};\n\nmodule.exports = Pair;\n\nvar Contact = __webpack_require__(16);\n\n(function() {\n \n /**\n * Creates a pair.\n * @method create\n * @param {collision} collision\n * @param {number} timestamp\n * @return {pair} A new pair\n */\n Pair.create = function(collision, timestamp) {\n var bodyA = collision.bodyA,\n bodyB = collision.bodyB;\n\n var pair = {\n id: Pair.id(bodyA, bodyB),\n bodyA: bodyA,\n bodyB: bodyB,\n collision: collision,\n contacts: [Contact.create(), Contact.create()],\n contactCount: 0,\n separation: 0,\n isActive: true,\n isSensor: bodyA.isSensor || bodyB.isSensor,\n timeCreated: timestamp,\n timeUpdated: timestamp,\n inverseMass: 0,\n friction: 0,\n frictionStatic: 0,\n restitution: 0,\n slop: 0\n };\n\n Pair.update(pair, collision, timestamp);\n\n return pair;\n };\n\n /**\n * Updates a pair given a collision.\n * @method update\n * @param {pair} pair\n * @param {collision} collision\n * @param {number} timestamp\n */\n Pair.update = function(pair, collision, timestamp) {\n var supports = collision.supports,\n supportCount = collision.supportCount,\n contacts = pair.contacts,\n parentA = collision.parentA,\n parentB = collision.parentB;\n \n pair.isActive = true;\n pair.timeUpdated = timestamp;\n pair.collision = collision;\n pair.separation = collision.depth;\n pair.inverseMass = parentA.inverseMass + parentB.inverseMass;\n pair.friction = parentA.friction < parentB.friction ? parentA.friction : parentB.friction;\n pair.frictionStatic = parentA.frictionStatic > parentB.frictionStatic ? parentA.frictionStatic : parentB.frictionStatic;\n pair.restitution = parentA.restitution > parentB.restitution ? parentA.restitution : parentB.restitution;\n pair.slop = parentA.slop > parentB.slop ? parentA.slop : parentB.slop;\n\n pair.contactCount = supportCount;\n collision.pair = pair;\n\n var supportA = supports[0],\n contactA = contacts[0],\n supportB = supports[1],\n contactB = contacts[1];\n\n // match contacts to supports\n if (contactB.vertex === supportA || contactA.vertex === supportB) {\n contacts[1] = contactA;\n contacts[0] = contactA = contactB;\n contactB = contacts[1];\n }\n\n // update contacts\n contactA.vertex = supportA;\n contactB.vertex = supportB;\n };\n \n /**\n * Set a pair as active or inactive.\n * @method setActive\n * @param {pair} pair\n * @param {bool} isActive\n * @param {number} timestamp\n */\n Pair.setActive = function(pair, isActive, timestamp) {\n if (isActive) {\n pair.isActive = true;\n pair.timeUpdated = timestamp;\n } else {\n pair.isActive = false;\n pair.contactCount = 0;\n }\n };\n\n /**\n * Get the id for the given pair.\n * @method id\n * @param {body} bodyA\n * @param {body} bodyB\n * @return {string} Unique pairId\n */\n Pair.id = function(bodyA, bodyB) {\n return bodyA.id < bodyB.id ? bodyA.id.toString(36) + ':' + bodyB.id.toString(36) \n : bodyB.id.toString(36) + ':' + bodyA.id.toString(36);\n };\n\n})();\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Constraint` module contains methods for creating and manipulating constraints.\n* Constraints are used for specifying that a fixed distance must be maintained between two bodies (or a body and a fixed world-space position).\n* The stiffness of constraints can be modified to create springs or elastic.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Constraint\n*/\n\nvar Constraint = {};\n\nmodule.exports = Constraint;\n\nvar Vertices = __webpack_require__(3);\nvar Vector = __webpack_require__(2);\nvar Sleeping = __webpack_require__(7);\nvar Bounds = __webpack_require__(1);\nvar Axes = __webpack_require__(11);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n Constraint._warming = 0.4;\n Constraint._torqueDampen = 1;\n Constraint._minLength = 0.000001;\n\n /**\n * Creates a new constraint.\n * All properties have default values, and many are pre-calculated automatically based on other properties.\n * To simulate a revolute constraint (or pin joint) set `length: 0` and a high `stiffness` value (e.g. `0.7` or above).\n * If the constraint is unstable, try lowering the `stiffness` value and / or increasing `engine.constraintIterations`.\n * For compound bodies, constraints must be applied to the parent body (not one of its parts).\n * See the properties section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {} options\n * @return {constraint} constraint\n */\n Constraint.create = function(options) {\n var constraint = options;\n\n // if bodies defined but no points, use body centre\n if (constraint.bodyA && !constraint.pointA)\n constraint.pointA = { x: 0, y: 0 };\n if (constraint.bodyB && !constraint.pointB)\n constraint.pointB = { x: 0, y: 0 };\n\n // calculate static length using initial world space points\n var initialPointA = constraint.bodyA ? Vector.add(constraint.bodyA.position, constraint.pointA) : constraint.pointA,\n initialPointB = constraint.bodyB ? Vector.add(constraint.bodyB.position, constraint.pointB) : constraint.pointB,\n length = Vector.magnitude(Vector.sub(initialPointA, initialPointB));\n \n constraint.length = typeof constraint.length !== 'undefined' ? constraint.length : length;\n\n // option defaults\n constraint.id = constraint.id || Common.nextId();\n constraint.label = constraint.label || 'Constraint';\n constraint.type = 'constraint';\n constraint.stiffness = constraint.stiffness || (constraint.length > 0 ? 1 : 0.7);\n constraint.damping = constraint.damping || 0;\n constraint.angularStiffness = constraint.angularStiffness || 0;\n constraint.angleA = constraint.bodyA ? constraint.bodyA.angle : constraint.angleA;\n constraint.angleB = constraint.bodyB ? constraint.bodyB.angle : constraint.angleB;\n constraint.plugin = {};\n\n // render\n var render = {\n visible: true,\n lineWidth: 2,\n strokeStyle: '#ffffff',\n type: 'line',\n anchors: true\n };\n\n if (constraint.length === 0 && constraint.stiffness > 0.1) {\n render.type = 'pin';\n render.anchors = false;\n } else if (constraint.stiffness < 0.9) {\n render.type = 'spring';\n }\n\n constraint.render = Common.extend(render, constraint.render);\n\n return constraint;\n };\n\n /**\n * Prepares for solving by constraint warming.\n * @private\n * @method preSolveAll\n * @param {body[]} bodies\n */\n Constraint.preSolveAll = function(bodies) {\n for (var i = 0; i < bodies.length; i += 1) {\n var body = bodies[i],\n impulse = body.constraintImpulse;\n\n if (body.isStatic || (impulse.x === 0 && impulse.y === 0 && impulse.angle === 0)) {\n continue;\n }\n\n body.position.x += impulse.x;\n body.position.y += impulse.y;\n body.angle += impulse.angle;\n }\n };\n\n /**\n * Solves all constraints in a list of collisions.\n * @private\n * @method solveAll\n * @param {constraint[]} constraints\n * @param {number} delta\n */\n Constraint.solveAll = function(constraints, delta) {\n var timeScale = Common.clamp(delta / Common._baseDelta, 0, 1);\n\n // Solve fixed constraints first.\n for (var i = 0; i < constraints.length; i += 1) {\n var constraint = constraints[i],\n fixedA = !constraint.bodyA || (constraint.bodyA && constraint.bodyA.isStatic),\n fixedB = !constraint.bodyB || (constraint.bodyB && constraint.bodyB.isStatic);\n\n if (fixedA || fixedB) {\n Constraint.solve(constraints[i], timeScale);\n }\n }\n\n // Solve free constraints last.\n for (i = 0; i < constraints.length; i += 1) {\n constraint = constraints[i];\n fixedA = !constraint.bodyA || (constraint.bodyA && constraint.bodyA.isStatic);\n fixedB = !constraint.bodyB || (constraint.bodyB && constraint.bodyB.isStatic);\n\n if (!fixedA && !fixedB) {\n Constraint.solve(constraints[i], timeScale);\n }\n }\n };\n\n /**\n * Solves a distance constraint with Gauss-Siedel method.\n * @private\n * @method solve\n * @param {constraint} constraint\n * @param {number} timeScale\n */\n Constraint.solve = function(constraint, timeScale) {\n var bodyA = constraint.bodyA,\n bodyB = constraint.bodyB,\n pointA = constraint.pointA,\n pointB = constraint.pointB;\n\n if (!bodyA && !bodyB)\n return;\n\n // update reference angle\n if (bodyA && !bodyA.isStatic) {\n Vector.rotate(pointA, bodyA.angle - constraint.angleA, pointA);\n constraint.angleA = bodyA.angle;\n }\n \n // update reference angle\n if (bodyB && !bodyB.isStatic) {\n Vector.rotate(pointB, bodyB.angle - constraint.angleB, pointB);\n constraint.angleB = bodyB.angle;\n }\n\n var pointAWorld = pointA,\n pointBWorld = pointB;\n\n if (bodyA) pointAWorld = Vector.add(bodyA.position, pointA);\n if (bodyB) pointBWorld = Vector.add(bodyB.position, pointB);\n\n if (!pointAWorld || !pointBWorld)\n return;\n\n var delta = Vector.sub(pointAWorld, pointBWorld),\n currentLength = Vector.magnitude(delta);\n\n // prevent singularity\n if (currentLength < Constraint._minLength) {\n currentLength = Constraint._minLength;\n }\n\n // solve distance constraint with Gauss-Siedel method\n var difference = (currentLength - constraint.length) / currentLength,\n isRigid = constraint.stiffness >= 1 || constraint.length === 0,\n stiffness = isRigid ? constraint.stiffness * timeScale \n : constraint.stiffness * timeScale * timeScale,\n damping = constraint.damping * timeScale,\n force = Vector.mult(delta, difference * stiffness),\n massTotal = (bodyA ? bodyA.inverseMass : 0) + (bodyB ? bodyB.inverseMass : 0),\n inertiaTotal = (bodyA ? bodyA.inverseInertia : 0) + (bodyB ? bodyB.inverseInertia : 0),\n resistanceTotal = massTotal + inertiaTotal,\n torque,\n share,\n normal,\n normalVelocity,\n relativeVelocity;\n \n if (damping > 0) {\n var zero = Vector.create();\n normal = Vector.div(delta, currentLength);\n\n relativeVelocity = Vector.sub(\n bodyB && Vector.sub(bodyB.position, bodyB.positionPrev) || zero,\n bodyA && Vector.sub(bodyA.position, bodyA.positionPrev) || zero\n );\n\n normalVelocity = Vector.dot(normal, relativeVelocity);\n }\n\n if (bodyA && !bodyA.isStatic) {\n share = bodyA.inverseMass / massTotal;\n\n // keep track of applied impulses for post solving\n bodyA.constraintImpulse.x -= force.x * share;\n bodyA.constraintImpulse.y -= force.y * share;\n\n // apply forces\n bodyA.position.x -= force.x * share;\n bodyA.position.y -= force.y * share;\n\n // apply damping\n if (damping > 0) {\n bodyA.positionPrev.x -= damping * normal.x * normalVelocity * share;\n bodyA.positionPrev.y -= damping * normal.y * normalVelocity * share;\n }\n\n // apply torque\n torque = (Vector.cross(pointA, force) / resistanceTotal) * Constraint._torqueDampen * bodyA.inverseInertia * (1 - constraint.angularStiffness);\n bodyA.constraintImpulse.angle -= torque;\n bodyA.angle -= torque;\n }\n\n if (bodyB && !bodyB.isStatic) {\n share = bodyB.inverseMass / massTotal;\n\n // keep track of applied impulses for post solving\n bodyB.constraintImpulse.x += force.x * share;\n bodyB.constraintImpulse.y += force.y * share;\n \n // apply forces\n bodyB.position.x += force.x * share;\n bodyB.position.y += force.y * share;\n\n // apply damping\n if (damping > 0) {\n bodyB.positionPrev.x += damping * normal.x * normalVelocity * share;\n bodyB.positionPrev.y += damping * normal.y * normalVelocity * share;\n }\n\n // apply torque\n torque = (Vector.cross(pointB, force) / resistanceTotal) * Constraint._torqueDampen * bodyB.inverseInertia * (1 - constraint.angularStiffness);\n bodyB.constraintImpulse.angle += torque;\n bodyB.angle += torque;\n }\n\n };\n\n /**\n * Performs body updates required after solving constraints.\n * @private\n * @method postSolveAll\n * @param {body[]} bodies\n */\n Constraint.postSolveAll = function(bodies) {\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i],\n impulse = body.constraintImpulse;\n\n if (body.isStatic || (impulse.x === 0 && impulse.y === 0 && impulse.angle === 0)) {\n continue;\n }\n\n Sleeping.set(body, false);\n\n // update geometry and reset\n for (var j = 0; j < body.parts.length; j++) {\n var part = body.parts[j];\n \n Vertices.translate(part.vertices, impulse);\n\n if (j > 0) {\n part.position.x += impulse.x;\n part.position.y += impulse.y;\n }\n\n if (impulse.angle !== 0) {\n Vertices.rotate(part.vertices, impulse.angle, body.position);\n Axes.rotate(part.axes, impulse.angle);\n if (j > 0) {\n Vector.rotateAbout(part.position, impulse.angle, body.position, part.position);\n }\n }\n\n Bounds.update(part.bounds, part.vertices, body.velocity);\n }\n\n // dampen the cached impulse for warming next step\n impulse.angle *= Constraint._warming;\n impulse.x *= Constraint._warming;\n impulse.y *= Constraint._warming;\n }\n };\n\n /**\n * Returns the world-space position of `constraint.pointA`, accounting for `constraint.bodyA`.\n * @method pointAWorld\n * @param {constraint} constraint\n * @returns {vector} the world-space position\n */\n Constraint.pointAWorld = function(constraint) {\n return {\n x: (constraint.bodyA ? constraint.bodyA.position.x : 0) \n + (constraint.pointA ? constraint.pointA.x : 0),\n y: (constraint.bodyA ? constraint.bodyA.position.y : 0) \n + (constraint.pointA ? constraint.pointA.y : 0)\n };\n };\n\n /**\n * Returns the world-space position of `constraint.pointB`, accounting for `constraint.bodyB`.\n * @method pointBWorld\n * @param {constraint} constraint\n * @returns {vector} the world-space position\n */\n Constraint.pointBWorld = function(constraint) {\n return {\n x: (constraint.bodyB ? constraint.bodyB.position.x : 0) \n + (constraint.pointB ? constraint.pointB.x : 0),\n y: (constraint.bodyB ? constraint.bodyB.position.y : 0) \n + (constraint.pointB ? constraint.pointB.y : 0)\n };\n };\n\n /**\n * Returns the current length of the constraint. \n * This is the distance between both of the constraint's end points.\n * See `constraint.length` for the target rest length.\n * @method currentLength\n * @param {constraint} constraint\n * @returns {number} the current length\n */\n Constraint.currentLength = function(constraint) {\n var pointAX = (constraint.bodyA ? constraint.bodyA.position.x : 0) \n + (constraint.pointA ? constraint.pointA.x : 0);\n\n var pointAY = (constraint.bodyA ? constraint.bodyA.position.y : 0) \n + (constraint.pointA ? constraint.pointA.y : 0);\n\n var pointBX = (constraint.bodyB ? constraint.bodyB.position.x : 0) \n + (constraint.pointB ? constraint.pointB.x : 0);\n \n var pointBY = (constraint.bodyB ? constraint.bodyB.position.y : 0) \n + (constraint.pointB ? constraint.pointB.y : 0);\n\n var deltaX = pointAX - pointBX;\n var deltaY = pointAY - pointBY;\n\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n };\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * An integer `Number` uniquely identifying number generated in `Composite.create` by `Common.nextId`.\n *\n * @property id\n * @type number\n */\n\n /**\n * A `String` denoting the type of object.\n *\n * @property type\n * @type string\n * @default \"constraint\"\n * @readOnly\n */\n\n /**\n * An arbitrary `String` name to help the user identify and manage bodies.\n *\n * @property label\n * @type string\n * @default \"Constraint\"\n */\n\n /**\n * An `Object` that defines the rendering properties to be consumed by the module `Matter.Render`.\n *\n * @property render\n * @type object\n */\n\n /**\n * A flag that indicates if the constraint should be rendered.\n *\n * @property render.visible\n * @type boolean\n * @default true\n */\n\n /**\n * A `Number` that defines the line width to use when rendering the constraint outline.\n * A value of `0` means no outline will be rendered.\n *\n * @property render.lineWidth\n * @type number\n * @default 2\n */\n\n /**\n * A `String` that defines the stroke style to use when rendering the constraint outline.\n * It is the same as when using a canvas, so it accepts CSS style property values.\n *\n * @property render.strokeStyle\n * @type string\n * @default a random colour\n */\n\n /**\n * A `String` that defines the constraint rendering type. \n * The possible values are 'line', 'pin', 'spring'.\n * An appropriate render type will be automatically chosen unless one is given in options.\n *\n * @property render.type\n * @type string\n * @default 'line'\n */\n\n /**\n * A `Boolean` that defines if the constraint's anchor points should be rendered.\n *\n * @property render.anchors\n * @type boolean\n * @default true\n */\n\n /**\n * The first possible `Body` that this constraint is attached to.\n *\n * @property bodyA\n * @type body\n * @default null\n */\n\n /**\n * The second possible `Body` that this constraint is attached to.\n *\n * @property bodyB\n * @type body\n * @default null\n */\n\n /**\n * A `Vector` that specifies the offset of the constraint from center of the `constraint.bodyA` if defined, otherwise a world-space position.\n *\n * @property pointA\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * A `Vector` that specifies the offset of the constraint from center of the `constraint.bodyB` if defined, otherwise a world-space position.\n *\n * @property pointB\n * @type vector\n * @default { x: 0, y: 0 }\n */\n\n /**\n * A `Number` that specifies the stiffness of the constraint, i.e. the rate at which it returns to its resting `constraint.length`.\n * A value of `1` means the constraint should be very stiff.\n * A value of `0.2` means the constraint acts like a soft spring.\n *\n * @property stiffness\n * @type number\n * @default 1\n */\n\n /**\n * A `Number` that specifies the damping of the constraint, \n * i.e. the amount of resistance applied to each body based on their velocities to limit the amount of oscillation.\n * Damping will only be apparent when the constraint also has a very low `stiffness`.\n * A value of `0.1` means the constraint will apply heavy damping, resulting in little to no oscillation.\n * A value of `0` means the constraint will apply no damping.\n *\n * @property damping\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that specifies the target resting length of the constraint. \n * It is calculated automatically in `Constraint.create` from initial positions of the `constraint.bodyA` and `constraint.bodyB`.\n *\n * @property length\n * @type number\n */\n\n /**\n * An object reserved for storing plugin-specific properties.\n *\n * @property plugin\n * @type {}\n */\n\n})();\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Axes` module contains methods for creating and manipulating sets of axes.\n*\n* @class Axes\n*/\n\nvar Axes = {};\n\nmodule.exports = Axes;\n\nvar Vector = __webpack_require__(2);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * Creates a new set of axes from the given vertices.\n * @method fromVertices\n * @param {vertices} vertices\n * @return {axes} A new axes from the given vertices\n */\n Axes.fromVertices = function(vertices) {\n var axes = {};\n\n // find the unique axes, using edge normal gradients\n for (var i = 0; i < vertices.length; i++) {\n var j = (i + 1) % vertices.length, \n normal = Vector.normalise({ \n x: vertices[j].y - vertices[i].y, \n y: vertices[i].x - vertices[j].x\n }),\n gradient = (normal.y === 0) ? Infinity : (normal.x / normal.y);\n \n // limit precision\n gradient = gradient.toFixed(3).toString();\n axes[gradient] = normal;\n }\n\n return Common.values(axes);\n };\n\n /**\n * Rotates a set of axes by the given angle.\n * @method rotate\n * @param {axes} axes\n * @param {number} angle\n */\n Axes.rotate = function(axes, angle) {\n if (angle === 0)\n return;\n \n var cos = Math.cos(angle),\n sin = Math.sin(angle);\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i],\n xx;\n xx = axis.x * cos - axis.y * sin;\n axis.y = axis.x * sin + axis.y * cos;\n axis.x = xx;\n }\n };\n\n})();\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Bodies` module contains factory methods for creating rigid body models \n* with commonly used body configurations (such as rectangles, circles and other polygons).\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Bodies\n*/\n\n// TODO: true circle bodies\n\nvar Bodies = {};\n\nmodule.exports = Bodies;\n\nvar Vertices = __webpack_require__(3);\nvar Common = __webpack_require__(0);\nvar Body = __webpack_require__(4);\nvar Bounds = __webpack_require__(1);\nvar Vector = __webpack_require__(2);\n\n(function() {\n\n /**\n * Creates a new rigid body model with a rectangle hull. \n * The options parameter is an object that specifies any properties you wish to override the defaults.\n * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n * @method rectangle\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {object} [options]\n * @return {body} A new rectangle body\n */\n Bodies.rectangle = function(x, y, width, height, options) {\n options = options || {};\n\n var rectangle = { \n label: 'Rectangle Body',\n position: { x: x, y: y },\n vertices: Vertices.fromPath('L 0 0 L ' + width + ' 0 L ' + width + ' ' + height + ' L 0 ' + height)\n };\n\n if (options.chamfer) {\n var chamfer = options.chamfer;\n rectangle.vertices = Vertices.chamfer(rectangle.vertices, chamfer.radius, \n chamfer.quality, chamfer.qualityMin, chamfer.qualityMax);\n delete options.chamfer;\n }\n\n return Body.create(Common.extend({}, rectangle, options));\n };\n \n /**\n * Creates a new rigid body model with a trapezoid hull. \n * The `slope` is parameterised as a fraction of `width` and must be < 1 to form a valid trapezoid. \n * The options parameter is an object that specifies any properties you wish to override the defaults.\n * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n * @method trapezoid\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {number} slope Must be a number < 1.\n * @param {object} [options]\n * @return {body} A new trapezoid body\n */\n Bodies.trapezoid = function(x, y, width, height, slope, options) {\n options = options || {};\n\n if (slope >= 1) {\n Common.warn('Bodies.trapezoid: slope parameter must be < 1.');\n }\n\n slope *= 0.5;\n var roof = (1 - (slope * 2)) * width;\n \n var x1 = width * slope,\n x2 = x1 + roof,\n x3 = x2 + x1,\n verticesPath;\n\n if (slope < 0.5) {\n verticesPath = 'L 0 0 L ' + x1 + ' ' + (-height) + ' L ' + x2 + ' ' + (-height) + ' L ' + x3 + ' 0';\n } else {\n verticesPath = 'L 0 0 L ' + x2 + ' ' + (-height) + ' L ' + x3 + ' 0';\n }\n\n var trapezoid = { \n label: 'Trapezoid Body',\n position: { x: x, y: y },\n vertices: Vertices.fromPath(verticesPath)\n };\n\n if (options.chamfer) {\n var chamfer = options.chamfer;\n trapezoid.vertices = Vertices.chamfer(trapezoid.vertices, chamfer.radius, \n chamfer.quality, chamfer.qualityMin, chamfer.qualityMax);\n delete options.chamfer;\n }\n\n return Body.create(Common.extend({}, trapezoid, options));\n };\n\n /**\n * Creates a new rigid body model with a circle hull. \n * The options parameter is an object that specifies any properties you wish to override the defaults.\n * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n * @method circle\n * @param {number} x\n * @param {number} y\n * @param {number} radius\n * @param {object} [options]\n * @param {number} [maxSides]\n * @return {body} A new circle body\n */\n Bodies.circle = function(x, y, radius, options, maxSides) {\n options = options || {};\n\n var circle = {\n label: 'Circle Body',\n circleRadius: radius\n };\n \n // approximate circles with polygons until true circles implemented in SAT\n maxSides = maxSides || 25;\n var sides = Math.ceil(Math.max(10, Math.min(maxSides, radius)));\n\n // optimisation: always use even number of sides (half the number of unique axes)\n if (sides % 2 === 1)\n sides += 1;\n\n return Bodies.polygon(x, y, sides, radius, Common.extend({}, circle, options));\n };\n\n /**\n * Creates a new rigid body model with a regular polygon hull with the given number of sides. \n * The options parameter is an object that specifies any properties you wish to override the defaults.\n * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n * @method polygon\n * @param {number} x\n * @param {number} y\n * @param {number} sides\n * @param {number} radius\n * @param {object} [options]\n * @return {body} A new regular polygon body\n */\n Bodies.polygon = function(x, y, sides, radius, options) {\n options = options || {};\n\n if (sides < 3)\n return Bodies.circle(x, y, radius, options);\n\n var theta = 2 * Math.PI / sides,\n path = '',\n offset = theta * 0.5;\n\n for (var i = 0; i < sides; i += 1) {\n var angle = offset + (i * theta),\n xx = Math.cos(angle) * radius,\n yy = Math.sin(angle) * radius;\n\n path += 'L ' + xx.toFixed(3) + ' ' + yy.toFixed(3) + ' ';\n }\n\n var polygon = { \n label: 'Polygon Body',\n position: { x: x, y: y },\n vertices: Vertices.fromPath(path)\n };\n\n if (options.chamfer) {\n var chamfer = options.chamfer;\n polygon.vertices = Vertices.chamfer(polygon.vertices, chamfer.radius, \n chamfer.quality, chamfer.qualityMin, chamfer.qualityMax);\n delete options.chamfer;\n }\n\n return Body.create(Common.extend({}, polygon, options));\n };\n\n /**\n * Utility to create a compound body based on set(s) of vertices.\n * \n * _Note:_ To optionally enable automatic concave vertices decomposition the [poly-decomp](https://github.com/schteppe/poly-decomp.js) \n * package must be first installed and provided see `Common.setDecomp`, otherwise the convex hull of each vertex set will be used.\n * \n * The resulting vertices are reorientated about their centre of mass,\n * and offset such that `body.position` corresponds to this point.\n * \n * The resulting offset may be found if needed by subtracting `body.bounds` from the original input bounds.\n * To later move the centre of mass see `Body.setCentre`.\n * \n * Note that automatic conconcave decomposition results are not always optimal. \n * For best results, simplify the input vertices as much as possible first.\n * By default this function applies some addtional simplification to help.\n * \n * Some outputs may also require further manual processing afterwards to be robust.\n * In particular some parts may need to be overlapped to avoid collision gaps.\n * Thin parts and sharp points should be avoided or removed where possible.\n *\n * The options parameter object specifies any `Matter.Body` properties you wish to override the defaults.\n * \n * See the properties section of the `Matter.Body` module for detailed information on what you can pass via the `options` object.\n * @method fromVertices\n * @param {number} x\n * @param {number} y\n * @param {array} vertexSets One or more arrays of vertex points e.g. `[[{ x: 0, y: 0 }...], ...]`.\n * @param {object} [options] The body options.\n * @param {bool} [flagInternal=false] Optionally marks internal edges with `isInternal`.\n * @param {number} [removeCollinear=0.01] Threshold when simplifying vertices along the same edge.\n * @param {number} [minimumArea=10] Threshold when removing small parts.\n * @param {number} [removeDuplicatePoints=0.01] Threshold when simplifying nearby vertices.\n * @return {body}\n */\n Bodies.fromVertices = function(x, y, vertexSets, options, flagInternal, removeCollinear, minimumArea, removeDuplicatePoints) {\n var decomp = Common.getDecomp(),\n canDecomp,\n body,\n parts,\n isConvex,\n isConcave,\n vertices,\n i,\n j,\n k,\n v,\n z;\n\n // check decomp is as expected\n canDecomp = Boolean(decomp && decomp.quickDecomp);\n\n options = options || {};\n parts = [];\n\n flagInternal = typeof flagInternal !== 'undefined' ? flagInternal : false;\n removeCollinear = typeof removeCollinear !== 'undefined' ? removeCollinear : 0.01;\n minimumArea = typeof minimumArea !== 'undefined' ? minimumArea : 10;\n removeDuplicatePoints = typeof removeDuplicatePoints !== 'undefined' ? removeDuplicatePoints : 0.01;\n\n // ensure vertexSets is an array of arrays\n if (!Common.isArray(vertexSets[0])) {\n vertexSets = [vertexSets];\n }\n\n for (v = 0; v < vertexSets.length; v += 1) {\n vertices = vertexSets[v];\n isConvex = Vertices.isConvex(vertices);\n isConcave = !isConvex;\n\n if (isConcave && !canDecomp) {\n Common.warnOnce(\n 'Bodies.fromVertices: Install the \\'poly-decomp\\' library and use Common.setDecomp or provide \\'decomp\\' as a global to decompose concave vertices.'\n );\n }\n\n if (isConvex || !canDecomp) {\n if (isConvex) {\n vertices = Vertices.clockwiseSort(vertices);\n } else {\n // fallback to convex hull when decomposition is not possible\n vertices = Vertices.hull(vertices);\n }\n\n parts.push({\n position: { x: x, y: y },\n vertices: vertices\n });\n } else {\n // initialise a decomposition\n var concave = vertices.map(function(vertex) {\n return [vertex.x, vertex.y];\n });\n\n // vertices are concave and simple, we can decompose into parts\n decomp.makeCCW(concave);\n if (removeCollinear !== false)\n decomp.removeCollinearPoints(concave, removeCollinear);\n if (removeDuplicatePoints !== false && decomp.removeDuplicatePoints)\n decomp.removeDuplicatePoints(concave, removeDuplicatePoints);\n\n // use the quick decomposition algorithm (Bayazit)\n var decomposed = decomp.quickDecomp(concave);\n\n // for each decomposed chunk\n for (i = 0; i < decomposed.length; i++) {\n var chunk = decomposed[i];\n\n // convert vertices into the correct structure\n var chunkVertices = chunk.map(function(vertices) {\n return {\n x: vertices[0],\n y: vertices[1]\n };\n });\n\n // skip small chunks\n if (minimumArea > 0 && Vertices.area(chunkVertices) < minimumArea)\n continue;\n\n // create a compound part\n parts.push({\n position: Vertices.centre(chunkVertices),\n vertices: chunkVertices\n });\n }\n }\n }\n\n // create body parts\n for (i = 0; i < parts.length; i++) {\n parts[i] = Body.create(Common.extend(parts[i], options));\n }\n\n // flag internal edges (coincident part edges)\n if (flagInternal) {\n var coincident_max_dist = 5;\n\n for (i = 0; i < parts.length; i++) {\n var partA = parts[i];\n\n for (j = i + 1; j < parts.length; j++) {\n var partB = parts[j];\n\n if (Bounds.overlaps(partA.bounds, partB.bounds)) {\n var pav = partA.vertices,\n pbv = partB.vertices;\n\n // iterate vertices of both parts\n for (k = 0; k < partA.vertices.length; k++) {\n for (z = 0; z < partB.vertices.length; z++) {\n // find distances between the vertices\n var da = Vector.magnitudeSquared(Vector.sub(pav[(k + 1) % pav.length], pbv[z])),\n db = Vector.magnitudeSquared(Vector.sub(pav[k], pbv[(z + 1) % pbv.length]));\n\n // if both vertices are very close, consider the edge concident (internal)\n if (da < coincident_max_dist && db < coincident_max_dist) {\n pav[k].isInternal = true;\n pbv[z].isInternal = true;\n }\n }\n }\n\n }\n }\n }\n }\n\n if (parts.length > 1) {\n // create the parent body to be returned, that contains generated compound parts\n body = Body.create(Common.extend({ parts: parts.slice(0) }, options));\n\n // offset such that body.position is at the centre off mass\n Body.setPosition(body, { x: x, y: y });\n\n return body;\n } else {\n return parts[0];\n }\n };\n\n})();\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Detector` module contains methods for efficiently detecting collisions between a list of bodies using a broadphase algorithm.\n*\n* @class Detector\n*/\n\nvar Detector = {};\n\nmodule.exports = Detector;\n\nvar Common = __webpack_require__(0);\nvar Collision = __webpack_require__(8);\n\n(function() {\n\n /**\n * Creates a new collision detector.\n * @method create\n * @param {} options\n * @return {detector} A new collision detector\n */\n Detector.create = function(options) {\n var defaults = {\n bodies: [],\n collisions: [],\n pairs: null\n };\n\n return Common.extend(defaults, options);\n };\n\n /**\n * Sets the list of bodies in the detector.\n * @method setBodies\n * @param {detector} detector\n * @param {body[]} bodies\n */\n Detector.setBodies = function(detector, bodies) {\n detector.bodies = bodies.slice(0);\n };\n\n /**\n * Clears the detector including its list of bodies.\n * @method clear\n * @param {detector} detector\n */\n Detector.clear = function(detector) {\n detector.bodies = [];\n detector.collisions = [];\n };\n\n /**\n * Efficiently finds all collisions among all the bodies in `detector.bodies` using a broadphase algorithm.\n * \n * _Note:_ The specific ordering of collisions returned is not guaranteed between releases and may change for performance reasons.\n * If a specific ordering is required then apply a sort to the resulting array.\n * @method collisions\n * @param {detector} detector\n * @return {collision[]} collisions\n */\n Detector.collisions = function(detector) {\n var pairs = detector.pairs,\n bodies = detector.bodies,\n bodiesLength = bodies.length,\n canCollide = Detector.canCollide,\n collides = Collision.collides,\n collisions = detector.collisions,\n collisionIndex = 0,\n i,\n j;\n\n bodies.sort(Detector._compareBoundsX);\n\n for (i = 0; i < bodiesLength; i++) {\n var bodyA = bodies[i],\n boundsA = bodyA.bounds,\n boundXMax = bodyA.bounds.max.x,\n boundYMax = bodyA.bounds.max.y,\n boundYMin = bodyA.bounds.min.y,\n bodyAStatic = bodyA.isStatic || bodyA.isSleeping,\n partsALength = bodyA.parts.length,\n partsASingle = partsALength === 1;\n\n for (j = i + 1; j < bodiesLength; j++) {\n var bodyB = bodies[j],\n boundsB = bodyB.bounds;\n\n if (boundsB.min.x > boundXMax) {\n break;\n }\n\n if (boundYMax < boundsB.min.y || boundYMin > boundsB.max.y) {\n continue;\n }\n\n if (bodyAStatic && (bodyB.isStatic || bodyB.isSleeping)) {\n continue;\n }\n\n if (!canCollide(bodyA.collisionFilter, bodyB.collisionFilter)) {\n continue;\n }\n\n var partsBLength = bodyB.parts.length;\n\n if (partsASingle && partsBLength === 1) {\n var collision = collides(bodyA, bodyB, pairs);\n\n if (collision) {\n collisions[collisionIndex++] = collision;\n }\n } else {\n var partsAStart = partsALength > 1 ? 1 : 0,\n partsBStart = partsBLength > 1 ? 1 : 0;\n \n for (var k = partsAStart; k < partsALength; k++) {\n var partA = bodyA.parts[k],\n boundsA = partA.bounds;\n\n for (var z = partsBStart; z < partsBLength; z++) {\n var partB = bodyB.parts[z],\n boundsB = partB.bounds;\n\n if (boundsA.min.x > boundsB.max.x || boundsA.max.x < boundsB.min.x\n || boundsA.max.y < boundsB.min.y || boundsA.min.y > boundsB.max.y) {\n continue;\n }\n\n var collision = collides(partA, partB, pairs);\n\n if (collision) {\n collisions[collisionIndex++] = collision;\n }\n }\n }\n }\n }\n }\n\n if (collisions.length !== collisionIndex) {\n collisions.length = collisionIndex;\n }\n\n return collisions;\n };\n\n /**\n * Returns `true` if both supplied collision filters will allow a collision to occur.\n * See `body.collisionFilter` for more information.\n * @method canCollide\n * @param {} filterA\n * @param {} filterB\n * @return {bool} `true` if collision can occur\n */\n Detector.canCollide = function(filterA, filterB) {\n if (filterA.group === filterB.group && filterA.group !== 0)\n return filterA.group > 0;\n\n return (filterA.mask & filterB.category) !== 0 && (filterB.mask & filterA.category) !== 0;\n };\n\n /**\n * The comparison function used in the broadphase algorithm.\n * Returns the signed delta of the bodies bounds on the x-axis.\n * @private\n * @method _sortCompare\n * @param {body} bodyA\n * @param {body} bodyB\n * @return {number} The signed delta used for sorting\n */\n Detector._compareBoundsX = function(bodyA, bodyB) {\n return bodyA.bounds.min.x - bodyB.bounds.min.x;\n };\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * The array of `Matter.Body` between which the detector finds collisions.\n * \n * _Note:_ The order of bodies in this array _is not fixed_ and will be continually managed by the detector.\n * @property bodies\n * @type body[]\n * @default []\n */\n\n /**\n * The array of `Matter.Collision` found in the last call to `Detector.collisions` on this detector.\n * @property collisions\n * @type collision[]\n * @default []\n */\n\n /**\n * Optional. A `Matter.Pairs` object from which previous collision objects may be reused. Intended for internal `Matter.Engine` usage.\n * @property pairs\n * @type {pairs|null}\n * @default null\n */\n\n})();\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Mouse` module contains methods for creating and manipulating mouse inputs.\n*\n* @class Mouse\n*/\n\nvar Mouse = {};\n\nmodule.exports = Mouse;\n\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * Creates a mouse input.\n * @method create\n * @param {HTMLElement} element\n * @return {mouse} A new mouse\n */\n Mouse.create = function(element) {\n var mouse = {};\n\n if (!element) {\n Common.log('Mouse.create: element was undefined, defaulting to document.body', 'warn');\n }\n \n mouse.element = element || document.body;\n mouse.absolute = { x: 0, y: 0 };\n mouse.position = { x: 0, y: 0 };\n mouse.mousedownPosition = { x: 0, y: 0 };\n mouse.mouseupPosition = { x: 0, y: 0 };\n mouse.offset = { x: 0, y: 0 };\n mouse.scale = { x: 1, y: 1 };\n mouse.wheelDelta = 0;\n mouse.button = -1;\n mouse.pixelRatio = parseInt(mouse.element.getAttribute('data-pixel-ratio'), 10) || 1;\n\n mouse.sourceEvents = {\n mousemove: null,\n mousedown: null,\n mouseup: null,\n mousewheel: null\n };\n \n mouse.mousemove = function(event) { \n var position = Mouse._getRelativeMousePosition(event, mouse.element, mouse.pixelRatio),\n touches = event.changedTouches;\n\n if (touches) {\n mouse.button = 0;\n event.preventDefault();\n }\n\n mouse.absolute.x = position.x;\n mouse.absolute.y = position.y;\n mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n mouse.sourceEvents.mousemove = event;\n };\n \n mouse.mousedown = function(event) {\n var position = Mouse._getRelativeMousePosition(event, mouse.element, mouse.pixelRatio),\n touches = event.changedTouches;\n\n if (touches) {\n mouse.button = 0;\n event.preventDefault();\n } else {\n mouse.button = event.button;\n }\n\n mouse.absolute.x = position.x;\n mouse.absolute.y = position.y;\n mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n mouse.mousedownPosition.x = mouse.position.x;\n mouse.mousedownPosition.y = mouse.position.y;\n mouse.sourceEvents.mousedown = event;\n };\n \n mouse.mouseup = function(event) {\n var position = Mouse._getRelativeMousePosition(event, mouse.element, mouse.pixelRatio),\n touches = event.changedTouches;\n\n if (touches) {\n event.preventDefault();\n }\n \n mouse.button = -1;\n mouse.absolute.x = position.x;\n mouse.absolute.y = position.y;\n mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n mouse.mouseupPosition.x = mouse.position.x;\n mouse.mouseupPosition.y = mouse.position.y;\n mouse.sourceEvents.mouseup = event;\n };\n\n mouse.mousewheel = function(event) {\n mouse.wheelDelta = Math.max(-1, Math.min(1, event.wheelDelta || -event.detail));\n event.preventDefault();\n mouse.sourceEvents.mousewheel = event;\n };\n\n Mouse.setElement(mouse, mouse.element);\n\n return mouse;\n };\n\n /**\n * Sets the element the mouse is bound to (and relative to).\n * @method setElement\n * @param {mouse} mouse\n * @param {HTMLElement} element\n */\n Mouse.setElement = function(mouse, element) {\n mouse.element = element;\n\n element.addEventListener('mousemove', mouse.mousemove, { passive: true });\n element.addEventListener('mousedown', mouse.mousedown, { passive: true });\n element.addEventListener('mouseup', mouse.mouseup, { passive: true });\n \n element.addEventListener('wheel', mouse.mousewheel, { passive: false });\n \n element.addEventListener('touchmove', mouse.mousemove, { passive: false });\n element.addEventListener('touchstart', mouse.mousedown, { passive: false });\n element.addEventListener('touchend', mouse.mouseup, { passive: false });\n };\n\n /**\n * Clears all captured source events.\n * @method clearSourceEvents\n * @param {mouse} mouse\n */\n Mouse.clearSourceEvents = function(mouse) {\n mouse.sourceEvents.mousemove = null;\n mouse.sourceEvents.mousedown = null;\n mouse.sourceEvents.mouseup = null;\n mouse.sourceEvents.mousewheel = null;\n mouse.wheelDelta = 0;\n };\n\n /**\n * Sets the mouse position offset.\n * @method setOffset\n * @param {mouse} mouse\n * @param {vector} offset\n */\n Mouse.setOffset = function(mouse, offset) {\n mouse.offset.x = offset.x;\n mouse.offset.y = offset.y;\n mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n };\n\n /**\n * Sets the mouse position scale.\n * @method setScale\n * @param {mouse} mouse\n * @param {vector} scale\n */\n Mouse.setScale = function(mouse, scale) {\n mouse.scale.x = scale.x;\n mouse.scale.y = scale.y;\n mouse.position.x = mouse.absolute.x * mouse.scale.x + mouse.offset.x;\n mouse.position.y = mouse.absolute.y * mouse.scale.y + mouse.offset.y;\n };\n \n /**\n * Gets the mouse position relative to an element given a screen pixel ratio.\n * @method _getRelativeMousePosition\n * @private\n * @param {} event\n * @param {} element\n * @param {number} pixelRatio\n * @return {}\n */\n Mouse._getRelativeMousePosition = function(event, element, pixelRatio) {\n var elementBounds = element.getBoundingClientRect(),\n rootNode = (document.documentElement || document.body.parentNode || document.body),\n scrollX = (window.pageXOffset !== undefined) ? window.pageXOffset : rootNode.scrollLeft,\n scrollY = (window.pageYOffset !== undefined) ? window.pageYOffset : rootNode.scrollTop,\n touches = event.changedTouches,\n x, y;\n \n if (touches) {\n x = touches[0].pageX - elementBounds.left - scrollX;\n y = touches[0].pageY - elementBounds.top - scrollY;\n } else {\n x = event.pageX - elementBounds.left - scrollX;\n y = event.pageY - elementBounds.top - scrollY;\n }\n\n return { \n x: x / (element.clientWidth / (element.width || element.clientWidth) * pixelRatio),\n y: y / (element.clientHeight / (element.height || element.clientHeight) * pixelRatio)\n };\n };\n\n})();\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Plugin` module contains functions for registering and installing plugins on modules.\n*\n* @class Plugin\n*/\n\nvar Plugin = {};\n\nmodule.exports = Plugin;\n\nvar Common = __webpack_require__(0);\n\n(function() {\n\n Plugin._registry = {};\n\n /**\n * Registers a plugin object so it can be resolved later by name.\n * @method register\n * @param plugin {} The plugin to register.\n * @return {object} The plugin.\n */\n Plugin.register = function(plugin) {\n if (!Plugin.isPlugin(plugin)) {\n Common.warn('Plugin.register:', Plugin.toString(plugin), 'does not implement all required fields.');\n }\n\n if (plugin.name in Plugin._registry) {\n var registered = Plugin._registry[plugin.name],\n pluginVersion = Plugin.versionParse(plugin.version).number,\n registeredVersion = Plugin.versionParse(registered.version).number;\n\n if (pluginVersion > registeredVersion) {\n Common.warn('Plugin.register:', Plugin.toString(registered), 'was upgraded to', Plugin.toString(plugin));\n Plugin._registry[plugin.name] = plugin;\n } else if (pluginVersion < registeredVersion) {\n Common.warn('Plugin.register:', Plugin.toString(registered), 'can not be downgraded to', Plugin.toString(plugin));\n } else if (plugin !== registered) {\n Common.warn('Plugin.register:', Plugin.toString(plugin), 'is already registered to different plugin object');\n }\n } else {\n Plugin._registry[plugin.name] = plugin;\n }\n\n return plugin;\n };\n\n /**\n * Resolves a dependency to a plugin object from the registry if it exists. \n * The `dependency` may contain a version, but only the name matters when resolving.\n * @method resolve\n * @param dependency {string} The dependency.\n * @return {object} The plugin if resolved, otherwise `undefined`.\n */\n Plugin.resolve = function(dependency) {\n return Plugin._registry[Plugin.dependencyParse(dependency).name];\n };\n\n /**\n * Returns a pretty printed plugin name and version.\n * @method toString\n * @param plugin {} The plugin.\n * @return {string} Pretty printed plugin name and version.\n */\n Plugin.toString = function(plugin) {\n return typeof plugin === 'string' ? plugin : (plugin.name || 'anonymous') + '@' + (plugin.version || plugin.range || '0.0.0');\n };\n\n /**\n * Returns `true` if the object meets the minimum standard to be considered a plugin.\n * This means it must define the following properties:\n * - `name`\n * - `version`\n * - `install`\n * @method isPlugin\n * @param obj {} The obj to test.\n * @return {boolean} `true` if the object can be considered a plugin otherwise `false`.\n */\n Plugin.isPlugin = function(obj) {\n return obj && obj.name && obj.version && obj.install;\n };\n\n /**\n * Returns `true` if a plugin with the given `name` been installed on `module`.\n * @method isUsed\n * @param module {} The module.\n * @param name {string} The plugin name.\n * @return {boolean} `true` if a plugin with the given `name` been installed on `module`, otherwise `false`.\n */\n Plugin.isUsed = function(module, name) {\n return module.used.indexOf(name) > -1;\n };\n\n /**\n * Returns `true` if `plugin.for` is applicable to `module` by comparing against `module.name` and `module.version`.\n * If `plugin.for` is not specified then it is assumed to be applicable.\n * The value of `plugin.for` is a string of the format `'module-name'` or `'module-name@version'`.\n * @method isFor\n * @param plugin {} The plugin.\n * @param module {} The module.\n * @return {boolean} `true` if `plugin.for` is applicable to `module`, otherwise `false`.\n */\n Plugin.isFor = function(plugin, module) {\n var parsed = plugin.for && Plugin.dependencyParse(plugin.for);\n return !plugin.for || (module.name === parsed.name && Plugin.versionSatisfies(module.version, parsed.range));\n };\n\n /**\n * Installs the plugins by calling `plugin.install` on each plugin specified in `plugins` if passed, otherwise `module.uses`.\n * For installing plugins on `Matter` see the convenience function `Matter.use`.\n * Plugins may be specified either by their name or a reference to the plugin object.\n * Plugins themselves may specify further dependencies, but each plugin is installed only once.\n * Order is important, a topological sort is performed to find the best resulting order of installation.\n * This sorting attempts to satisfy every dependency's requested ordering, but may not be exact in all cases.\n * This function logs the resulting status of each dependency in the console, along with any warnings.\n * - A green tick ✅ indicates a dependency was resolved and installed.\n * - An orange diamond 🔶 indicates a dependency was resolved but a warning was thrown for it or one if its dependencies.\n * - A red cross ❌ indicates a dependency could not be resolved.\n * Avoid calling this function multiple times on the same module unless you intend to manually control installation order.\n * @method use\n * @param module {} The module install plugins on.\n * @param [plugins=module.uses] {} The plugins to install on module (optional, defaults to `module.uses`).\n */\n Plugin.use = function(module, plugins) {\n module.uses = (module.uses || []).concat(plugins || []);\n\n if (module.uses.length === 0) {\n Common.warn('Plugin.use:', Plugin.toString(module), 'does not specify any dependencies to install.');\n return;\n }\n\n var dependencies = Plugin.dependencies(module),\n sortedDependencies = Common.topologicalSort(dependencies),\n status = [];\n\n for (var i = 0; i < sortedDependencies.length; i += 1) {\n if (sortedDependencies[i] === module.name) {\n continue;\n }\n\n var plugin = Plugin.resolve(sortedDependencies[i]);\n\n if (!plugin) {\n status.push('❌ ' + sortedDependencies[i]);\n continue;\n }\n\n if (Plugin.isUsed(module, plugin.name)) {\n continue;\n }\n\n if (!Plugin.isFor(plugin, module)) {\n Common.warn('Plugin.use:', Plugin.toString(plugin), 'is for', plugin.for, 'but installed on', Plugin.toString(module) + '.');\n plugin._warned = true;\n }\n\n if (plugin.install) {\n plugin.install(module);\n } else {\n Common.warn('Plugin.use:', Plugin.toString(plugin), 'does not specify an install function.');\n plugin._warned = true;\n }\n\n if (plugin._warned) {\n status.push('🔶 ' + Plugin.toString(plugin));\n delete plugin._warned;\n } else {\n status.push('✅ ' + Plugin.toString(plugin));\n }\n\n module.used.push(plugin.name);\n }\n\n if (status.length > 0) {\n Common.info(status.join(' '));\n }\n };\n\n /**\n * Recursively finds all of a module's dependencies and returns a flat dependency graph.\n * @method dependencies\n * @param module {} The module.\n * @return {object} A dependency graph.\n */\n Plugin.dependencies = function(module, tracked) {\n var parsedBase = Plugin.dependencyParse(module),\n name = parsedBase.name;\n\n tracked = tracked || {};\n\n if (name in tracked) {\n return;\n }\n\n module = Plugin.resolve(module) || module;\n\n tracked[name] = Common.map(module.uses || [], function(dependency) {\n if (Plugin.isPlugin(dependency)) {\n Plugin.register(dependency);\n }\n\n var parsed = Plugin.dependencyParse(dependency),\n resolved = Plugin.resolve(dependency);\n\n if (resolved && !Plugin.versionSatisfies(resolved.version, parsed.range)) {\n Common.warn(\n 'Plugin.dependencies:', Plugin.toString(resolved), 'does not satisfy',\n Plugin.toString(parsed), 'used by', Plugin.toString(parsedBase) + '.'\n );\n\n resolved._warned = true;\n module._warned = true;\n } else if (!resolved) {\n Common.warn(\n 'Plugin.dependencies:', Plugin.toString(dependency), 'used by',\n Plugin.toString(parsedBase), 'could not be resolved.'\n );\n\n module._warned = true;\n }\n\n return parsed.name;\n });\n\n for (var i = 0; i < tracked[name].length; i += 1) {\n Plugin.dependencies(tracked[name][i], tracked);\n }\n\n return tracked;\n };\n\n /**\n * Parses a dependency string into its components.\n * The `dependency` is a string of the format `'module-name'` or `'module-name@version'`.\n * See documentation for `Plugin.versionParse` for a description of the format.\n * This function can also handle dependencies that are already resolved (e.g. a module object).\n * @method dependencyParse\n * @param dependency {string} The dependency of the format `'module-name'` or `'module-name@version'`.\n * @return {object} The dependency parsed into its components.\n */\n Plugin.dependencyParse = function(dependency) {\n if (Common.isString(dependency)) {\n var pattern = /^[\\w-]+(@(\\*|[\\^~]?\\d+\\.\\d+\\.\\d+(-[0-9A-Za-z-+]+)?))?$/;\n\n if (!pattern.test(dependency)) {\n Common.warn('Plugin.dependencyParse:', dependency, 'is not a valid dependency string.');\n }\n\n return {\n name: dependency.split('@')[0],\n range: dependency.split('@')[1] || '*'\n };\n }\n\n return {\n name: dependency.name,\n range: dependency.range || dependency.version\n };\n };\n\n /**\n * Parses a version string into its components. \n * Versions are strictly of the format `x.y.z` (as in [semver](http://semver.org/)).\n * Versions may optionally have a prerelease tag in the format `x.y.z-alpha`.\n * Ranges are a strict subset of [npm ranges](https://docs.npmjs.com/misc/semver#advanced-range-syntax).\n * Only the following range types are supported:\n * - Tilde ranges e.g. `~1.2.3`\n * - Caret ranges e.g. `^1.2.3`\n * - Greater than ranges e.g. `>1.2.3`\n * - Greater than or equal ranges e.g. `>=1.2.3`\n * - Exact version e.g. `1.2.3`\n * - Any version `*`\n * @method versionParse\n * @param range {string} The version string.\n * @return {object} The version range parsed into its components.\n */\n Plugin.versionParse = function(range) {\n var pattern = /^(\\*)|(\\^|~|>=|>)?\\s*((\\d+)\\.(\\d+)\\.(\\d+))(-[0-9A-Za-z-+]+)?$/;\n\n if (!pattern.test(range)) {\n Common.warn('Plugin.versionParse:', range, 'is not a valid version or range.');\n }\n\n var parts = pattern.exec(range);\n var major = Number(parts[4]);\n var minor = Number(parts[5]);\n var patch = Number(parts[6]);\n\n return {\n isRange: Boolean(parts[1] || parts[2]),\n version: parts[3],\n range: range,\n operator: parts[1] || parts[2] || '',\n major: major,\n minor: minor,\n patch: patch,\n parts: [major, minor, patch],\n prerelease: parts[7],\n number: major * 1e8 + minor * 1e4 + patch\n };\n };\n\n /**\n * Returns `true` if `version` satisfies the given `range`.\n * See documentation for `Plugin.versionParse` for a description of the format.\n * If a version or range is not specified, then any version (`*`) is assumed to satisfy.\n * @method versionSatisfies\n * @param version {string} The version string.\n * @param range {string} The range string.\n * @return {boolean} `true` if `version` satisfies `range`, otherwise `false`.\n */\n Plugin.versionSatisfies = function(version, range) {\n range = range || '*';\n\n var r = Plugin.versionParse(range),\n v = Plugin.versionParse(version);\n\n if (r.isRange) {\n if (r.operator === '*' || version === '*') {\n return true;\n }\n\n if (r.operator === '>') {\n return v.number > r.number;\n }\n\n if (r.operator === '>=') {\n return v.number >= r.number;\n }\n\n if (r.operator === '~') {\n return v.major === r.major && v.minor === r.minor && v.patch >= r.patch;\n }\n\n if (r.operator === '^') {\n if (r.major > 0) {\n return v.major === r.major && v.number >= r.number;\n }\n\n if (r.minor > 0) {\n return v.minor === r.minor && v.patch >= r.patch;\n }\n\n return v.patch === r.patch;\n }\n }\n\n return version === range || version === '*';\n };\n\n})();\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n/**\n* The `Matter.Contact` module contains methods for creating and manipulating collision contacts.\n*\n* @class Contact\n*/\n\nvar Contact = {};\n\nmodule.exports = Contact;\n\n(function() {\n\n /**\n * Creates a new contact.\n * @method create\n * @param {vertex} [vertex]\n * @return {contact} A new contact\n */\n Contact.create = function(vertex) {\n return {\n vertex: vertex,\n normalImpulse: 0,\n tangentImpulse: 0\n };\n };\n\n})();\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Engine` module contains methods for creating and manipulating engines.\n* An engine is a controller that manages updating the simulation of the world.\n* See `Matter.Runner` for an optional game loop utility.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Engine\n*/\n\nvar Engine = {};\n\nmodule.exports = Engine;\n\nvar Sleeping = __webpack_require__(7);\nvar Resolver = __webpack_require__(18);\nvar Detector = __webpack_require__(13);\nvar Pairs = __webpack_require__(19);\nvar Events = __webpack_require__(5);\nvar Composite = __webpack_require__(6);\nvar Constraint = __webpack_require__(10);\nvar Common = __webpack_require__(0);\nvar Body = __webpack_require__(4);\n\n(function() {\n\n Engine._deltaMax = 1000 / 60;\n\n /**\n * Creates a new engine. The options parameter is an object that specifies any properties you wish to override the defaults.\n * All properties have default values, and many are pre-calculated automatically based on other properties.\n * See the properties section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {object} [options]\n * @return {engine} engine\n */\n Engine.create = function(options) {\n options = options || {};\n\n var defaults = {\n positionIterations: 6,\n velocityIterations: 4,\n constraintIterations: 2,\n enableSleeping: false,\n events: [],\n plugin: {},\n gravity: {\n x: 0,\n y: 1,\n scale: 0.001\n },\n timing: {\n timestamp: 0,\n timeScale: 1,\n lastDelta: 0,\n lastElapsed: 0,\n lastUpdatesPerFrame: 0\n }\n };\n\n var engine = Common.extend(defaults, options);\n\n engine.world = options.world || Composite.create({ label: 'World' });\n engine.pairs = options.pairs || Pairs.create();\n engine.detector = options.detector || Detector.create();\n engine.detector.pairs = engine.pairs;\n\n // for temporary back compatibility only\n engine.grid = { buckets: [] };\n engine.world.gravity = engine.gravity;\n engine.broadphase = engine.grid;\n engine.metrics = {};\n \n return engine;\n };\n\n /**\n * Moves the simulation forward in time by `delta` milliseconds.\n * Triggers `beforeUpdate`, `beforeSolve` and `afterUpdate` events.\n * Triggers `collisionStart`, `collisionActive` and `collisionEnd` events.\n * @method update\n * @param {engine} engine\n * @param {number} [delta=16.666]\n */\n Engine.update = function(engine, delta) {\n var startTime = Common.now();\n\n var world = engine.world,\n detector = engine.detector,\n pairs = engine.pairs,\n timing = engine.timing,\n timestamp = timing.timestamp,\n i;\n\n // warn if high delta\n if (delta > Engine._deltaMax) {\n Common.warnOnce(\n 'Matter.Engine.update: delta argument is recommended to be less than or equal to', Engine._deltaMax.toFixed(3), 'ms.'\n );\n }\n\n delta = typeof delta !== 'undefined' ? delta : Common._baseDelta;\n delta *= timing.timeScale;\n\n // increment timestamp\n timing.timestamp += delta;\n timing.lastDelta = delta;\n\n // create an event object\n var event = {\n timestamp: timing.timestamp,\n delta: delta\n };\n\n Events.trigger(engine, 'beforeUpdate', event);\n\n // get all bodies and all constraints in the world\n var allBodies = Composite.allBodies(world),\n allConstraints = Composite.allConstraints(world);\n\n // if the world has changed\n if (world.isModified) {\n // update the detector bodies\n Detector.setBodies(detector, allBodies);\n\n // reset all composite modified flags\n Composite.setModified(world, false, false, true);\n }\n\n // update sleeping if enabled\n if (engine.enableSleeping)\n Sleeping.update(allBodies, delta);\n\n // apply gravity to all bodies\n Engine._bodiesApplyGravity(allBodies, engine.gravity);\n\n // update all body position and rotation by integration\n if (delta > 0) {\n Engine._bodiesUpdate(allBodies, delta);\n }\n\n Events.trigger(engine, 'beforeSolve', event);\n\n // update all constraints (first pass)\n Constraint.preSolveAll(allBodies);\n for (i = 0; i < engine.constraintIterations; i++) {\n Constraint.solveAll(allConstraints, delta);\n }\n Constraint.postSolveAll(allBodies);\n\n // find all collisions\n var collisions = Detector.collisions(detector);\n\n // update collision pairs\n Pairs.update(pairs, collisions, timestamp);\n\n // wake up bodies involved in collisions\n if (engine.enableSleeping)\n Sleeping.afterCollisions(pairs.list);\n\n // trigger collision events\n if (pairs.collisionStart.length > 0) {\n Events.trigger(engine, 'collisionStart', { \n pairs: pairs.collisionStart,\n timestamp: timing.timestamp,\n delta: delta\n });\n }\n\n // iteratively resolve position between collisions\n var positionDamping = Common.clamp(20 / engine.positionIterations, 0, 1);\n \n Resolver.preSolvePosition(pairs.list);\n for (i = 0; i < engine.positionIterations; i++) {\n Resolver.solvePosition(pairs.list, delta, positionDamping);\n }\n Resolver.postSolvePosition(allBodies);\n\n // update all constraints (second pass)\n Constraint.preSolveAll(allBodies);\n for (i = 0; i < engine.constraintIterations; i++) {\n Constraint.solveAll(allConstraints, delta);\n }\n Constraint.postSolveAll(allBodies);\n\n // iteratively resolve velocity between collisions\n Resolver.preSolveVelocity(pairs.list);\n for (i = 0; i < engine.velocityIterations; i++) {\n Resolver.solveVelocity(pairs.list, delta);\n }\n\n // update body speed and velocity properties\n Engine._bodiesUpdateVelocities(allBodies);\n\n // trigger collision events\n if (pairs.collisionActive.length > 0) {\n Events.trigger(engine, 'collisionActive', { \n pairs: pairs.collisionActive, \n timestamp: timing.timestamp,\n delta: delta\n });\n }\n\n if (pairs.collisionEnd.length > 0) {\n Events.trigger(engine, 'collisionEnd', {\n pairs: pairs.collisionEnd,\n timestamp: timing.timestamp,\n delta: delta\n });\n }\n\n // clear force buffers\n Engine._bodiesClearForces(allBodies);\n\n Events.trigger(engine, 'afterUpdate', event);\n\n // log the time elapsed computing this update\n engine.timing.lastElapsed = Common.now() - startTime;\n\n return engine;\n };\n \n /**\n * Merges two engines by keeping the configuration of `engineA` but replacing the world with the one from `engineB`.\n * @method merge\n * @param {engine} engineA\n * @param {engine} engineB\n */\n Engine.merge = function(engineA, engineB) {\n Common.extend(engineA, engineB);\n \n if (engineB.world) {\n engineA.world = engineB.world;\n\n Engine.clear(engineA);\n\n var bodies = Composite.allBodies(engineA.world);\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i];\n Sleeping.set(body, false);\n body.id = Common.nextId();\n }\n }\n };\n\n /**\n * Clears the engine pairs and detector.\n * @method clear\n * @param {engine} engine\n */\n Engine.clear = function(engine) {\n Pairs.clear(engine.pairs);\n Detector.clear(engine.detector);\n };\n\n /**\n * Zeroes the `body.force` and `body.torque` force buffers.\n * @method _bodiesClearForces\n * @private\n * @param {body[]} bodies\n */\n Engine._bodiesClearForces = function(bodies) {\n var bodiesLength = bodies.length;\n\n for (var i = 0; i < bodiesLength; i++) {\n var body = bodies[i];\n\n // reset force buffers\n body.force.x = 0;\n body.force.y = 0;\n body.torque = 0;\n }\n };\n\n /**\n * Applies gravitational acceleration to all `bodies`.\n * This models a [uniform gravitational field](https://en.wikipedia.org/wiki/Gravity_of_Earth), similar to near the surface of a planet.\n * \n * @method _bodiesApplyGravity\n * @private\n * @param {body[]} bodies\n * @param {vector} gravity\n */\n Engine._bodiesApplyGravity = function(bodies, gravity) {\n var gravityScale = typeof gravity.scale !== 'undefined' ? gravity.scale : 0.001,\n bodiesLength = bodies.length;\n\n if ((gravity.x === 0 && gravity.y === 0) || gravityScale === 0) {\n return;\n }\n \n for (var i = 0; i < bodiesLength; i++) {\n var body = bodies[i];\n\n if (body.isStatic || body.isSleeping)\n continue;\n\n // add the resultant force of gravity\n body.force.y += body.mass * gravity.y * gravityScale;\n body.force.x += body.mass * gravity.x * gravityScale;\n }\n };\n\n /**\n * Applies `Body.update` to all given `bodies`.\n * @method _bodiesUpdate\n * @private\n * @param {body[]} bodies\n * @param {number} delta The amount of time elapsed between updates\n */\n Engine._bodiesUpdate = function(bodies, delta) {\n var bodiesLength = bodies.length;\n\n for (var i = 0; i < bodiesLength; i++) {\n var body = bodies[i];\n\n if (body.isStatic || body.isSleeping)\n continue;\n\n Body.update(body, delta);\n }\n };\n\n /**\n * Applies `Body.updateVelocities` to all given `bodies`.\n * @method _bodiesUpdateVelocities\n * @private\n * @param {body[]} bodies\n */\n Engine._bodiesUpdateVelocities = function(bodies) {\n var bodiesLength = bodies.length;\n\n for (var i = 0; i < bodiesLength; i++) {\n Body.updateVelocities(bodies[i]);\n }\n };\n\n /**\n * A deprecated alias for `Runner.run`, use `Matter.Runner.run(engine)` instead and see `Matter.Runner` for more information.\n * @deprecated use Matter.Runner.run(engine) instead\n * @method run\n * @param {engine} engine\n */\n\n /**\n * Fired just before an update\n *\n * @event beforeUpdate\n * @param {object} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {number} event.delta The delta time in milliseconds value used in the update\n * @param {engine} event.source The source object of the event\n * @param {string} event.name The name of the event\n */\n\n /**\n * Fired after bodies updated based on their velocity and forces, but before any collision detection, constraints and resolving etc.\n *\n * @event beforeSolve\n * @param {object} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {number} event.delta The delta time in milliseconds value used in the update\n * @param {engine} event.source The source object of the event\n * @param {string} event.name The name of the event\n */\n\n /**\n * Fired after engine update and all collision events\n *\n * @event afterUpdate\n * @param {object} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {number} event.delta The delta time in milliseconds value used in the update\n * @param {engine} event.source The source object of the event\n * @param {string} event.name The name of the event\n */\n\n /**\n * Fired after engine update, provides a list of all pairs that have started to collide in the current tick (if any)\n *\n * @event collisionStart\n * @param {object} event An event object\n * @param {pair[]} event.pairs List of affected pairs\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {number} event.delta The delta time in milliseconds value used in the update\n * @param {engine} event.source The source object of the event\n * @param {string} event.name The name of the event\n */\n\n /**\n * Fired after engine update, provides a list of all pairs that are colliding in the current tick (if any)\n *\n * @event collisionActive\n * @param {object} event An event object\n * @param {pair[]} event.pairs List of affected pairs\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {number} event.delta The delta time in milliseconds value used in the update\n * @param {engine} event.source The source object of the event\n * @param {string} event.name The name of the event\n */\n\n /**\n * Fired after engine update, provides a list of all pairs that have ended collision in the current tick (if any)\n *\n * @event collisionEnd\n * @param {object} event An event object\n * @param {pair[]} event.pairs List of affected pairs\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {number} event.delta The delta time in milliseconds value used in the update\n * @param {engine} event.source The source object of the event\n * @param {string} event.name The name of the event\n */\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * An integer `Number` that specifies the number of position iterations to perform each update.\n * The higher the value, the higher quality the simulation will be at the expense of performance.\n *\n * @property positionIterations\n * @type number\n * @default 6\n */\n\n /**\n * An integer `Number` that specifies the number of velocity iterations to perform each update.\n * The higher the value, the higher quality the simulation will be at the expense of performance.\n *\n * @property velocityIterations\n * @type number\n * @default 4\n */\n\n /**\n * An integer `Number` that specifies the number of constraint iterations to perform each update.\n * The higher the value, the higher quality the simulation will be at the expense of performance.\n * The default value of `2` is usually very adequate.\n *\n * @property constraintIterations\n * @type number\n * @default 2\n */\n\n /**\n * A flag that specifies whether the engine should allow sleeping via the `Matter.Sleeping` module.\n * Sleeping can improve stability and performance, but often at the expense of accuracy.\n *\n * @property enableSleeping\n * @type boolean\n * @default false\n */\n\n /**\n * An `Object` containing properties regarding the timing systems of the engine. \n *\n * @property timing\n * @type object\n */\n\n /**\n * A `Number` that specifies the global scaling factor of time for all bodies.\n * A value of `0` freezes the simulation.\n * A value of `0.1` gives a slow-motion effect.\n * A value of `1.2` gives a speed-up effect.\n *\n * @property timing.timeScale\n * @type number\n * @default 1\n */\n\n /**\n * A `Number` that specifies the current simulation-time in milliseconds starting from `0`. \n * It is incremented on every `Engine.update` by the given `delta` argument. \n * \n * @property timing.timestamp\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that represents the total execution time elapsed during the last `Engine.update` in milliseconds.\n * It is updated by timing from the start of the last `Engine.update` call until it ends.\n *\n * This value will also include the total execution time of all event handlers directly or indirectly triggered by the engine update.\n * \n * @property timing.lastElapsed\n * @type number\n * @default 0\n */\n\n /**\n * A `Number` that represents the `delta` value used in the last engine update.\n * \n * @property timing.lastDelta\n * @type number\n * @default 0\n */\n\n /**\n * A `Matter.Detector` instance.\n *\n * @property detector\n * @type detector\n * @default a Matter.Detector instance\n */\n\n /**\n * A `Matter.Grid` instance.\n *\n * @deprecated replaced by `engine.detector`\n * @property grid\n * @type grid\n * @default a Matter.Grid instance\n */\n\n /**\n * Replaced by and now alias for `engine.grid`.\n *\n * @deprecated replaced by `engine.detector`\n * @property broadphase\n * @type grid\n * @default a Matter.Grid instance\n */\n\n /**\n * The root `Matter.Composite` instance that will contain all bodies, constraints and other composites to be simulated by this engine.\n *\n * @property world\n * @type composite\n * @default a Matter.Composite instance\n */\n\n /**\n * An object reserved for storing plugin-specific properties.\n *\n * @property plugin\n * @type {}\n */\n\n /**\n * An optional gravitational acceleration applied to all bodies in `engine.world` on every update.\n * \n * This models a [uniform gravitational field](https://en.wikipedia.org/wiki/Gravity_of_Earth), similar to near the surface of a planet. For gravity in other contexts, disable this and apply forces as needed.\n * \n * To disable set the `scale` component to `0`.\n * \n * This is split into three components for ease of use: \n * a normalised direction (`x` and `y`) and magnitude (`scale`).\n *\n * @property gravity\n * @type object\n */\n\n /**\n * The gravitational direction normal `x` component, to be multiplied by `gravity.scale`.\n * \n * @property gravity.x\n * @type object\n * @default 0\n */\n\n /**\n * The gravitational direction normal `y` component, to be multiplied by `gravity.scale`.\n *\n * @property gravity.y\n * @type object\n * @default 1\n */\n\n /**\n * The magnitude of the gravitational acceleration.\n * \n * @property gravity.scale\n * @type object\n * @default 0.001\n */\n\n})();\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Resolver` module contains methods for resolving collision pairs.\n*\n* @class Resolver\n*/\n\nvar Resolver = {};\n\nmodule.exports = Resolver;\n\nvar Vertices = __webpack_require__(3);\nvar Common = __webpack_require__(0);\nvar Bounds = __webpack_require__(1);\n\n(function() {\n\n Resolver._restingThresh = 2;\n Resolver._restingThreshTangent = Math.sqrt(6);\n Resolver._positionDampen = 0.9;\n Resolver._positionWarming = 0.8;\n Resolver._frictionNormalMultiplier = 5;\n Resolver._frictionMaxStatic = Number.MAX_VALUE;\n\n /**\n * Prepare pairs for position solving.\n * @method preSolvePosition\n * @param {pair[]} pairs\n */\n Resolver.preSolvePosition = function(pairs) {\n var i,\n pair,\n contactCount,\n pairsLength = pairs.length;\n\n // find total contacts on each body\n for (i = 0; i < pairsLength; i++) {\n pair = pairs[i];\n \n if (!pair.isActive)\n continue;\n \n contactCount = pair.contactCount;\n pair.collision.parentA.totalContacts += contactCount;\n pair.collision.parentB.totalContacts += contactCount;\n }\n };\n\n /**\n * Find a solution for pair positions.\n * @method solvePosition\n * @param {pair[]} pairs\n * @param {number} delta\n * @param {number} [damping=1]\n */\n Resolver.solvePosition = function(pairs, delta, damping) {\n var i,\n pair,\n collision,\n bodyA,\n bodyB,\n normal,\n contactShare,\n positionImpulse,\n positionDampen = Resolver._positionDampen * (damping || 1),\n slopDampen = Common.clamp(delta / Common._baseDelta, 0, 1),\n pairsLength = pairs.length;\n\n // find impulses required to resolve penetration\n for (i = 0; i < pairsLength; i++) {\n pair = pairs[i];\n \n if (!pair.isActive || pair.isSensor)\n continue;\n\n collision = pair.collision;\n bodyA = collision.parentA;\n bodyB = collision.parentB;\n normal = collision.normal;\n\n // get current separation between body edges involved in collision\n pair.separation = \n collision.depth + normal.x * (bodyB.positionImpulse.x - bodyA.positionImpulse.x)\n + normal.y * (bodyB.positionImpulse.y - bodyA.positionImpulse.y);\n }\n \n for (i = 0; i < pairsLength; i++) {\n pair = pairs[i];\n\n if (!pair.isActive || pair.isSensor)\n continue;\n \n collision = pair.collision;\n bodyA = collision.parentA;\n bodyB = collision.parentB;\n normal = collision.normal;\n positionImpulse = pair.separation - pair.slop * slopDampen;\n\n if (bodyA.isStatic || bodyB.isStatic)\n positionImpulse *= 2;\n \n if (!(bodyA.isStatic || bodyA.isSleeping)) {\n contactShare = positionDampen / bodyA.totalContacts;\n bodyA.positionImpulse.x += normal.x * positionImpulse * contactShare;\n bodyA.positionImpulse.y += normal.y * positionImpulse * contactShare;\n }\n\n if (!(bodyB.isStatic || bodyB.isSleeping)) {\n contactShare = positionDampen / bodyB.totalContacts;\n bodyB.positionImpulse.x -= normal.x * positionImpulse * contactShare;\n bodyB.positionImpulse.y -= normal.y * positionImpulse * contactShare;\n }\n }\n };\n\n /**\n * Apply position resolution.\n * @method postSolvePosition\n * @param {body[]} bodies\n */\n Resolver.postSolvePosition = function(bodies) {\n var positionWarming = Resolver._positionWarming,\n bodiesLength = bodies.length,\n verticesTranslate = Vertices.translate,\n boundsUpdate = Bounds.update;\n\n for (var i = 0; i < bodiesLength; i++) {\n var body = bodies[i],\n positionImpulse = body.positionImpulse,\n positionImpulseX = positionImpulse.x,\n positionImpulseY = positionImpulse.y,\n velocity = body.velocity;\n\n // reset contact count\n body.totalContacts = 0;\n\n if (positionImpulseX !== 0 || positionImpulseY !== 0) {\n // update body geometry\n for (var j = 0; j < body.parts.length; j++) {\n var part = body.parts[j];\n verticesTranslate(part.vertices, positionImpulse);\n boundsUpdate(part.bounds, part.vertices, velocity);\n part.position.x += positionImpulseX;\n part.position.y += positionImpulseY;\n }\n\n // move the body without changing velocity\n body.positionPrev.x += positionImpulseX;\n body.positionPrev.y += positionImpulseY;\n\n if (positionImpulseX * velocity.x + positionImpulseY * velocity.y < 0) {\n // reset cached impulse if the body has velocity along it\n positionImpulse.x = 0;\n positionImpulse.y = 0;\n } else {\n // warm the next iteration\n positionImpulse.x *= positionWarming;\n positionImpulse.y *= positionWarming;\n }\n }\n }\n };\n\n /**\n * Prepare pairs for velocity solving.\n * @method preSolveVelocity\n * @param {pair[]} pairs\n */\n Resolver.preSolveVelocity = function(pairs) {\n var pairsLength = pairs.length,\n i,\n j;\n \n for (i = 0; i < pairsLength; i++) {\n var pair = pairs[i];\n \n if (!pair.isActive || pair.isSensor)\n continue;\n \n var contacts = pair.contacts,\n contactCount = pair.contactCount,\n collision = pair.collision,\n bodyA = collision.parentA,\n bodyB = collision.parentB,\n normal = collision.normal,\n tangent = collision.tangent;\n \n // resolve each contact\n for (j = 0; j < contactCount; j++) {\n var contact = contacts[j],\n contactVertex = contact.vertex,\n normalImpulse = contact.normalImpulse,\n tangentImpulse = contact.tangentImpulse;\n \n if (normalImpulse !== 0 || tangentImpulse !== 0) {\n // total impulse from contact\n var impulseX = normal.x * normalImpulse + tangent.x * tangentImpulse,\n impulseY = normal.y * normalImpulse + tangent.y * tangentImpulse;\n \n // apply impulse from contact\n if (!(bodyA.isStatic || bodyA.isSleeping)) {\n bodyA.positionPrev.x += impulseX * bodyA.inverseMass;\n bodyA.positionPrev.y += impulseY * bodyA.inverseMass;\n bodyA.anglePrev += bodyA.inverseInertia * (\n (contactVertex.x - bodyA.position.x) * impulseY\n - (contactVertex.y - bodyA.position.y) * impulseX\n );\n }\n \n if (!(bodyB.isStatic || bodyB.isSleeping)) {\n bodyB.positionPrev.x -= impulseX * bodyB.inverseMass;\n bodyB.positionPrev.y -= impulseY * bodyB.inverseMass;\n bodyB.anglePrev -= bodyB.inverseInertia * (\n (contactVertex.x - bodyB.position.x) * impulseY \n - (contactVertex.y - bodyB.position.y) * impulseX\n );\n }\n }\n }\n }\n };\n\n /**\n * Find a solution for pair velocities.\n * @method solveVelocity\n * @param {pair[]} pairs\n * @param {number} delta\n */\n Resolver.solveVelocity = function(pairs, delta) {\n var timeScale = delta / Common._baseDelta,\n timeScaleSquared = timeScale * timeScale,\n timeScaleCubed = timeScaleSquared * timeScale,\n restingThresh = -Resolver._restingThresh * timeScale,\n restingThreshTangent = Resolver._restingThreshTangent,\n frictionNormalMultiplier = Resolver._frictionNormalMultiplier * timeScale,\n frictionMaxStatic = Resolver._frictionMaxStatic,\n pairsLength = pairs.length,\n tangentImpulse,\n maxFriction,\n i,\n j;\n\n for (i = 0; i < pairsLength; i++) {\n var pair = pairs[i];\n \n if (!pair.isActive || pair.isSensor)\n continue;\n \n var collision = pair.collision,\n bodyA = collision.parentA,\n bodyB = collision.parentB,\n normalX = collision.normal.x,\n normalY = collision.normal.y,\n tangentX = collision.tangent.x,\n tangentY = collision.tangent.y,\n inverseMassTotal = pair.inverseMass,\n friction = pair.friction * pair.frictionStatic * frictionNormalMultiplier,\n contacts = pair.contacts,\n contactCount = pair.contactCount,\n contactShare = 1 / contactCount;\n\n // get body velocities\n var bodyAVelocityX = bodyA.position.x - bodyA.positionPrev.x,\n bodyAVelocityY = bodyA.position.y - bodyA.positionPrev.y,\n bodyAAngularVelocity = bodyA.angle - bodyA.anglePrev,\n bodyBVelocityX = bodyB.position.x - bodyB.positionPrev.x,\n bodyBVelocityY = bodyB.position.y - bodyB.positionPrev.y,\n bodyBAngularVelocity = bodyB.angle - bodyB.anglePrev;\n\n // resolve each contact\n for (j = 0; j < contactCount; j++) {\n var contact = contacts[j],\n contactVertex = contact.vertex;\n\n var offsetAX = contactVertex.x - bodyA.position.x,\n offsetAY = contactVertex.y - bodyA.position.y,\n offsetBX = contactVertex.x - bodyB.position.x,\n offsetBY = contactVertex.y - bodyB.position.y;\n \n var velocityPointAX = bodyAVelocityX - offsetAY * bodyAAngularVelocity,\n velocityPointAY = bodyAVelocityY + offsetAX * bodyAAngularVelocity,\n velocityPointBX = bodyBVelocityX - offsetBY * bodyBAngularVelocity,\n velocityPointBY = bodyBVelocityY + offsetBX * bodyBAngularVelocity;\n\n var relativeVelocityX = velocityPointAX - velocityPointBX,\n relativeVelocityY = velocityPointAY - velocityPointBY;\n\n var normalVelocity = normalX * relativeVelocityX + normalY * relativeVelocityY,\n tangentVelocity = tangentX * relativeVelocityX + tangentY * relativeVelocityY;\n\n // coulomb friction\n var normalOverlap = pair.separation + normalVelocity;\n var normalForce = Math.min(normalOverlap, 1);\n normalForce = normalOverlap < 0 ? 0 : normalForce;\n\n var frictionLimit = normalForce * friction;\n\n if (tangentVelocity < -frictionLimit || tangentVelocity > frictionLimit) {\n maxFriction = (tangentVelocity > 0 ? tangentVelocity : -tangentVelocity);\n tangentImpulse = pair.friction * (tangentVelocity > 0 ? 1 : -1) * timeScaleCubed;\n \n if (tangentImpulse < -maxFriction) {\n tangentImpulse = -maxFriction;\n } else if (tangentImpulse > maxFriction) {\n tangentImpulse = maxFriction;\n }\n } else {\n tangentImpulse = tangentVelocity;\n maxFriction = frictionMaxStatic;\n }\n\n // account for mass, inertia and contact offset\n var oAcN = offsetAX * normalY - offsetAY * normalX,\n oBcN = offsetBX * normalY - offsetBY * normalX,\n share = contactShare / (inverseMassTotal + bodyA.inverseInertia * oAcN * oAcN + bodyB.inverseInertia * oBcN * oBcN);\n\n // raw impulses\n var normalImpulse = (1 + pair.restitution) * normalVelocity * share;\n tangentImpulse *= share;\n\n // handle high velocity and resting collisions separately\n if (normalVelocity < restingThresh) {\n // high normal velocity so clear cached contact normal impulse\n contact.normalImpulse = 0;\n } else {\n // solve resting collision constraints using Erin Catto's method (GDC08)\n // impulse constraint tends to 0\n var contactNormalImpulse = contact.normalImpulse;\n contact.normalImpulse += normalImpulse;\n if (contact.normalImpulse > 0) contact.normalImpulse = 0;\n normalImpulse = contact.normalImpulse - contactNormalImpulse;\n }\n\n // handle high velocity and resting collisions separately\n if (tangentVelocity < -restingThreshTangent || tangentVelocity > restingThreshTangent) {\n // high tangent velocity so clear cached contact tangent impulse\n contact.tangentImpulse = 0;\n } else {\n // solve resting collision constraints using Erin Catto's method (GDC08)\n // tangent impulse tends to -tangentSpeed or +tangentSpeed\n var contactTangentImpulse = contact.tangentImpulse;\n contact.tangentImpulse += tangentImpulse;\n if (contact.tangentImpulse < -maxFriction) contact.tangentImpulse = -maxFriction;\n if (contact.tangentImpulse > maxFriction) contact.tangentImpulse = maxFriction;\n tangentImpulse = contact.tangentImpulse - contactTangentImpulse;\n }\n\n // total impulse from contact\n var impulseX = normalX * normalImpulse + tangentX * tangentImpulse,\n impulseY = normalY * normalImpulse + tangentY * tangentImpulse;\n \n // apply impulse from contact\n if (!(bodyA.isStatic || bodyA.isSleeping)) {\n bodyA.positionPrev.x += impulseX * bodyA.inverseMass;\n bodyA.positionPrev.y += impulseY * bodyA.inverseMass;\n bodyA.anglePrev += (offsetAX * impulseY - offsetAY * impulseX) * bodyA.inverseInertia;\n }\n\n if (!(bodyB.isStatic || bodyB.isSleeping)) {\n bodyB.positionPrev.x -= impulseX * bodyB.inverseMass;\n bodyB.positionPrev.y -= impulseY * bodyB.inverseMass;\n bodyB.anglePrev -= (offsetBX * impulseY - offsetBY * impulseX) * bodyB.inverseInertia;\n }\n }\n }\n };\n\n})();\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Pairs` module contains methods for creating and manipulating collision pair sets.\n*\n* @class Pairs\n*/\n\nvar Pairs = {};\n\nmodule.exports = Pairs;\n\nvar Pair = __webpack_require__(9);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * Creates a new pairs structure.\n * @method create\n * @param {object} options\n * @return {pairs} A new pairs structure\n */\n Pairs.create = function(options) {\n return Common.extend({ \n table: {},\n list: [],\n collisionStart: [],\n collisionActive: [],\n collisionEnd: []\n }, options);\n };\n\n /**\n * Updates pairs given a list of collisions.\n * @method update\n * @param {object} pairs\n * @param {collision[]} collisions\n * @param {number} timestamp\n */\n Pairs.update = function(pairs, collisions, timestamp) {\n var pairUpdate = Pair.update,\n pairCreate = Pair.create,\n pairSetActive = Pair.setActive,\n pairsTable = pairs.table,\n pairsList = pairs.list,\n pairsListLength = pairsList.length,\n pairsListIndex = pairsListLength,\n collisionStart = pairs.collisionStart,\n collisionEnd = pairs.collisionEnd,\n collisionActive = pairs.collisionActive,\n collisionsLength = collisions.length,\n collisionStartIndex = 0,\n collisionEndIndex = 0,\n collisionActiveIndex = 0,\n collision,\n pair,\n i;\n\n for (i = 0; i < collisionsLength; i++) {\n collision = collisions[i];\n pair = collision.pair;\n\n if (pair) {\n // pair already exists (but may or may not be active)\n if (pair.isActive) {\n // pair exists and is active\n collisionActive[collisionActiveIndex++] = pair;\n }\n\n // update the pair\n pairUpdate(pair, collision, timestamp);\n } else {\n // pair did not exist, create a new pair\n pair = pairCreate(collision, timestamp);\n pairsTable[pair.id] = pair;\n\n // add the new pair\n collisionStart[collisionStartIndex++] = pair;\n pairsList[pairsListIndex++] = pair;\n }\n }\n\n // find pairs that are no longer active\n pairsListIndex = 0;\n pairsListLength = pairsList.length;\n\n for (i = 0; i < pairsListLength; i++) {\n pair = pairsList[i];\n \n // pair is active if updated this timestep\n if (pair.timeUpdated >= timestamp) {\n // keep active pairs\n pairsList[pairsListIndex++] = pair;\n } else {\n pairSetActive(pair, false, timestamp);\n\n // keep inactive pairs if both bodies may be sleeping\n if (pair.collision.bodyA.sleepCounter > 0 && pair.collision.bodyB.sleepCounter > 0) {\n pairsList[pairsListIndex++] = pair;\n } else {\n // remove inactive pairs if either body awake\n collisionEnd[collisionEndIndex++] = pair;\n delete pairsTable[pair.id];\n }\n }\n }\n\n // update array lengths if changed\n if (pairsList.length !== pairsListIndex) {\n pairsList.length = pairsListIndex;\n }\n\n if (collisionStart.length !== collisionStartIndex) {\n collisionStart.length = collisionStartIndex;\n }\n\n if (collisionEnd.length !== collisionEndIndex) {\n collisionEnd.length = collisionEndIndex;\n }\n\n if (collisionActive.length !== collisionActiveIndex) {\n collisionActive.length = collisionActiveIndex;\n }\n };\n\n /**\n * Clears the given pairs structure.\n * @method clear\n * @param {pairs} pairs\n * @return {pairs} pairs\n */\n Pairs.clear = function(pairs) {\n pairs.table = {};\n pairs.list.length = 0;\n pairs.collisionStart.length = 0;\n pairs.collisionActive.length = 0;\n pairs.collisionEnd.length = 0;\n return pairs;\n };\n\n})();\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Matter = module.exports = __webpack_require__(21);\r\n\r\nMatter.Axes = __webpack_require__(11);\r\nMatter.Bodies = __webpack_require__(12);\r\nMatter.Body = __webpack_require__(4);\r\nMatter.Bounds = __webpack_require__(1);\r\nMatter.Collision = __webpack_require__(8);\r\nMatter.Common = __webpack_require__(0);\r\nMatter.Composite = __webpack_require__(6);\r\nMatter.Composites = __webpack_require__(22);\r\nMatter.Constraint = __webpack_require__(10);\r\nMatter.Contact = __webpack_require__(16);\r\nMatter.Detector = __webpack_require__(13);\r\nMatter.Engine = __webpack_require__(17);\r\nMatter.Events = __webpack_require__(5);\r\nMatter.Grid = __webpack_require__(23);\r\nMatter.Mouse = __webpack_require__(14);\r\nMatter.MouseConstraint = __webpack_require__(24);\r\nMatter.Pair = __webpack_require__(9);\r\nMatter.Pairs = __webpack_require__(19);\r\nMatter.Plugin = __webpack_require__(15);\r\nMatter.Query = __webpack_require__(25);\r\nMatter.Render = __webpack_require__(26);\r\nMatter.Resolver = __webpack_require__(18);\r\nMatter.Runner = __webpack_require__(27);\r\nMatter.SAT = __webpack_require__(28);\r\nMatter.Sleeping = __webpack_require__(7);\r\nMatter.Svg = __webpack_require__(29);\r\nMatter.Vector = __webpack_require__(2);\r\nMatter.Vertices = __webpack_require__(3);\r\nMatter.World = __webpack_require__(30);\r\n\r\n// temporary back compatibility\r\nMatter.Engine.run = Matter.Runner.run;\r\nMatter.Common.deprecated(Matter.Engine, 'run', 'Engine.run ➤ use Matter.Runner.run(engine) instead');\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\r\n* The `Matter` module is the top level namespace. It also includes a function for installing plugins on top of the library.\r\n*\r\n* @class Matter\r\n*/\r\n\r\nvar Matter = {};\r\n\r\nmodule.exports = Matter;\r\n\r\nvar Plugin = __webpack_require__(15);\r\nvar Common = __webpack_require__(0);\r\n\r\n(function() {\r\n\r\n /**\r\n * The library name.\r\n * @property name\r\n * @readOnly\r\n * @type {String}\r\n */\r\n Matter.name = 'matter-js';\r\n\r\n /**\r\n * The library version.\r\n * @property version\r\n * @readOnly\r\n * @type {String}\r\n */\r\n Matter.version = true ? \"0.20.0\" : undefined;\r\n\r\n /**\r\n * A list of plugin dependencies to be installed. These are normally set and installed through `Matter.use`.\r\n * Alternatively you may set `Matter.uses` manually and install them by calling `Plugin.use(Matter)`.\r\n * @property uses\r\n * @type {Array}\r\n */\r\n Matter.uses = [];\r\n\r\n /**\r\n * The plugins that have been installed through `Matter.Plugin.install`. Read only.\r\n * @property used\r\n * @readOnly\r\n * @type {Array}\r\n */\r\n Matter.used = [];\r\n\r\n /**\r\n * Installs the given plugins on the `Matter` namespace.\r\n * This is a short-hand for `Plugin.use`, see it for more information.\r\n * Call this function once at the start of your code, with all of the plugins you wish to install as arguments.\r\n * Avoid calling this function multiple times unless you intend to manually control installation order.\r\n * @method use\r\n * @param ...plugin {Function} The plugin(s) to install on `base` (multi-argument).\r\n */\r\n Matter.use = function() {\r\n Plugin.use(Matter, Array.prototype.slice.call(arguments));\r\n };\r\n\r\n /**\r\n * Chains a function to excute before the original function on the given `path` relative to `Matter`.\r\n * See also docs for `Common.chain`.\r\n * @method before\r\n * @param {string} path The path relative to `Matter`\r\n * @param {function} func The function to chain before the original\r\n * @return {function} The chained function that replaced the original\r\n */\r\n Matter.before = function(path, func) {\r\n path = path.replace(/^Matter./, '');\r\n return Common.chainPathBefore(Matter, path, func);\r\n };\r\n\r\n /**\r\n * Chains a function to excute after the original function on the given `path` relative to `Matter`.\r\n * See also docs for `Common.chain`.\r\n * @method after\r\n * @param {string} path The path relative to `Matter`\r\n * @param {function} func The function to chain after the original\r\n * @return {function} The chained function that replaced the original\r\n */\r\n Matter.after = function(path, func) {\r\n path = path.replace(/^Matter./, '');\r\n return Common.chainPathAfter(Matter, path, func);\r\n };\r\n\r\n})();\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Composites` module contains factory methods for creating composite bodies\n* with commonly used configurations (such as stacks and chains).\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Composites\n*/\n\nvar Composites = {};\n\nmodule.exports = Composites;\n\nvar Composite = __webpack_require__(6);\nvar Constraint = __webpack_require__(10);\nvar Common = __webpack_require__(0);\nvar Body = __webpack_require__(4);\nvar Bodies = __webpack_require__(12);\nvar deprecated = Common.deprecated;\n\n(function() {\n\n /**\n * Create a new composite containing bodies created in the callback in a grid arrangement.\n * This function uses the body's bounds to prevent overlaps.\n * @method stack\n * @param {number} x Starting position in X.\n * @param {number} y Starting position in Y.\n * @param {number} columns\n * @param {number} rows\n * @param {number} columnGap\n * @param {number} rowGap\n * @param {function} callback\n * @return {composite} A new composite containing objects created in the callback\n */\n Composites.stack = function(x, y, columns, rows, columnGap, rowGap, callback) {\n var stack = Composite.create({ label: 'Stack' }),\n currentX = x,\n currentY = y,\n lastBody,\n i = 0;\n\n for (var row = 0; row < rows; row++) {\n var maxHeight = 0;\n \n for (var column = 0; column < columns; column++) {\n var body = callback(currentX, currentY, column, row, lastBody, i);\n \n if (body) {\n var bodyHeight = body.bounds.max.y - body.bounds.min.y,\n bodyWidth = body.bounds.max.x - body.bounds.min.x; \n\n if (bodyHeight > maxHeight)\n maxHeight = bodyHeight;\n \n Body.translate(body, { x: bodyWidth * 0.5, y: bodyHeight * 0.5 });\n\n currentX = body.bounds.max.x + columnGap;\n\n Composite.addBody(stack, body);\n \n lastBody = body;\n i += 1;\n } else {\n currentX += columnGap;\n }\n }\n \n currentY += maxHeight + rowGap;\n currentX = x;\n }\n\n return stack;\n };\n \n /**\n * Chains all bodies in the given composite together using constraints.\n * @method chain\n * @param {composite} composite\n * @param {number} xOffsetA\n * @param {number} yOffsetA\n * @param {number} xOffsetB\n * @param {number} yOffsetB\n * @param {object} options\n * @return {composite} A new composite containing objects chained together with constraints\n */\n Composites.chain = function(composite, xOffsetA, yOffsetA, xOffsetB, yOffsetB, options) {\n var bodies = composite.bodies;\n \n for (var i = 1; i < bodies.length; i++) {\n var bodyA = bodies[i - 1],\n bodyB = bodies[i],\n bodyAHeight = bodyA.bounds.max.y - bodyA.bounds.min.y,\n bodyAWidth = bodyA.bounds.max.x - bodyA.bounds.min.x, \n bodyBHeight = bodyB.bounds.max.y - bodyB.bounds.min.y,\n bodyBWidth = bodyB.bounds.max.x - bodyB.bounds.min.x;\n \n var defaults = {\n bodyA: bodyA,\n pointA: { x: bodyAWidth * xOffsetA, y: bodyAHeight * yOffsetA },\n bodyB: bodyB,\n pointB: { x: bodyBWidth * xOffsetB, y: bodyBHeight * yOffsetB }\n };\n \n var constraint = Common.extend(defaults, options);\n \n Composite.addConstraint(composite, Constraint.create(constraint));\n }\n\n composite.label += ' Chain';\n \n return composite;\n };\n\n /**\n * Connects bodies in the composite with constraints in a grid pattern, with optional cross braces.\n * @method mesh\n * @param {composite} composite\n * @param {number} columns\n * @param {number} rows\n * @param {boolean} crossBrace\n * @param {object} options\n * @return {composite} The composite containing objects meshed together with constraints\n */\n Composites.mesh = function(composite, columns, rows, crossBrace, options) {\n var bodies = composite.bodies,\n row,\n col,\n bodyA,\n bodyB,\n bodyC;\n \n for (row = 0; row < rows; row++) {\n for (col = 1; col < columns; col++) {\n bodyA = bodies[(col - 1) + (row * columns)];\n bodyB = bodies[col + (row * columns)];\n Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyA, bodyB: bodyB }, options)));\n }\n\n if (row > 0) {\n for (col = 0; col < columns; col++) {\n bodyA = bodies[col + ((row - 1) * columns)];\n bodyB = bodies[col + (row * columns)];\n Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyA, bodyB: bodyB }, options)));\n\n if (crossBrace && col > 0) {\n bodyC = bodies[(col - 1) + ((row - 1) * columns)];\n Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyC, bodyB: bodyB }, options)));\n }\n\n if (crossBrace && col < columns - 1) {\n bodyC = bodies[(col + 1) + ((row - 1) * columns)];\n Composite.addConstraint(composite, Constraint.create(Common.extend({ bodyA: bodyC, bodyB: bodyB }, options)));\n }\n }\n }\n }\n\n composite.label += ' Mesh';\n \n return composite;\n };\n \n /**\n * Create a new composite containing bodies created in the callback in a pyramid arrangement.\n * This function uses the body's bounds to prevent overlaps.\n * @method pyramid\n * @param {number} x Starting position in X.\n * @param {number} y Starting position in Y.\n * @param {number} columns\n * @param {number} rows\n * @param {number} columnGap\n * @param {number} rowGap\n * @param {function} callback\n * @return {composite} A new composite containing objects created in the callback\n */\n Composites.pyramid = function(x, y, columns, rows, columnGap, rowGap, callback) {\n return Composites.stack(x, y, columns, rows, columnGap, rowGap, function(stackX, stackY, column, row, lastBody, i) {\n var actualRows = Math.min(rows, Math.ceil(columns / 2)),\n lastBodyWidth = lastBody ? lastBody.bounds.max.x - lastBody.bounds.min.x : 0;\n \n if (row > actualRows)\n return;\n \n // reverse row order\n row = actualRows - row;\n \n var start = row,\n end = columns - 1 - row;\n\n if (column < start || column > end)\n return;\n \n // retroactively fix the first body's position, since width was unknown\n if (i === 1) {\n Body.translate(lastBody, { x: (column + (columns % 2 === 1 ? 1 : -1)) * lastBodyWidth, y: 0 });\n }\n\n var xOffset = lastBody ? column * lastBodyWidth : 0;\n \n return callback(x + xOffset + column * columnGap, stackY, column, row, lastBody, i);\n });\n };\n\n /**\n * This has now moved to the [newtonsCradle example](https://github.com/liabru/matter-js/blob/master/examples/newtonsCradle.js), follow that instead as this function is deprecated here.\n * @deprecated moved to newtonsCradle example\n * @method newtonsCradle\n * @param {number} x Starting position in X.\n * @param {number} y Starting position in Y.\n * @param {number} number\n * @param {number} size\n * @param {number} length\n * @return {composite} A new composite newtonsCradle body\n */\n Composites.newtonsCradle = function(x, y, number, size, length) {\n var newtonsCradle = Composite.create({ label: 'Newtons Cradle' });\n\n for (var i = 0; i < number; i++) {\n var separation = 1.9,\n circle = Bodies.circle(x + i * (size * separation), y + length, size, \n { inertia: Infinity, restitution: 1, friction: 0, frictionAir: 0.0001, slop: 1 }),\n constraint = Constraint.create({ pointA: { x: x + i * (size * separation), y: y }, bodyB: circle });\n\n Composite.addBody(newtonsCradle, circle);\n Composite.addConstraint(newtonsCradle, constraint);\n }\n\n return newtonsCradle;\n };\n\n deprecated(Composites, 'newtonsCradle', 'Composites.newtonsCradle ➤ moved to newtonsCradle example');\n \n /**\n * This has now moved to the [car example](https://github.com/liabru/matter-js/blob/master/examples/car.js), follow that instead as this function is deprecated here.\n * @deprecated moved to car example\n * @method car\n * @param {number} x Starting position in X.\n * @param {number} y Starting position in Y.\n * @param {number} width\n * @param {number} height\n * @param {number} wheelSize\n * @return {composite} A new composite car body\n */\n Composites.car = function(x, y, width, height, wheelSize) {\n var group = Body.nextGroup(true),\n wheelBase = 20,\n wheelAOffset = -width * 0.5 + wheelBase,\n wheelBOffset = width * 0.5 - wheelBase,\n wheelYOffset = 0;\n \n var car = Composite.create({ label: 'Car' }),\n body = Bodies.rectangle(x, y, width, height, { \n collisionFilter: {\n group: group\n },\n chamfer: {\n radius: height * 0.5\n },\n density: 0.0002\n });\n \n var wheelA = Bodies.circle(x + wheelAOffset, y + wheelYOffset, wheelSize, { \n collisionFilter: {\n group: group\n },\n friction: 0.8\n });\n \n var wheelB = Bodies.circle(x + wheelBOffset, y + wheelYOffset, wheelSize, { \n collisionFilter: {\n group: group\n },\n friction: 0.8\n });\n \n var axelA = Constraint.create({\n bodyB: body,\n pointB: { x: wheelAOffset, y: wheelYOffset },\n bodyA: wheelA,\n stiffness: 1,\n length: 0\n });\n \n var axelB = Constraint.create({\n bodyB: body,\n pointB: { x: wheelBOffset, y: wheelYOffset },\n bodyA: wheelB,\n stiffness: 1,\n length: 0\n });\n \n Composite.addBody(car, body);\n Composite.addBody(car, wheelA);\n Composite.addBody(car, wheelB);\n Composite.addConstraint(car, axelA);\n Composite.addConstraint(car, axelB);\n\n return car;\n };\n\n deprecated(Composites, 'car', 'Composites.car ➤ moved to car example');\n\n /**\n * This has now moved to the [softBody example](https://github.com/liabru/matter-js/blob/master/examples/softBody.js)\n * and the [cloth example](https://github.com/liabru/matter-js/blob/master/examples/cloth.js), follow those instead as this function is deprecated here.\n * @deprecated moved to softBody and cloth examples\n * @method softBody\n * @param {number} x Starting position in X.\n * @param {number} y Starting position in Y.\n * @param {number} columns\n * @param {number} rows\n * @param {number} columnGap\n * @param {number} rowGap\n * @param {boolean} crossBrace\n * @param {number} particleRadius\n * @param {} particleOptions\n * @param {} constraintOptions\n * @return {composite} A new composite softBody\n */\n Composites.softBody = function(x, y, columns, rows, columnGap, rowGap, crossBrace, particleRadius, particleOptions, constraintOptions) {\n particleOptions = Common.extend({ inertia: Infinity }, particleOptions);\n constraintOptions = Common.extend({ stiffness: 0.2, render: { type: 'line', anchors: false } }, constraintOptions);\n\n var softBody = Composites.stack(x, y, columns, rows, columnGap, rowGap, function(stackX, stackY) {\n return Bodies.circle(stackX, stackY, particleRadius, particleOptions);\n });\n\n Composites.mesh(softBody, columns, rows, crossBrace, constraintOptions);\n\n softBody.label = 'Soft Body';\n\n return softBody;\n };\n\n deprecated(Composites, 'softBody', 'Composites.softBody ➤ moved to softBody and cloth examples');\n})();\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* This module has now been replaced by `Matter.Detector`.\n*\n* All usage should be migrated to `Matter.Detector` or another alternative.\n* For back-compatibility purposes this module will remain for a short term and then later removed in a future release.\n*\n* The `Matter.Grid` module contains methods for creating and manipulating collision broadphase grid structures.\n*\n* @class Grid\n* @deprecated\n*/\n\nvar Grid = {};\n\nmodule.exports = Grid;\n\nvar Pair = __webpack_require__(9);\nvar Common = __webpack_require__(0);\nvar deprecated = Common.deprecated;\n\n(function() {\n\n /**\n * Creates a new grid.\n * @deprecated replaced by Matter.Detector\n * @method create\n * @param {} options\n * @return {grid} A new grid\n */\n Grid.create = function(options) {\n var defaults = {\n buckets: {},\n pairs: {},\n pairsList: [],\n bucketWidth: 48,\n bucketHeight: 48\n };\n\n return Common.extend(defaults, options);\n };\n\n /**\n * The width of a single grid bucket.\n *\n * @property bucketWidth\n * @type number\n * @default 48\n */\n\n /**\n * The height of a single grid bucket.\n *\n * @property bucketHeight\n * @type number\n * @default 48\n */\n\n /**\n * Updates the grid.\n * @deprecated replaced by Matter.Detector\n * @method update\n * @param {grid} grid\n * @param {body[]} bodies\n * @param {engine} engine\n * @param {boolean} forceUpdate\n */\n Grid.update = function(grid, bodies, engine, forceUpdate) {\n var i, col, row,\n world = engine.world,\n buckets = grid.buckets,\n bucket,\n bucketId,\n gridChanged = false;\n\n for (i = 0; i < bodies.length; i++) {\n var body = bodies[i];\n\n if (body.isSleeping && !forceUpdate)\n continue;\n\n // temporary back compatibility bounds check\n if (world.bounds && (body.bounds.max.x < world.bounds.min.x || body.bounds.min.x > world.bounds.max.x\n || body.bounds.max.y < world.bounds.min.y || body.bounds.min.y > world.bounds.max.y))\n continue;\n\n var newRegion = Grid._getRegion(grid, body);\n\n // if the body has changed grid region\n if (!body.region || newRegion.id !== body.region.id || forceUpdate) {\n\n if (!body.region || forceUpdate)\n body.region = newRegion;\n\n var union = Grid._regionUnion(newRegion, body.region);\n\n // update grid buckets affected by region change\n // iterate over the union of both regions\n for (col = union.startCol; col <= union.endCol; col++) {\n for (row = union.startRow; row <= union.endRow; row++) {\n bucketId = Grid._getBucketId(col, row);\n bucket = buckets[bucketId];\n\n var isInsideNewRegion = (col >= newRegion.startCol && col <= newRegion.endCol\n && row >= newRegion.startRow && row <= newRegion.endRow);\n\n var isInsideOldRegion = (col >= body.region.startCol && col <= body.region.endCol\n && row >= body.region.startRow && row <= body.region.endRow);\n\n // remove from old region buckets\n if (!isInsideNewRegion && isInsideOldRegion) {\n if (isInsideOldRegion) {\n if (bucket)\n Grid._bucketRemoveBody(grid, bucket, body);\n }\n }\n\n // add to new region buckets\n if (body.region === newRegion || (isInsideNewRegion && !isInsideOldRegion) || forceUpdate) {\n if (!bucket)\n bucket = Grid._createBucket(buckets, bucketId);\n Grid._bucketAddBody(grid, bucket, body);\n }\n }\n }\n\n // set the new region\n body.region = newRegion;\n\n // flag changes so we can update pairs\n gridChanged = true;\n }\n }\n\n // update pairs list only if pairs changed (i.e. a body changed region)\n if (gridChanged)\n grid.pairsList = Grid._createActivePairsList(grid);\n };\n\n deprecated(Grid, 'update', 'Grid.update ➤ replaced by Matter.Detector');\n\n /**\n * Clears the grid.\n * @deprecated replaced by Matter.Detector\n * @method clear\n * @param {grid} grid\n */\n Grid.clear = function(grid) {\n grid.buckets = {};\n grid.pairs = {};\n grid.pairsList = [];\n };\n\n deprecated(Grid, 'clear', 'Grid.clear ➤ replaced by Matter.Detector');\n\n /**\n * Finds the union of two regions.\n * @method _regionUnion\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} regionA\n * @param {} regionB\n * @return {} region\n */\n Grid._regionUnion = function(regionA, regionB) {\n var startCol = Math.min(regionA.startCol, regionB.startCol),\n endCol = Math.max(regionA.endCol, regionB.endCol),\n startRow = Math.min(regionA.startRow, regionB.startRow),\n endRow = Math.max(regionA.endRow, regionB.endRow);\n\n return Grid._createRegion(startCol, endCol, startRow, endRow);\n };\n\n /**\n * Gets the region a given body falls in for a given grid.\n * @method _getRegion\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} grid\n * @param {} body\n * @return {} region\n */\n Grid._getRegion = function(grid, body) {\n var bounds = body.bounds,\n startCol = Math.floor(bounds.min.x / grid.bucketWidth),\n endCol = Math.floor(bounds.max.x / grid.bucketWidth),\n startRow = Math.floor(bounds.min.y / grid.bucketHeight),\n endRow = Math.floor(bounds.max.y / grid.bucketHeight);\n\n return Grid._createRegion(startCol, endCol, startRow, endRow);\n };\n\n /**\n * Creates a region.\n * @method _createRegion\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} startCol\n * @param {} endCol\n * @param {} startRow\n * @param {} endRow\n * @return {} region\n */\n Grid._createRegion = function(startCol, endCol, startRow, endRow) {\n return { \n id: startCol + ',' + endCol + ',' + startRow + ',' + endRow,\n startCol: startCol, \n endCol: endCol, \n startRow: startRow, \n endRow: endRow \n };\n };\n\n /**\n * Gets the bucket id at the given position.\n * @method _getBucketId\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} column\n * @param {} row\n * @return {string} bucket id\n */\n Grid._getBucketId = function(column, row) {\n return 'C' + column + 'R' + row;\n };\n\n /**\n * Creates a bucket.\n * @method _createBucket\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} buckets\n * @param {} bucketId\n * @return {} bucket\n */\n Grid._createBucket = function(buckets, bucketId) {\n var bucket = buckets[bucketId] = [];\n return bucket;\n };\n\n /**\n * Adds a body to a bucket.\n * @method _bucketAddBody\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} grid\n * @param {} bucket\n * @param {} body\n */\n Grid._bucketAddBody = function(grid, bucket, body) {\n var gridPairs = grid.pairs,\n pairId = Pair.id,\n bucketLength = bucket.length,\n i;\n\n // add new pairs\n for (i = 0; i < bucketLength; i++) {\n var bodyB = bucket[i];\n\n if (body.id === bodyB.id || (body.isStatic && bodyB.isStatic))\n continue;\n\n // keep track of the number of buckets the pair exists in\n // important for Grid.update to work\n var id = pairId(body, bodyB),\n pair = gridPairs[id];\n\n if (pair) {\n pair[2] += 1;\n } else {\n gridPairs[id] = [body, bodyB, 1];\n }\n }\n\n // add to bodies (after pairs, otherwise pairs with self)\n bucket.push(body);\n };\n\n /**\n * Removes a body from a bucket.\n * @method _bucketRemoveBody\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} grid\n * @param {} bucket\n * @param {} body\n */\n Grid._bucketRemoveBody = function(grid, bucket, body) {\n var gridPairs = grid.pairs,\n pairId = Pair.id,\n i;\n\n // remove from bucket\n bucket.splice(Common.indexOf(bucket, body), 1);\n\n var bucketLength = bucket.length;\n\n // update pair counts\n for (i = 0; i < bucketLength; i++) {\n // keep track of the number of buckets the pair exists in\n // important for _createActivePairsList to work\n var pair = gridPairs[pairId(body, bucket[i])];\n\n if (pair)\n pair[2] -= 1;\n }\n };\n\n /**\n * Generates a list of the active pairs in the grid.\n * @method _createActivePairsList\n * @deprecated replaced by Matter.Detector\n * @private\n * @param {} grid\n * @return [] pairs\n */\n Grid._createActivePairsList = function(grid) {\n var pair,\n gridPairs = grid.pairs,\n pairKeys = Common.keys(gridPairs),\n pairKeysLength = pairKeys.length,\n pairs = [],\n k;\n\n // iterate over grid.pairs\n for (k = 0; k < pairKeysLength; k++) {\n pair = gridPairs[pairKeys[k]];\n\n // if pair exists in at least one bucket\n // it is a pair that needs further collision testing so push it\n if (pair[2] > 0) {\n pairs.push(pair);\n } else {\n delete gridPairs[pairKeys[k]];\n }\n }\n\n return pairs;\n };\n \n})();\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.MouseConstraint` module contains methods for creating mouse constraints.\n* Mouse constraints are used for allowing user interaction, providing the ability to move bodies via the mouse or touch.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class MouseConstraint\n*/\n\nvar MouseConstraint = {};\n\nmodule.exports = MouseConstraint;\n\nvar Vertices = __webpack_require__(3);\nvar Sleeping = __webpack_require__(7);\nvar Mouse = __webpack_require__(14);\nvar Events = __webpack_require__(5);\nvar Detector = __webpack_require__(13);\nvar Constraint = __webpack_require__(10);\nvar Composite = __webpack_require__(6);\nvar Common = __webpack_require__(0);\nvar Bounds = __webpack_require__(1);\n\n(function() {\n\n /**\n * Creates a new mouse constraint.\n * All properties have default values, and many are pre-calculated automatically based on other properties.\n * See the properties section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {engine} engine\n * @param {} options\n * @return {MouseConstraint} A new MouseConstraint\n */\n MouseConstraint.create = function(engine, options) {\n var mouse = (engine ? engine.mouse : null) || (options ? options.mouse : null);\n\n if (!mouse) {\n if (engine && engine.render && engine.render.canvas) {\n mouse = Mouse.create(engine.render.canvas);\n } else if (options && options.element) {\n mouse = Mouse.create(options.element);\n } else {\n mouse = Mouse.create();\n Common.warn('MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected');\n }\n }\n\n var constraint = Constraint.create({ \n label: 'Mouse Constraint',\n pointA: mouse.position,\n pointB: { x: 0, y: 0 },\n length: 0.01, \n stiffness: 0.1,\n angularStiffness: 1,\n render: {\n strokeStyle: '#90EE90',\n lineWidth: 3\n }\n });\n\n var defaults = {\n type: 'mouseConstraint',\n mouse: mouse,\n element: null,\n body: null,\n constraint: constraint,\n collisionFilter: {\n category: 0x0001,\n mask: 0xFFFFFFFF,\n group: 0\n }\n };\n\n var mouseConstraint = Common.extend(defaults, options);\n\n Events.on(engine, 'beforeUpdate', function() {\n var allBodies = Composite.allBodies(engine.world);\n MouseConstraint.update(mouseConstraint, allBodies);\n MouseConstraint._triggerEvents(mouseConstraint);\n });\n\n return mouseConstraint;\n };\n\n /**\n * Updates the given mouse constraint.\n * @private\n * @method update\n * @param {MouseConstraint} mouseConstraint\n * @param {body[]} bodies\n */\n MouseConstraint.update = function(mouseConstraint, bodies) {\n var mouse = mouseConstraint.mouse,\n constraint = mouseConstraint.constraint,\n body = mouseConstraint.body;\n\n if (mouse.button === 0) {\n if (!constraint.bodyB) {\n for (var i = 0; i < bodies.length; i++) {\n body = bodies[i];\n if (Bounds.contains(body.bounds, mouse.position) \n && Detector.canCollide(body.collisionFilter, mouseConstraint.collisionFilter)) {\n for (var j = body.parts.length > 1 ? 1 : 0; j < body.parts.length; j++) {\n var part = body.parts[j];\n if (Vertices.contains(part.vertices, mouse.position)) {\n constraint.pointA = mouse.position;\n constraint.bodyB = mouseConstraint.body = body;\n constraint.pointB = { x: mouse.position.x - body.position.x, y: mouse.position.y - body.position.y };\n constraint.angleB = body.angle;\n\n Sleeping.set(body, false);\n Events.trigger(mouseConstraint, 'startdrag', { mouse: mouse, body: body });\n\n break;\n }\n }\n }\n }\n } else {\n Sleeping.set(constraint.bodyB, false);\n constraint.pointA = mouse.position;\n }\n } else {\n constraint.bodyB = mouseConstraint.body = null;\n constraint.pointB = null;\n\n if (body)\n Events.trigger(mouseConstraint, 'enddrag', { mouse: mouse, body: body });\n }\n };\n\n /**\n * Triggers mouse constraint events.\n * @method _triggerEvents\n * @private\n * @param {mouse} mouseConstraint\n */\n MouseConstraint._triggerEvents = function(mouseConstraint) {\n var mouse = mouseConstraint.mouse,\n mouseEvents = mouse.sourceEvents;\n\n if (mouseEvents.mousemove)\n Events.trigger(mouseConstraint, 'mousemove', { mouse: mouse });\n\n if (mouseEvents.mousedown)\n Events.trigger(mouseConstraint, 'mousedown', { mouse: mouse });\n\n if (mouseEvents.mouseup)\n Events.trigger(mouseConstraint, 'mouseup', { mouse: mouse });\n\n // reset the mouse state ready for the next step\n Mouse.clearSourceEvents(mouse);\n };\n\n /*\n *\n * Events Documentation\n *\n */\n\n /**\n * Fired when the mouse has moved (or a touch moves) during the last step\n *\n * @event mousemove\n * @param {} event An event object\n * @param {mouse} event.mouse The engine's mouse instance\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when the mouse is down (or a touch has started) during the last step\n *\n * @event mousedown\n * @param {} event An event object\n * @param {mouse} event.mouse The engine's mouse instance\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when the mouse is up (or a touch has ended) during the last step\n *\n * @event mouseup\n * @param {} event An event object\n * @param {mouse} event.mouse The engine's mouse instance\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when the user starts dragging a body\n *\n * @event startdrag\n * @param {} event An event object\n * @param {mouse} event.mouse The engine's mouse instance\n * @param {body} event.body The body being dragged\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired when the user ends dragging a body\n *\n * @event enddrag\n * @param {} event An event object\n * @param {mouse} event.mouse The engine's mouse instance\n * @param {body} event.body The body that has stopped being dragged\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * A `String` denoting the type of object.\n *\n * @property type\n * @type string\n * @default \"constraint\"\n * @readOnly\n */\n\n /**\n * The `Mouse` instance in use. If not supplied in `MouseConstraint.create`, one will be created.\n *\n * @property mouse\n * @type mouse\n * @default mouse\n */\n\n /**\n * The `Body` that is currently being moved by the user, or `null` if no body.\n *\n * @property body\n * @type body\n * @default null\n */\n\n /**\n * The `Constraint` object that is used to move the body during interaction.\n *\n * @property constraint\n * @type constraint\n */\n\n /**\n * An `Object` that specifies the collision filter properties.\n * The collision filter allows the user to define which types of body this mouse constraint can interact with.\n * See `body.collisionFilter` for more information.\n *\n * @property collisionFilter\n * @type object\n */\n\n})();\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Query` module contains methods for performing collision queries.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Query\n*/\n\nvar Query = {};\n\nmodule.exports = Query;\n\nvar Vector = __webpack_require__(2);\nvar Collision = __webpack_require__(8);\nvar Bounds = __webpack_require__(1);\nvar Bodies = __webpack_require__(12);\nvar Vertices = __webpack_require__(3);\n\n(function() {\n\n /**\n * Returns a list of collisions between `body` and `bodies`.\n * @method collides\n * @param {body} body\n * @param {body[]} bodies\n * @return {collision[]} Collisions\n */\n Query.collides = function(body, bodies) {\n var collisions = [],\n bodiesLength = bodies.length,\n bounds = body.bounds,\n collides = Collision.collides,\n overlaps = Bounds.overlaps;\n\n for (var i = 0; i < bodiesLength; i++) {\n var bodyA = bodies[i],\n partsALength = bodyA.parts.length,\n partsAStart = partsALength === 1 ? 0 : 1;\n \n if (overlaps(bodyA.bounds, bounds)) {\n for (var j = partsAStart; j < partsALength; j++) {\n var part = bodyA.parts[j];\n\n if (overlaps(part.bounds, bounds)) {\n var collision = collides(part, body);\n\n if (collision) {\n collisions.push(collision);\n break;\n }\n }\n }\n }\n }\n\n return collisions;\n };\n\n /**\n * Casts a ray segment against a set of bodies and returns all collisions, ray width is optional. Intersection points are not provided.\n * @method ray\n * @param {body[]} bodies\n * @param {vector} startPoint\n * @param {vector} endPoint\n * @param {number} [rayWidth]\n * @return {collision[]} Collisions\n */\n Query.ray = function(bodies, startPoint, endPoint, rayWidth) {\n rayWidth = rayWidth || 1e-100;\n\n var rayAngle = Vector.angle(startPoint, endPoint),\n rayLength = Vector.magnitude(Vector.sub(startPoint, endPoint)),\n rayX = (endPoint.x + startPoint.x) * 0.5,\n rayY = (endPoint.y + startPoint.y) * 0.5,\n ray = Bodies.rectangle(rayX, rayY, rayLength, rayWidth, { angle: rayAngle }),\n collisions = Query.collides(ray, bodies);\n\n for (var i = 0; i < collisions.length; i += 1) {\n var collision = collisions[i];\n collision.body = collision.bodyB = collision.bodyA; \n }\n\n return collisions;\n };\n\n /**\n * Returns all bodies whose bounds are inside (or outside if set) the given set of bounds, from the given set of bodies.\n * @method region\n * @param {body[]} bodies\n * @param {bounds} bounds\n * @param {bool} [outside=false]\n * @return {body[]} The bodies matching the query\n */\n Query.region = function(bodies, bounds, outside) {\n var result = [];\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i],\n overlaps = Bounds.overlaps(body.bounds, bounds);\n if ((overlaps && !outside) || (!overlaps && outside))\n result.push(body);\n }\n\n return result;\n };\n\n /**\n * Returns all bodies whose vertices contain the given point, from the given set of bodies.\n * @method point\n * @param {body[]} bodies\n * @param {vector} point\n * @return {body[]} The bodies matching the query\n */\n Query.point = function(bodies, point) {\n var result = [];\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i];\n \n if (Bounds.contains(body.bounds, point)) {\n for (var j = body.parts.length === 1 ? 0 : 1; j < body.parts.length; j++) {\n var part = body.parts[j];\n\n if (Bounds.contains(part.bounds, point)\n && Vertices.contains(part.vertices, point)) {\n result.push(body);\n break;\n }\n }\n }\n }\n\n return result;\n };\n\n})();\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Render` module is a lightweight, optional utility which provides a simple canvas based renderer for visualising instances of `Matter.Engine`.\n* It is intended for development and debugging purposes, but may also be suitable for simple games.\n* It includes a number of drawing options including wireframe, vector with support for sprites and viewports.\n*\n* @class Render\n*/\n\nvar Render = {};\n\nmodule.exports = Render;\n\nvar Body = __webpack_require__(4);\nvar Common = __webpack_require__(0);\nvar Composite = __webpack_require__(6);\nvar Bounds = __webpack_require__(1);\nvar Events = __webpack_require__(5);\nvar Vector = __webpack_require__(2);\nvar Mouse = __webpack_require__(14);\n\n(function() {\n\n var _requestAnimationFrame,\n _cancelAnimationFrame;\n\n if (typeof window !== 'undefined') {\n _requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame\n || window.mozRequestAnimationFrame || window.msRequestAnimationFrame\n || function(callback){ window.setTimeout(function() { callback(Common.now()); }, 1000 / 60); };\n\n _cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame\n || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame;\n }\n\n Render._goodFps = 30;\n Render._goodDelta = 1000 / 60;\n\n /**\n * Creates a new renderer. The options parameter is an object that specifies any properties you wish to override the defaults.\n * All properties have default values, and many are pre-calculated automatically based on other properties.\n * See the properties section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {object} [options]\n * @return {render} A new renderer\n */\n Render.create = function(options) {\n var defaults = {\n engine: null,\n element: null,\n canvas: null,\n mouse: null,\n frameRequestId: null,\n timing: {\n historySize: 60,\n delta: 0,\n deltaHistory: [],\n lastTime: 0,\n lastTimestamp: 0,\n lastElapsed: 0,\n timestampElapsed: 0,\n timestampElapsedHistory: [],\n engineDeltaHistory: [],\n engineElapsedHistory: [],\n engineUpdatesHistory: [],\n elapsedHistory: []\n },\n options: {\n width: 800,\n height: 600,\n pixelRatio: 1,\n background: '#14151f',\n wireframeBackground: '#14151f',\n wireframeStrokeStyle: '#bbb',\n hasBounds: !!options.bounds,\n enabled: true,\n wireframes: true,\n showSleeping: true,\n showDebug: false,\n showStats: false,\n showPerformance: false,\n showBounds: false,\n showVelocity: false,\n showCollisions: false,\n showSeparations: false,\n showAxes: false,\n showPositions: false,\n showAngleIndicator: false,\n showIds: false,\n showVertexNumbers: false,\n showConvexHulls: false,\n showInternalEdges: false,\n showMousePosition: false\n }\n };\n\n var render = Common.extend(defaults, options);\n\n if (render.canvas) {\n render.canvas.width = render.options.width || render.canvas.width;\n render.canvas.height = render.options.height || render.canvas.height;\n }\n\n render.mouse = options.mouse;\n render.engine = options.engine;\n render.canvas = render.canvas || _createCanvas(render.options.width, render.options.height);\n render.context = render.canvas.getContext('2d');\n render.textures = {};\n\n render.bounds = render.bounds || {\n min: {\n x: 0,\n y: 0\n },\n max: {\n x: render.canvas.width,\n y: render.canvas.height\n }\n };\n\n // for temporary back compatibility only\n render.controller = Render;\n render.options.showBroadphase = false;\n\n if (render.options.pixelRatio !== 1) {\n Render.setPixelRatio(render, render.options.pixelRatio);\n }\n\n if (Common.isElement(render.element)) {\n render.element.appendChild(render.canvas);\n }\n\n return render;\n };\n\n /**\n * Continuously updates the render canvas on the `requestAnimationFrame` event.\n * @method run\n * @param {render} render\n */\n Render.run = function(render) {\n (function loop(time){\n render.frameRequestId = _requestAnimationFrame(loop);\n \n _updateTiming(render, time);\n\n Render.world(render, time);\n\n render.context.setTransform(render.options.pixelRatio, 0, 0, render.options.pixelRatio, 0, 0);\n\n if (render.options.showStats || render.options.showDebug) {\n Render.stats(render, render.context, time);\n }\n\n if (render.options.showPerformance || render.options.showDebug) {\n Render.performance(render, render.context, time);\n }\n\n render.context.setTransform(1, 0, 0, 1, 0, 0);\n })();\n };\n\n /**\n * Ends execution of `Render.run` on the given `render`, by canceling the animation frame request event loop.\n * @method stop\n * @param {render} render\n */\n Render.stop = function(render) {\n _cancelAnimationFrame(render.frameRequestId);\n };\n\n /**\n * Sets the pixel ratio of the renderer and updates the canvas.\n * To automatically detect the correct ratio, pass the string `'auto'` for `pixelRatio`.\n * @method setPixelRatio\n * @param {render} render\n * @param {number} pixelRatio\n */\n Render.setPixelRatio = function(render, pixelRatio) {\n var options = render.options,\n canvas = render.canvas;\n\n if (pixelRatio === 'auto') {\n pixelRatio = _getPixelRatio(canvas);\n }\n\n options.pixelRatio = pixelRatio;\n canvas.setAttribute('data-pixel-ratio', pixelRatio);\n canvas.width = options.width * pixelRatio;\n canvas.height = options.height * pixelRatio;\n canvas.style.width = options.width + 'px';\n canvas.style.height = options.height + 'px';\n };\n\n /**\n * Sets the render `width` and `height`.\n * \n * Updates the canvas accounting for `render.options.pixelRatio`. \n * \n * Updates the bottom right render bound `render.bounds.max` relative to the provided `width` and `height`.\n * The top left render bound `render.bounds.min` isn't changed.\n * \n * Follow this call with `Render.lookAt` if you need to change the render bounds.\n * \n * See also `Render.setPixelRatio`.\n * @method setSize\n * @param {render} render\n * @param {number} width The width (in CSS pixels)\n * @param {number} height The height (in CSS pixels)\n */\n Render.setSize = function(render, width, height) {\n render.options.width = width;\n render.options.height = height;\n render.bounds.max.x = render.bounds.min.x + width;\n render.bounds.max.y = render.bounds.min.y + height;\n\n if (render.options.pixelRatio !== 1) {\n Render.setPixelRatio(render, render.options.pixelRatio);\n } else {\n render.canvas.width = width;\n render.canvas.height = height;\n }\n };\n\n /**\n * Positions and sizes the viewport around the given object bounds.\n * Objects must have at least one of the following properties:\n * - `object.bounds`\n * - `object.position`\n * - `object.min` and `object.max`\n * - `object.x` and `object.y`\n * @method lookAt\n * @param {render} render\n * @param {object[]} objects\n * @param {vector} [padding]\n * @param {bool} [center=true]\n */\n Render.lookAt = function(render, objects, padding, center) {\n center = typeof center !== 'undefined' ? center : true;\n objects = Common.isArray(objects) ? objects : [objects];\n padding = padding || {\n x: 0,\n y: 0\n };\n\n // find bounds of all objects\n var bounds = {\n min: { x: Infinity, y: Infinity },\n max: { x: -Infinity, y: -Infinity }\n };\n\n for (var i = 0; i < objects.length; i += 1) {\n var object = objects[i],\n min = object.bounds ? object.bounds.min : (object.min || object.position || object),\n max = object.bounds ? object.bounds.max : (object.max || object.position || object);\n\n if (min && max) {\n if (min.x < bounds.min.x)\n bounds.min.x = min.x;\n\n if (max.x > bounds.max.x)\n bounds.max.x = max.x;\n\n if (min.y < bounds.min.y)\n bounds.min.y = min.y;\n\n if (max.y > bounds.max.y)\n bounds.max.y = max.y;\n }\n }\n\n // find ratios\n var width = (bounds.max.x - bounds.min.x) + 2 * padding.x,\n height = (bounds.max.y - bounds.min.y) + 2 * padding.y,\n viewHeight = render.canvas.height,\n viewWidth = render.canvas.width,\n outerRatio = viewWidth / viewHeight,\n innerRatio = width / height,\n scaleX = 1,\n scaleY = 1;\n\n // find scale factor\n if (innerRatio > outerRatio) {\n scaleY = innerRatio / outerRatio;\n } else {\n scaleX = outerRatio / innerRatio;\n }\n\n // enable bounds\n render.options.hasBounds = true;\n\n // position and size\n render.bounds.min.x = bounds.min.x;\n render.bounds.max.x = bounds.min.x + width * scaleX;\n render.bounds.min.y = bounds.min.y;\n render.bounds.max.y = bounds.min.y + height * scaleY;\n\n // center\n if (center) {\n render.bounds.min.x += width * 0.5 - (width * scaleX) * 0.5;\n render.bounds.max.x += width * 0.5 - (width * scaleX) * 0.5;\n render.bounds.min.y += height * 0.5 - (height * scaleY) * 0.5;\n render.bounds.max.y += height * 0.5 - (height * scaleY) * 0.5;\n }\n\n // padding\n render.bounds.min.x -= padding.x;\n render.bounds.max.x -= padding.x;\n render.bounds.min.y -= padding.y;\n render.bounds.max.y -= padding.y;\n\n // update mouse\n if (render.mouse) {\n Mouse.setScale(render.mouse, {\n x: (render.bounds.max.x - render.bounds.min.x) / render.canvas.width,\n y: (render.bounds.max.y - render.bounds.min.y) / render.canvas.height\n });\n\n Mouse.setOffset(render.mouse, render.bounds.min);\n }\n };\n\n /**\n * Applies viewport transforms based on `render.bounds` to a render context.\n * @method startViewTransform\n * @param {render} render\n */\n Render.startViewTransform = function(render) {\n var boundsWidth = render.bounds.max.x - render.bounds.min.x,\n boundsHeight = render.bounds.max.y - render.bounds.min.y,\n boundsScaleX = boundsWidth / render.options.width,\n boundsScaleY = boundsHeight / render.options.height;\n\n render.context.setTransform(\n render.options.pixelRatio / boundsScaleX, 0, 0, \n render.options.pixelRatio / boundsScaleY, 0, 0\n );\n \n render.context.translate(-render.bounds.min.x, -render.bounds.min.y);\n };\n\n /**\n * Resets all transforms on the render context.\n * @method endViewTransform\n * @param {render} render\n */\n Render.endViewTransform = function(render) {\n render.context.setTransform(render.options.pixelRatio, 0, 0, render.options.pixelRatio, 0, 0);\n };\n\n /**\n * Renders the given `engine`'s `Matter.World` object.\n * This is the entry point for all rendering and should be called every time the scene changes.\n * @method world\n * @param {render} render\n */\n Render.world = function(render, time) {\n var startTime = Common.now(),\n engine = render.engine,\n world = engine.world,\n canvas = render.canvas,\n context = render.context,\n options = render.options,\n timing = render.timing;\n\n var allBodies = Composite.allBodies(world),\n allConstraints = Composite.allConstraints(world),\n background = options.wireframes ? options.wireframeBackground : options.background,\n bodies = [],\n constraints = [],\n i;\n\n var event = {\n timestamp: engine.timing.timestamp\n };\n\n Events.trigger(render, 'beforeRender', event);\n\n // apply background if it has changed\n if (render.currentBackground !== background)\n _applyBackground(render, background);\n\n // clear the canvas with a transparent fill, to allow the canvas background to show\n context.globalCompositeOperation = 'source-in';\n context.fillStyle = \"transparent\";\n context.fillRect(0, 0, canvas.width, canvas.height);\n context.globalCompositeOperation = 'source-over';\n\n // handle bounds\n if (options.hasBounds) {\n // filter out bodies that are not in view\n for (i = 0; i < allBodies.length; i++) {\n var body = allBodies[i];\n if (Bounds.overlaps(body.bounds, render.bounds))\n bodies.push(body);\n }\n\n // filter out constraints that are not in view\n for (i = 0; i < allConstraints.length; i++) {\n var constraint = allConstraints[i],\n bodyA = constraint.bodyA,\n bodyB = constraint.bodyB,\n pointAWorld = constraint.pointA,\n pointBWorld = constraint.pointB;\n\n if (bodyA) pointAWorld = Vector.add(bodyA.position, constraint.pointA);\n if (bodyB) pointBWorld = Vector.add(bodyB.position, constraint.pointB);\n\n if (!pointAWorld || !pointBWorld)\n continue;\n\n if (Bounds.contains(render.bounds, pointAWorld) || Bounds.contains(render.bounds, pointBWorld))\n constraints.push(constraint);\n }\n\n // transform the view\n Render.startViewTransform(render);\n\n // update mouse\n if (render.mouse) {\n Mouse.setScale(render.mouse, {\n x: (render.bounds.max.x - render.bounds.min.x) / render.options.width,\n y: (render.bounds.max.y - render.bounds.min.y) / render.options.height\n });\n\n Mouse.setOffset(render.mouse, render.bounds.min);\n }\n } else {\n constraints = allConstraints;\n bodies = allBodies;\n\n if (render.options.pixelRatio !== 1) {\n render.context.setTransform(render.options.pixelRatio, 0, 0, render.options.pixelRatio, 0, 0);\n }\n }\n\n if (!options.wireframes || (engine.enableSleeping && options.showSleeping)) {\n // fully featured rendering of bodies\n Render.bodies(render, bodies, context);\n } else {\n if (options.showConvexHulls)\n Render.bodyConvexHulls(render, bodies, context);\n\n // optimised method for wireframes only\n Render.bodyWireframes(render, bodies, context);\n }\n\n if (options.showBounds)\n Render.bodyBounds(render, bodies, context);\n\n if (options.showAxes || options.showAngleIndicator)\n Render.bodyAxes(render, bodies, context);\n\n if (options.showPositions)\n Render.bodyPositions(render, bodies, context);\n\n if (options.showVelocity)\n Render.bodyVelocity(render, bodies, context);\n\n if (options.showIds)\n Render.bodyIds(render, bodies, context);\n\n if (options.showSeparations)\n Render.separations(render, engine.pairs.list, context);\n\n if (options.showCollisions)\n Render.collisions(render, engine.pairs.list, context);\n\n if (options.showVertexNumbers)\n Render.vertexNumbers(render, bodies, context);\n\n if (options.showMousePosition)\n Render.mousePosition(render, render.mouse, context);\n\n Render.constraints(constraints, context);\n\n if (options.hasBounds) {\n // revert view transforms\n Render.endViewTransform(render);\n }\n\n Events.trigger(render, 'afterRender', event);\n\n // log the time elapsed computing this update\n timing.lastElapsed = Common.now() - startTime;\n };\n\n /**\n * Renders statistics about the engine and world useful for debugging.\n * @private\n * @method stats\n * @param {render} render\n * @param {RenderingContext} context\n * @param {Number} time\n */\n Render.stats = function(render, context, time) {\n var engine = render.engine,\n world = engine.world,\n bodies = Composite.allBodies(world),\n parts = 0,\n width = 55,\n height = 44,\n x = 0,\n y = 0;\n \n // count parts\n for (var i = 0; i < bodies.length; i += 1) {\n parts += bodies[i].parts.length;\n }\n\n // sections\n var sections = {\n 'Part': parts,\n 'Body': bodies.length,\n 'Cons': Composite.allConstraints(world).length,\n 'Comp': Composite.allComposites(world).length,\n 'Pair': engine.pairs.list.length\n };\n\n // background\n context.fillStyle = '#0e0f19';\n context.fillRect(x, y, width * 5.5, height);\n\n context.font = '12px Arial';\n context.textBaseline = 'top';\n context.textAlign = 'right';\n\n // sections\n for (var key in sections) {\n var section = sections[key];\n // label\n context.fillStyle = '#aaa';\n context.fillText(key, x + width, y + 8);\n\n // value\n context.fillStyle = '#eee';\n context.fillText(section, x + width, y + 26);\n\n x += width;\n }\n };\n\n /**\n * Renders engine and render performance information.\n * @private\n * @method performance\n * @param {render} render\n * @param {RenderingContext} context\n */\n Render.performance = function(render, context) {\n var engine = render.engine,\n timing = render.timing,\n deltaHistory = timing.deltaHistory,\n elapsedHistory = timing.elapsedHistory,\n timestampElapsedHistory = timing.timestampElapsedHistory,\n engineDeltaHistory = timing.engineDeltaHistory,\n engineUpdatesHistory = timing.engineUpdatesHistory,\n engineElapsedHistory = timing.engineElapsedHistory,\n lastEngineUpdatesPerFrame = engine.timing.lastUpdatesPerFrame,\n lastEngineDelta = engine.timing.lastDelta;\n \n var deltaMean = _mean(deltaHistory),\n elapsedMean = _mean(elapsedHistory),\n engineDeltaMean = _mean(engineDeltaHistory),\n engineUpdatesMean = _mean(engineUpdatesHistory),\n engineElapsedMean = _mean(engineElapsedHistory),\n timestampElapsedMean = _mean(timestampElapsedHistory),\n rateMean = (timestampElapsedMean / deltaMean) || 0,\n neededUpdatesPerFrame = Math.round(deltaMean / lastEngineDelta),\n fps = (1000 / deltaMean) || 0;\n\n var graphHeight = 4,\n gap = 12,\n width = 60,\n height = 34,\n x = 10,\n y = 69;\n\n // background\n context.fillStyle = '#0e0f19';\n context.fillRect(0, 50, gap * 5 + width * 6 + 22, height);\n\n // show FPS\n Render.status(\n context, x, y, width, graphHeight, deltaHistory.length, \n Math.round(fps) + ' fps', \n fps / Render._goodFps,\n function(i) { return (deltaHistory[i] / deltaMean) - 1; }\n );\n\n // show engine delta\n Render.status(\n context, x + gap + width, y, width, graphHeight, engineDeltaHistory.length,\n lastEngineDelta.toFixed(2) + ' dt', \n Render._goodDelta / lastEngineDelta,\n function(i) { return (engineDeltaHistory[i] / engineDeltaMean) - 1; }\n );\n\n // show engine updates per frame\n Render.status(\n context, x + (gap + width) * 2, y, width, graphHeight, engineUpdatesHistory.length,\n lastEngineUpdatesPerFrame + ' upf', \n Math.pow(Common.clamp((engineUpdatesMean / neededUpdatesPerFrame) || 1, 0, 1), 4),\n function(i) { return (engineUpdatesHistory[i] / engineUpdatesMean) - 1; }\n );\n\n // show engine update time\n Render.status(\n context, x + (gap + width) * 3, y, width, graphHeight, engineElapsedHistory.length,\n engineElapsedMean.toFixed(2) + ' ut', \n 1 - (lastEngineUpdatesPerFrame * engineElapsedMean / Render._goodFps),\n function(i) { return (engineElapsedHistory[i] / engineElapsedMean) - 1; }\n );\n\n // show render time\n Render.status(\n context, x + (gap + width) * 4, y, width, graphHeight, elapsedHistory.length,\n elapsedMean.toFixed(2) + ' rt', \n 1 - (elapsedMean / Render._goodFps),\n function(i) { return (elapsedHistory[i] / elapsedMean) - 1; }\n );\n\n // show effective speed\n Render.status(\n context, x + (gap + width) * 5, y, width, graphHeight, timestampElapsedHistory.length, \n rateMean.toFixed(2) + ' x', \n rateMean * rateMean * rateMean,\n function(i) { return (((timestampElapsedHistory[i] / deltaHistory[i]) / rateMean) || 0) - 1; }\n );\n };\n\n /**\n * Renders a label, indicator and a chart.\n * @private\n * @method status\n * @param {RenderingContext} context\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {number} count\n * @param {string} label\n * @param {string} indicator\n * @param {function} plotY\n */\n Render.status = function(context, x, y, width, height, count, label, indicator, plotY) {\n // background\n context.strokeStyle = '#888';\n context.fillStyle = '#444';\n context.lineWidth = 1;\n context.fillRect(x, y + 7, width, 1);\n\n // chart\n context.beginPath();\n context.moveTo(x, y + 7 - height * Common.clamp(0.4 * plotY(0), -2, 2));\n for (var i = 0; i < width; i += 1) {\n context.lineTo(x + i, y + 7 - (i < count ? height * Common.clamp(0.4 * plotY(i), -2, 2) : 0));\n }\n context.stroke();\n\n // indicator\n context.fillStyle = 'hsl(' + Common.clamp(25 + 95 * indicator, 0, 120) + ',100%,60%)';\n context.fillRect(x, y - 7, 4, 4);\n\n // label\n context.font = '12px Arial';\n context.textBaseline = 'middle';\n context.textAlign = 'right';\n context.fillStyle = '#eee';\n context.fillText(label, x + width, y - 5);\n };\n\n /**\n * Description\n * @private\n * @method constraints\n * @param {constraint[]} constraints\n * @param {RenderingContext} context\n */\n Render.constraints = function(constraints, context) {\n var c = context;\n\n for (var i = 0; i < constraints.length; i++) {\n var constraint = constraints[i];\n\n if (!constraint.render.visible || !constraint.pointA || !constraint.pointB)\n continue;\n\n var bodyA = constraint.bodyA,\n bodyB = constraint.bodyB,\n start,\n end;\n\n if (bodyA) {\n start = Vector.add(bodyA.position, constraint.pointA);\n } else {\n start = constraint.pointA;\n }\n\n if (constraint.render.type === 'pin') {\n c.beginPath();\n c.arc(start.x, start.y, 3, 0, 2 * Math.PI);\n c.closePath();\n } else {\n if (bodyB) {\n end = Vector.add(bodyB.position, constraint.pointB);\n } else {\n end = constraint.pointB;\n }\n\n c.beginPath();\n c.moveTo(start.x, start.y);\n\n if (constraint.render.type === 'spring') {\n var delta = Vector.sub(end, start),\n normal = Vector.perp(Vector.normalise(delta)),\n coils = Math.ceil(Common.clamp(constraint.length / 5, 12, 20)),\n offset;\n\n for (var j = 1; j < coils; j += 1) {\n offset = j % 2 === 0 ? 1 : -1;\n\n c.lineTo(\n start.x + delta.x * (j / coils) + normal.x * offset * 4,\n start.y + delta.y * (j / coils) + normal.y * offset * 4\n );\n }\n }\n\n c.lineTo(end.x, end.y);\n }\n\n if (constraint.render.lineWidth) {\n c.lineWidth = constraint.render.lineWidth;\n c.strokeStyle = constraint.render.strokeStyle;\n c.stroke();\n }\n\n if (constraint.render.anchors) {\n c.fillStyle = constraint.render.strokeStyle;\n c.beginPath();\n c.arc(start.x, start.y, 3, 0, 2 * Math.PI);\n c.arc(end.x, end.y, 3, 0, 2 * Math.PI);\n c.closePath();\n c.fill();\n }\n }\n };\n\n /**\n * Description\n * @private\n * @method bodies\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodies = function(render, bodies, context) {\n var c = context,\n engine = render.engine,\n options = render.options,\n showInternalEdges = options.showInternalEdges || !options.wireframes,\n body,\n part,\n i,\n k;\n\n for (i = 0; i < bodies.length; i++) {\n body = bodies[i];\n\n if (!body.render.visible)\n continue;\n\n // handle compound parts\n for (k = body.parts.length > 1 ? 1 : 0; k < body.parts.length; k++) {\n part = body.parts[k];\n\n if (!part.render.visible)\n continue;\n\n if (options.showSleeping && body.isSleeping) {\n c.globalAlpha = 0.5 * part.render.opacity;\n } else if (part.render.opacity !== 1) {\n c.globalAlpha = part.render.opacity;\n }\n\n if (part.render.sprite && part.render.sprite.texture && !options.wireframes) {\n // part sprite\n var sprite = part.render.sprite,\n texture = _getTexture(render, sprite.texture);\n\n c.translate(part.position.x, part.position.y);\n c.rotate(part.angle);\n\n c.drawImage(\n texture,\n texture.width * -sprite.xOffset * sprite.xScale,\n texture.height * -sprite.yOffset * sprite.yScale,\n texture.width * sprite.xScale,\n texture.height * sprite.yScale\n );\n\n // revert translation, hopefully faster than save / restore\n c.rotate(-part.angle);\n c.translate(-part.position.x, -part.position.y);\n } else {\n // part polygon\n if (part.circleRadius) {\n c.beginPath();\n c.arc(part.position.x, part.position.y, part.circleRadius, 0, 2 * Math.PI);\n } else {\n c.beginPath();\n c.moveTo(part.vertices[0].x, part.vertices[0].y);\n\n for (var j = 1; j < part.vertices.length; j++) {\n if (!part.vertices[j - 1].isInternal || showInternalEdges) {\n c.lineTo(part.vertices[j].x, part.vertices[j].y);\n } else {\n c.moveTo(part.vertices[j].x, part.vertices[j].y);\n }\n\n if (part.vertices[j].isInternal && !showInternalEdges) {\n c.moveTo(part.vertices[(j + 1) % part.vertices.length].x, part.vertices[(j + 1) % part.vertices.length].y);\n }\n }\n\n c.lineTo(part.vertices[0].x, part.vertices[0].y);\n c.closePath();\n }\n\n if (!options.wireframes) {\n c.fillStyle = part.render.fillStyle;\n\n if (part.render.lineWidth) {\n c.lineWidth = part.render.lineWidth;\n c.strokeStyle = part.render.strokeStyle;\n c.stroke();\n }\n\n c.fill();\n } else {\n c.lineWidth = 1;\n c.strokeStyle = render.options.wireframeStrokeStyle;\n c.stroke();\n }\n }\n\n c.globalAlpha = 1;\n }\n }\n };\n\n /**\n * Optimised method for drawing body wireframes in one pass\n * @private\n * @method bodyWireframes\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyWireframes = function(render, bodies, context) {\n var c = context,\n showInternalEdges = render.options.showInternalEdges,\n body,\n part,\n i,\n j,\n k;\n\n c.beginPath();\n\n // render all bodies\n for (i = 0; i < bodies.length; i++) {\n body = bodies[i];\n\n if (!body.render.visible)\n continue;\n\n // handle compound parts\n for (k = body.parts.length > 1 ? 1 : 0; k < body.parts.length; k++) {\n part = body.parts[k];\n\n c.moveTo(part.vertices[0].x, part.vertices[0].y);\n\n for (j = 1; j < part.vertices.length; j++) {\n if (!part.vertices[j - 1].isInternal || showInternalEdges) {\n c.lineTo(part.vertices[j].x, part.vertices[j].y);\n } else {\n c.moveTo(part.vertices[j].x, part.vertices[j].y);\n }\n\n if (part.vertices[j].isInternal && !showInternalEdges) {\n c.moveTo(part.vertices[(j + 1) % part.vertices.length].x, part.vertices[(j + 1) % part.vertices.length].y);\n }\n }\n\n c.lineTo(part.vertices[0].x, part.vertices[0].y);\n }\n }\n\n c.lineWidth = 1;\n c.strokeStyle = render.options.wireframeStrokeStyle;\n c.stroke();\n };\n\n /**\n * Optimised method for drawing body convex hull wireframes in one pass\n * @private\n * @method bodyConvexHulls\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyConvexHulls = function(render, bodies, context) {\n var c = context,\n body,\n part,\n i,\n j,\n k;\n\n c.beginPath();\n\n // render convex hulls\n for (i = 0; i < bodies.length; i++) {\n body = bodies[i];\n\n if (!body.render.visible || body.parts.length === 1)\n continue;\n\n c.moveTo(body.vertices[0].x, body.vertices[0].y);\n\n for (j = 1; j < body.vertices.length; j++) {\n c.lineTo(body.vertices[j].x, body.vertices[j].y);\n }\n\n c.lineTo(body.vertices[0].x, body.vertices[0].y);\n }\n\n c.lineWidth = 1;\n c.strokeStyle = 'rgba(255,255,255,0.2)';\n c.stroke();\n };\n\n /**\n * Renders body vertex numbers.\n * @private\n * @method vertexNumbers\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.vertexNumbers = function(render, bodies, context) {\n var c = context,\n i,\n j,\n k;\n\n for (i = 0; i < bodies.length; i++) {\n var parts = bodies[i].parts;\n for (k = parts.length > 1 ? 1 : 0; k < parts.length; k++) {\n var part = parts[k];\n for (j = 0; j < part.vertices.length; j++) {\n c.fillStyle = 'rgba(255,255,255,0.2)';\n c.fillText(i + '_' + j, part.position.x + (part.vertices[j].x - part.position.x) * 0.8, part.position.y + (part.vertices[j].y - part.position.y) * 0.8);\n }\n }\n }\n };\n\n /**\n * Renders mouse position.\n * @private\n * @method mousePosition\n * @param {render} render\n * @param {mouse} mouse\n * @param {RenderingContext} context\n */\n Render.mousePosition = function(render, mouse, context) {\n var c = context;\n c.fillStyle = 'rgba(255,255,255,0.8)';\n c.fillText(mouse.position.x + ' ' + mouse.position.y, mouse.position.x + 5, mouse.position.y - 5);\n };\n\n /**\n * Draws body bounds\n * @private\n * @method bodyBounds\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyBounds = function(render, bodies, context) {\n var c = context,\n engine = render.engine,\n options = render.options;\n\n c.beginPath();\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i];\n\n if (body.render.visible) {\n var parts = bodies[i].parts;\n for (var j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n var part = parts[j];\n c.rect(part.bounds.min.x, part.bounds.min.y, part.bounds.max.x - part.bounds.min.x, part.bounds.max.y - part.bounds.min.y);\n }\n }\n }\n\n if (options.wireframes) {\n c.strokeStyle = 'rgba(255,255,255,0.08)';\n } else {\n c.strokeStyle = 'rgba(0,0,0,0.1)';\n }\n\n c.lineWidth = 1;\n c.stroke();\n };\n\n /**\n * Draws body angle indicators and axes\n * @private\n * @method bodyAxes\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyAxes = function(render, bodies, context) {\n var c = context,\n engine = render.engine,\n options = render.options,\n part,\n i,\n j,\n k;\n\n c.beginPath();\n\n for (i = 0; i < bodies.length; i++) {\n var body = bodies[i],\n parts = body.parts;\n\n if (!body.render.visible)\n continue;\n\n if (options.showAxes) {\n // render all axes\n for (j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n part = parts[j];\n for (k = 0; k < part.axes.length; k++) {\n var axis = part.axes[k];\n c.moveTo(part.position.x, part.position.y);\n c.lineTo(part.position.x + axis.x * 20, part.position.y + axis.y * 20);\n }\n }\n } else {\n for (j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n part = parts[j];\n for (k = 0; k < part.axes.length; k++) {\n // render a single axis indicator\n c.moveTo(part.position.x, part.position.y);\n c.lineTo((part.vertices[0].x + part.vertices[part.vertices.length-1].x) / 2,\n (part.vertices[0].y + part.vertices[part.vertices.length-1].y) / 2);\n }\n }\n }\n }\n\n if (options.wireframes) {\n c.strokeStyle = 'indianred';\n c.lineWidth = 1;\n } else {\n c.strokeStyle = 'rgba(255, 255, 255, 0.4)';\n c.globalCompositeOperation = 'overlay';\n c.lineWidth = 2;\n }\n\n c.stroke();\n c.globalCompositeOperation = 'source-over';\n };\n\n /**\n * Draws body positions\n * @private\n * @method bodyPositions\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyPositions = function(render, bodies, context) {\n var c = context,\n engine = render.engine,\n options = render.options,\n body,\n part,\n i,\n k;\n\n c.beginPath();\n\n // render current positions\n for (i = 0; i < bodies.length; i++) {\n body = bodies[i];\n\n if (!body.render.visible)\n continue;\n\n // handle compound parts\n for (k = 0; k < body.parts.length; k++) {\n part = body.parts[k];\n c.arc(part.position.x, part.position.y, 3, 0, 2 * Math.PI, false);\n c.closePath();\n }\n }\n\n if (options.wireframes) {\n c.fillStyle = 'indianred';\n } else {\n c.fillStyle = 'rgba(0,0,0,0.5)';\n }\n c.fill();\n\n c.beginPath();\n\n // render previous positions\n for (i = 0; i < bodies.length; i++) {\n body = bodies[i];\n if (body.render.visible) {\n c.arc(body.positionPrev.x, body.positionPrev.y, 2, 0, 2 * Math.PI, false);\n c.closePath();\n }\n }\n\n c.fillStyle = 'rgba(255,165,0,0.8)';\n c.fill();\n };\n\n /**\n * Draws body velocity\n * @private\n * @method bodyVelocity\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyVelocity = function(render, bodies, context) {\n var c = context;\n\n c.beginPath();\n\n for (var i = 0; i < bodies.length; i++) {\n var body = bodies[i];\n\n if (!body.render.visible)\n continue;\n\n var velocity = Body.getVelocity(body);\n\n c.moveTo(body.position.x, body.position.y);\n c.lineTo(body.position.x + velocity.x, body.position.y + velocity.y);\n }\n\n c.lineWidth = 3;\n c.strokeStyle = 'cornflowerblue';\n c.stroke();\n };\n\n /**\n * Draws body ids\n * @private\n * @method bodyIds\n * @param {render} render\n * @param {body[]} bodies\n * @param {RenderingContext} context\n */\n Render.bodyIds = function(render, bodies, context) {\n var c = context,\n i,\n j;\n\n for (i = 0; i < bodies.length; i++) {\n if (!bodies[i].render.visible)\n continue;\n\n var parts = bodies[i].parts;\n for (j = parts.length > 1 ? 1 : 0; j < parts.length; j++) {\n var part = parts[j];\n c.font = \"12px Arial\";\n c.fillStyle = 'rgba(255,255,255,0.5)';\n c.fillText(part.id, part.position.x + 10, part.position.y - 10);\n }\n }\n };\n\n /**\n * Description\n * @private\n * @method collisions\n * @param {render} render\n * @param {pair[]} pairs\n * @param {RenderingContext} context\n */\n Render.collisions = function(render, pairs, context) {\n var c = context,\n options = render.options,\n pair,\n collision,\n corrected,\n bodyA,\n bodyB,\n i,\n j;\n\n c.beginPath();\n\n // render collision positions\n for (i = 0; i < pairs.length; i++) {\n pair = pairs[i];\n\n if (!pair.isActive)\n continue;\n\n collision = pair.collision;\n for (j = 0; j < pair.contactCount; j++) {\n var contact = pair.contacts[j],\n vertex = contact.vertex;\n c.rect(vertex.x - 1.5, vertex.y - 1.5, 3.5, 3.5);\n }\n }\n\n if (options.wireframes) {\n c.fillStyle = 'rgba(255,255,255,0.7)';\n } else {\n c.fillStyle = 'orange';\n }\n c.fill();\n\n c.beginPath();\n\n // render collision normals\n for (i = 0; i < pairs.length; i++) {\n pair = pairs[i];\n\n if (!pair.isActive)\n continue;\n\n collision = pair.collision;\n\n if (pair.contactCount > 0) {\n var normalPosX = pair.contacts[0].vertex.x,\n normalPosY = pair.contacts[0].vertex.y;\n\n if (pair.contactCount === 2) {\n normalPosX = (pair.contacts[0].vertex.x + pair.contacts[1].vertex.x) / 2;\n normalPosY = (pair.contacts[0].vertex.y + pair.contacts[1].vertex.y) / 2;\n }\n\n if (collision.bodyB === collision.supports[0].body || collision.bodyA.isStatic === true) {\n c.moveTo(normalPosX - collision.normal.x * 8, normalPosY - collision.normal.y * 8);\n } else {\n c.moveTo(normalPosX + collision.normal.x * 8, normalPosY + collision.normal.y * 8);\n }\n\n c.lineTo(normalPosX, normalPosY);\n }\n }\n\n if (options.wireframes) {\n c.strokeStyle = 'rgba(255,165,0,0.7)';\n } else {\n c.strokeStyle = 'orange';\n }\n\n c.lineWidth = 1;\n c.stroke();\n };\n\n /**\n * Description\n * @private\n * @method separations\n * @param {render} render\n * @param {pair[]} pairs\n * @param {RenderingContext} context\n */\n Render.separations = function(render, pairs, context) {\n var c = context,\n options = render.options,\n pair,\n collision,\n corrected,\n bodyA,\n bodyB,\n i,\n j;\n\n c.beginPath();\n\n // render separations\n for (i = 0; i < pairs.length; i++) {\n pair = pairs[i];\n\n if (!pair.isActive)\n continue;\n\n collision = pair.collision;\n bodyA = collision.bodyA;\n bodyB = collision.bodyB;\n\n var k = 1;\n\n if (!bodyB.isStatic && !bodyA.isStatic) k = 0.5;\n if (bodyB.isStatic) k = 0;\n\n c.moveTo(bodyB.position.x, bodyB.position.y);\n c.lineTo(bodyB.position.x - collision.penetration.x * k, bodyB.position.y - collision.penetration.y * k);\n\n k = 1;\n\n if (!bodyB.isStatic && !bodyA.isStatic) k = 0.5;\n if (bodyA.isStatic) k = 0;\n\n c.moveTo(bodyA.position.x, bodyA.position.y);\n c.lineTo(bodyA.position.x + collision.penetration.x * k, bodyA.position.y + collision.penetration.y * k);\n }\n\n if (options.wireframes) {\n c.strokeStyle = 'rgba(255,165,0,0.5)';\n } else {\n c.strokeStyle = 'orange';\n }\n c.stroke();\n };\n\n /**\n * Description\n * @private\n * @method inspector\n * @param {inspector} inspector\n * @param {RenderingContext} context\n */\n Render.inspector = function(inspector, context) {\n var engine = inspector.engine,\n selected = inspector.selected,\n render = inspector.render,\n options = render.options,\n bounds;\n\n if (options.hasBounds) {\n var boundsWidth = render.bounds.max.x - render.bounds.min.x,\n boundsHeight = render.bounds.max.y - render.bounds.min.y,\n boundsScaleX = boundsWidth / render.options.width,\n boundsScaleY = boundsHeight / render.options.height;\n\n context.scale(1 / boundsScaleX, 1 / boundsScaleY);\n context.translate(-render.bounds.min.x, -render.bounds.min.y);\n }\n\n for (var i = 0; i < selected.length; i++) {\n var item = selected[i].data;\n\n context.translate(0.5, 0.5);\n context.lineWidth = 1;\n context.strokeStyle = 'rgba(255,165,0,0.9)';\n context.setLineDash([1,2]);\n\n switch (item.type) {\n\n case 'body':\n\n // render body selections\n bounds = item.bounds;\n context.beginPath();\n context.rect(Math.floor(bounds.min.x - 3), Math.floor(bounds.min.y - 3),\n Math.floor(bounds.max.x - bounds.min.x + 6), Math.floor(bounds.max.y - bounds.min.y + 6));\n context.closePath();\n context.stroke();\n\n break;\n\n case 'constraint':\n\n // render constraint selections\n var point = item.pointA;\n if (item.bodyA)\n point = item.pointB;\n context.beginPath();\n context.arc(point.x, point.y, 10, 0, 2 * Math.PI);\n context.closePath();\n context.stroke();\n\n break;\n\n }\n\n context.setLineDash([]);\n context.translate(-0.5, -0.5);\n }\n\n // render selection region\n if (inspector.selectStart !== null) {\n context.translate(0.5, 0.5);\n context.lineWidth = 1;\n context.strokeStyle = 'rgba(255,165,0,0.6)';\n context.fillStyle = 'rgba(255,165,0,0.1)';\n bounds = inspector.selectBounds;\n context.beginPath();\n context.rect(Math.floor(bounds.min.x), Math.floor(bounds.min.y),\n Math.floor(bounds.max.x - bounds.min.x), Math.floor(bounds.max.y - bounds.min.y));\n context.closePath();\n context.stroke();\n context.fill();\n context.translate(-0.5, -0.5);\n }\n\n if (options.hasBounds)\n context.setTransform(1, 0, 0, 1, 0, 0);\n };\n\n /**\n * Updates render timing.\n * @method _updateTiming\n * @private\n * @param {render} render\n * @param {number} time\n */\n var _updateTiming = function(render, time) {\n var engine = render.engine,\n timing = render.timing,\n historySize = timing.historySize,\n timestamp = engine.timing.timestamp;\n\n timing.delta = time - timing.lastTime || Render._goodDelta;\n timing.lastTime = time;\n\n timing.timestampElapsed = timestamp - timing.lastTimestamp || 0;\n timing.lastTimestamp = timestamp;\n\n timing.deltaHistory.unshift(timing.delta);\n timing.deltaHistory.length = Math.min(timing.deltaHistory.length, historySize);\n\n timing.engineDeltaHistory.unshift(engine.timing.lastDelta);\n timing.engineDeltaHistory.length = Math.min(timing.engineDeltaHistory.length, historySize);\n\n timing.timestampElapsedHistory.unshift(timing.timestampElapsed);\n timing.timestampElapsedHistory.length = Math.min(timing.timestampElapsedHistory.length, historySize);\n\n timing.engineUpdatesHistory.unshift(engine.timing.lastUpdatesPerFrame);\n timing.engineUpdatesHistory.length = Math.min(timing.engineUpdatesHistory.length, historySize);\n\n timing.engineElapsedHistory.unshift(engine.timing.lastElapsed);\n timing.engineElapsedHistory.length = Math.min(timing.engineElapsedHistory.length, historySize);\n\n timing.elapsedHistory.unshift(timing.lastElapsed);\n timing.elapsedHistory.length = Math.min(timing.elapsedHistory.length, historySize);\n };\n\n /**\n * Returns the mean value of the given numbers.\n * @method _mean\n * @private\n * @param {Number[]} values\n * @return {Number} the mean of given values\n */\n var _mean = function(values) {\n var result = 0;\n for (var i = 0; i < values.length; i += 1) {\n result += values[i];\n }\n return (result / values.length) || 0;\n };\n\n /**\n * @method _createCanvas\n * @private\n * @param {} width\n * @param {} height\n * @return canvas\n */\n var _createCanvas = function(width, height) {\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n canvas.oncontextmenu = function() { return false; };\n canvas.onselectstart = function() { return false; };\n return canvas;\n };\n\n /**\n * Gets the pixel ratio of the canvas.\n * @method _getPixelRatio\n * @private\n * @param {HTMLElement} canvas\n * @return {Number} pixel ratio\n */\n var _getPixelRatio = function(canvas) {\n var context = canvas.getContext('2d'),\n devicePixelRatio = window.devicePixelRatio || 1,\n backingStorePixelRatio = context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio\n || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio\n || context.backingStorePixelRatio || 1;\n\n return devicePixelRatio / backingStorePixelRatio;\n };\n\n /**\n * Gets the requested texture (an Image) via its path\n * @method _getTexture\n * @private\n * @param {render} render\n * @param {string} imagePath\n * @return {Image} texture\n */\n var _getTexture = function(render, imagePath) {\n var image = render.textures[imagePath];\n\n if (image)\n return image;\n\n image = render.textures[imagePath] = new Image();\n image.src = imagePath;\n\n return image;\n };\n\n /**\n * Applies the background to the canvas using CSS.\n * @method applyBackground\n * @private\n * @param {render} render\n * @param {string} background\n */\n var _applyBackground = function(render, background) {\n var cssBackground = background;\n\n if (/(jpg|gif|png)$/.test(background))\n cssBackground = 'url(' + background + ')';\n\n render.canvas.style.background = cssBackground;\n render.canvas.style.backgroundSize = \"contain\";\n render.currentBackground = background;\n };\n\n /*\n *\n * Events Documentation\n *\n */\n\n /**\n * Fired before rendering\n *\n * @event beforeRender\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired after rendering\n *\n * @event afterRender\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * A back-reference to the `Matter.Render` module.\n *\n * @deprecated\n * @property controller\n * @type render\n */\n\n /**\n * A reference to the `Matter.Engine` instance to be used.\n *\n * @property engine\n * @type engine\n */\n\n /**\n * A reference to the element where the canvas is to be inserted (if `render.canvas` has not been specified)\n *\n * @property element\n * @type HTMLElement\n * @default null\n */\n\n /**\n * The canvas element to render to. If not specified, one will be created if `render.element` has been specified.\n *\n * @property canvas\n * @type HTMLCanvasElement\n * @default null\n */\n\n /**\n * A `Bounds` object that specifies the drawing view region.\n * Rendering will be automatically transformed and scaled to fit within the canvas size (`render.options.width` and `render.options.height`).\n * This allows for creating views that can pan or zoom around the scene.\n * You must also set `render.options.hasBounds` to `true` to enable bounded rendering.\n *\n * @property bounds\n * @type bounds\n */\n\n /**\n * The 2d rendering context from the `render.canvas` element.\n *\n * @property context\n * @type CanvasRenderingContext2D\n */\n\n /**\n * The sprite texture cache.\n *\n * @property textures\n * @type {}\n */\n\n /**\n * The mouse to render if `render.options.showMousePosition` is enabled.\n *\n * @property mouse\n * @type mouse\n * @default null\n */\n\n /**\n * The configuration options of the renderer.\n *\n * @property options\n * @type {}\n */\n\n /**\n * The target width in pixels of the `render.canvas` to be created.\n * See also the `options.pixelRatio` property to change render quality.\n *\n * @property options.width\n * @type number\n * @default 800\n */\n\n /**\n * The target height in pixels of the `render.canvas` to be created.\n * See also the `options.pixelRatio` property to change render quality.\n *\n * @property options.height\n * @type number\n * @default 600\n */\n\n /**\n * The [pixel ratio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio) to use when rendering.\n *\n * @property options.pixelRatio\n * @type number\n * @default 1\n */\n\n /**\n * A CSS background color string to use when `render.options.wireframes` is disabled.\n * This may be also set to `'transparent'` or equivalent.\n *\n * @property options.background\n * @type string\n * @default '#14151f'\n */\n\n /**\n * A CSS color string to use for background when `render.options.wireframes` is enabled.\n * This may be also set to `'transparent'` or equivalent.\n *\n * @property options.wireframeBackground\n * @type string\n * @default '#14151f'\n */\n\n /**\n * A CSS color string to use for stroke when `render.options.wireframes` is enabled.\n * This may be also set to `'transparent'` or equivalent.\n *\n * @property options.wireframeStrokeStyle\n * @type string\n * @default '#bbb'\n */\n\n /**\n * A flag that specifies if `render.bounds` should be used when rendering.\n *\n * @property options.hasBounds\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable all debug information overlays together. \n * This includes and has priority over the values of:\n *\n * - `render.options.showStats`\n * - `render.options.showPerformance`\n *\n * @property options.showDebug\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the engine stats info overlay. \n * From left to right, the values shown are:\n *\n * - body parts total\n * - body total\n * - constraints total\n * - composites total\n * - collision pairs total\n *\n * @property options.showStats\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable performance charts. \n * From left to right, the values shown are:\n *\n * - average render frequency (e.g. 60 fps)\n * - exact engine delta time used for last update (e.g. 16.66ms)\n * - average updates per frame (e.g. 1)\n * - average engine execution duration (e.g. 5.00ms)\n * - average render execution duration (e.g. 0.40ms)\n * - average effective play speed (e.g. '1.00x' is 'real-time')\n *\n * Each value is recorded over a fixed sample of past frames (60 frames).\n *\n * A chart shown below each value indicates the variance from the average over the sample.\n * The more stable or fixed the value is the flatter the chart will appear.\n *\n * @property options.showPerformance\n * @type boolean\n * @default false\n */\n \n /**\n * A flag to enable or disable rendering entirely.\n *\n * @property options.enabled\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to toggle wireframe rendering otherwise solid fill rendering is used.\n *\n * @property options.wireframes\n * @type boolean\n * @default true\n */\n\n /**\n * A flag to enable or disable sleeping bodies indicators.\n *\n * @property options.showSleeping\n * @type boolean\n * @default true\n */\n\n /**\n * A flag to enable or disable the debug information overlay.\n *\n * @property options.showDebug\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the collision broadphase debug overlay.\n *\n * @deprecated no longer implemented\n * @property options.showBroadphase\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body bounds debug overlay.\n *\n * @property options.showBounds\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body velocity debug overlay.\n *\n * @property options.showVelocity\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body collisions debug overlay.\n *\n * @property options.showCollisions\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the collision resolver separations debug overlay.\n *\n * @property options.showSeparations\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body axes debug overlay.\n *\n * @property options.showAxes\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body positions debug overlay.\n *\n * @property options.showPositions\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body angle debug overlay.\n *\n * @property options.showAngleIndicator\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body and part ids debug overlay.\n *\n * @property options.showIds\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body vertex numbers debug overlay.\n *\n * @property options.showVertexNumbers\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body convex hulls debug overlay.\n *\n * @property options.showConvexHulls\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the body internal edges debug overlay.\n *\n * @property options.showInternalEdges\n * @type boolean\n * @default false\n */\n\n /**\n * A flag to enable or disable the mouse position debug overlay.\n *\n * @property options.showMousePosition\n * @type boolean\n * @default false\n */\n\n})();\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Runner` module is an optional utility that provides a game loop for running a `Matter.Engine` inside a browser environment.\n* A runner will continuously update a `Matter.Engine` whilst synchronising engine updates with the browser frame rate.\n* This runner favours a smoother user experience over perfect time keeping.\n* This runner is optional and is used for development and debugging but could be useful as a starting point for implementing some games and experiences.\n* Alternatively see `Engine.update` to step the engine directly inside your own game loop implementation as may be needed inside other environments.\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Runner\n*/\n\nvar Runner = {};\n\nmodule.exports = Runner;\n\nvar Events = __webpack_require__(5);\nvar Engine = __webpack_require__(17);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n Runner._maxFrameDelta = 1000 / 15;\n Runner._frameDeltaFallback = 1000 / 60;\n Runner._timeBufferMargin = 1.5;\n Runner._elapsedNextEstimate = 1;\n Runner._smoothingLowerBound = 0.1;\n Runner._smoothingUpperBound = 0.9;\n\n /**\n * Creates a new Runner. \n * See the properties section below for detailed information on what you can pass via the `options` object.\n * @method create\n * @param {} options\n */\n Runner.create = function(options) {\n var defaults = {\n delta: 1000 / 60,\n frameDelta: null,\n frameDeltaSmoothing: true,\n frameDeltaSnapping: true,\n frameDeltaHistory: [],\n frameDeltaHistorySize: 100,\n frameRequestId: null,\n timeBuffer: 0,\n timeLastTick: null,\n maxUpdates: null,\n maxFrameTime: 1000 / 30,\n lastUpdatesDeferred: 0,\n enabled: true\n };\n\n var runner = Common.extend(defaults, options);\n\n // for temporary back compatibility only\n runner.fps = 0;\n\n return runner;\n };\n\n /**\n * Runs a `Matter.Engine` whilst synchronising engine updates with the browser frame rate. \n * See module and properties descriptions for more information on this runner.\n * Alternatively see `Engine.update` to step the engine directly inside your own game loop implementation.\n * @method run\n * @param {runner} runner\n * @param {engine} [engine]\n * @return {runner} runner\n */\n Runner.run = function(runner, engine) {\n // initial time buffer for the first frame\n runner.timeBuffer = Runner._frameDeltaFallback;\n\n (function onFrame(time){\n runner.frameRequestId = Runner._onNextFrame(runner, onFrame);\n\n if (time && runner.enabled) {\n Runner.tick(runner, engine, time);\n }\n })();\n\n return runner;\n };\n\n /**\n * Performs a single runner tick as used inside `Runner.run`.\n * See module and properties descriptions for more information on this runner.\n * Alternatively see `Engine.update` to step the engine directly inside your own game loop implementation.\n * @method tick\n * @param {runner} runner\n * @param {engine} engine\n * @param {number} time\n */\n Runner.tick = function(runner, engine, time) {\n var tickStartTime = Common.now(),\n engineDelta = runner.delta,\n updateCount = 0;\n\n // find frame delta time since last call\n var frameDelta = time - runner.timeLastTick;\n\n // fallback for unusable frame delta values (e.g. 0, NaN, on first frame or long pauses)\n if (!frameDelta || !runner.timeLastTick || frameDelta > Math.max(Runner._maxFrameDelta, runner.maxFrameTime)) {\n // reuse last accepted frame delta else fallback\n frameDelta = runner.frameDelta || Runner._frameDeltaFallback;\n }\n\n if (runner.frameDeltaSmoothing) {\n // record frame delta over a number of frames\n runner.frameDeltaHistory.push(frameDelta);\n runner.frameDeltaHistory = runner.frameDeltaHistory.slice(-runner.frameDeltaHistorySize);\n\n // sort frame delta history\n var deltaHistorySorted = runner.frameDeltaHistory.slice(0).sort();\n\n // sample a central window to limit outliers\n var deltaHistoryWindow = runner.frameDeltaHistory.slice(\n deltaHistorySorted.length * Runner._smoothingLowerBound, \n deltaHistorySorted.length * Runner._smoothingUpperBound\n );\n\n // take the mean of the central window\n var frameDeltaSmoothed = _mean(deltaHistoryWindow);\n frameDelta = frameDeltaSmoothed || frameDelta;\n }\n\n if (runner.frameDeltaSnapping) {\n // snap frame delta to the nearest 1 Hz\n frameDelta = 1000 / Math.round(1000 / frameDelta);\n }\n\n // update runner values for next call\n runner.frameDelta = frameDelta;\n runner.timeLastTick = time;\n\n // accumulate elapsed time\n runner.timeBuffer += runner.frameDelta;\n\n // limit time buffer size to a single frame of updates\n runner.timeBuffer = Common.clamp(\n runner.timeBuffer, 0, runner.frameDelta + engineDelta * Runner._timeBufferMargin\n );\n\n // reset count of over budget updates\n runner.lastUpdatesDeferred = 0;\n\n // get max updates per frame\n var maxUpdates = runner.maxUpdates || Math.ceil(runner.maxFrameTime / engineDelta);\n\n // create event object\n var event = {\n timestamp: engine.timing.timestamp\n };\n\n // tick events before update\n Events.trigger(runner, 'beforeTick', event);\n Events.trigger(runner, 'tick', event);\n\n var updateStartTime = Common.now();\n\n // simulate time elapsed between calls\n while (engineDelta > 0 && runner.timeBuffer >= engineDelta * Runner._timeBufferMargin) {\n // update the engine\n Events.trigger(runner, 'beforeUpdate', event);\n Engine.update(engine, engineDelta);\n Events.trigger(runner, 'afterUpdate', event);\n\n // consume time simulated from buffer\n runner.timeBuffer -= engineDelta;\n updateCount += 1;\n\n // find elapsed time during this tick\n var elapsedTimeTotal = Common.now() - tickStartTime,\n elapsedTimeUpdates = Common.now() - updateStartTime,\n elapsedNextEstimate = elapsedTimeTotal + Runner._elapsedNextEstimate * elapsedTimeUpdates / updateCount;\n\n // defer updates if over performance budgets for this frame\n if (updateCount >= maxUpdates || elapsedNextEstimate > runner.maxFrameTime) {\n runner.lastUpdatesDeferred = Math.round(Math.max(0, (runner.timeBuffer / engineDelta) - Runner._timeBufferMargin));\n break;\n }\n }\n\n // track timing metrics\n engine.timing.lastUpdatesPerFrame = updateCount;\n\n // tick events after update\n Events.trigger(runner, 'afterTick', event);\n\n // show useful warnings if needed\n if (runner.frameDeltaHistory.length >= 100) {\n if (runner.lastUpdatesDeferred && Math.round(runner.frameDelta / engineDelta) > maxUpdates) {\n Common.warnOnce('Matter.Runner: runner reached runner.maxUpdates, see docs.');\n } else if (runner.lastUpdatesDeferred) {\n Common.warnOnce('Matter.Runner: runner reached runner.maxFrameTime, see docs.');\n }\n\n if (typeof runner.isFixed !== 'undefined') {\n Common.warnOnce('Matter.Runner: runner.isFixed is now redundant, see docs.');\n }\n\n if (runner.deltaMin || runner.deltaMax) {\n Common.warnOnce('Matter.Runner: runner.deltaMin and runner.deltaMax were removed, see docs.');\n }\n\n if (runner.fps !== 0) {\n Common.warnOnce('Matter.Runner: runner.fps was replaced by runner.delta, see docs.');\n }\n }\n };\n\n /**\n * Ends execution of `Runner.run` on the given `runner` by canceling the frame loop.\n * Alternatively to temporarily pause the runner, see `runner.enabled`.\n * @method stop\n * @param {runner} runner\n */\n Runner.stop = function(runner) {\n Runner._cancelNextFrame(runner);\n };\n\n /**\n * Schedules the `callback` on this `runner` for the next animation frame.\n * @private\n * @method _onNextFrame\n * @param {runner} runner\n * @param {function} callback\n * @return {number} frameRequestId\n */\n Runner._onNextFrame = function(runner, callback) {\n if (typeof window !== 'undefined' && window.requestAnimationFrame) {\n runner.frameRequestId = window.requestAnimationFrame(callback);\n } else {\n throw new Error('Matter.Runner: missing required global window.requestAnimationFrame.');\n }\n\n return runner.frameRequestId;\n };\n\n /**\n * Cancels the last callback scheduled by `Runner._onNextFrame` on this `runner`.\n * @private\n * @method _cancelNextFrame\n * @param {runner} runner\n */\n Runner._cancelNextFrame = function(runner) {\n if (typeof window !== 'undefined' && window.cancelAnimationFrame) {\n window.cancelAnimationFrame(runner.frameRequestId);\n } else {\n throw new Error('Matter.Runner: missing required global window.cancelAnimationFrame.');\n }\n };\n\n /**\n * Returns the mean of the given numbers.\n * @method _mean\n * @private\n * @param {Number[]} values\n * @return {Number} the mean of given values.\n */\n var _mean = function(values) {\n var result = 0,\n valuesLength = values.length;\n\n for (var i = 0; i < valuesLength; i += 1) {\n result += values[i];\n }\n\n return (result / valuesLength) || 0;\n };\n\n /*\n *\n * Events Documentation\n *\n */\n\n /**\n * Fired once at the start of the browser frame, before any engine updates.\n *\n * @event beforeTick\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired once at the start of the browser frame, after `beforeTick`.\n *\n * @event tick\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired once at the end of the browser frame, after `beforeTick`, `tick` and after any engine updates.\n *\n * @event afterTick\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired before each and every engine update in this browser frame (if any). \n * There may be multiple engine update calls per browser frame (or none) depending on framerate and timestep delta.\n *\n * @event beforeUpdate\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /**\n * Fired after each and every engine update in this browser frame (if any). \n * There may be multiple engine update calls per browser frame (or none) depending on framerate and timestep delta.\n *\n * @event afterUpdate\n * @param {} event An event object\n * @param {number} event.timestamp The engine.timing.timestamp of the event\n * @param {} event.source The source object of the event\n * @param {} event.name The name of the event\n */\n\n /*\n *\n * Properties Documentation\n *\n */\n\n /**\n * The fixed timestep size used for `Engine.update` calls in milliseconds, known as `delta`.\n * \n * This value is recommended to be `1000 / 60` ms or smaller (i.e. equivalent to at least 60hz).\n * \n * Smaller `delta` values provide higher quality results at the cost of performance.\n * \n * You should usually avoid changing `delta` during running, otherwise quality may be affected. \n * \n * For smoother frame pacing choose a `delta` that is an even multiple of each display FPS you target, i.e. `1000 / (n * fps)` as this helps distribute an equal number of updates over each display frame.\n * \n * For example with a 60 Hz `delta` i.e. `1000 / 60` the runner will on average perform one update per frame on displays running 60 FPS and one update every two frames on displays running 120 FPS, etc.\n * \n * Where as e.g. using a 240 Hz `delta` i.e. `1000 / 240` the runner will on average perform four updates per frame on displays running 60 FPS and two updates per frame on displays running 120 FPS, etc.\n * \n * Therefore `Runner.run` will call multiple engine updates (or none) as needed to simulate the time elapsed between browser frames. \n * \n * In practice the number of updates in any particular frame may be restricted to respect the runner's performance budgets. These are specified by `runner.maxFrameTime` and `runner.maxUpdates`, see those properties for details.\n * \n * @property delta\n * @type number\n * @default 1000 / 60\n */\n\n /**\n * A flag that can be toggled to enable or disable tick calls on this runner, therefore pausing engine updates and events while the runner loop remains running.\n *\n * @property enabled\n * @type boolean\n * @default true\n */\n\n /**\n * The accumulated time elapsed that has yet to be simulated in milliseconds.\n * This value is clamped within certain limits (see `Runner.tick` code).\n *\n * @private\n * @property timeBuffer\n * @type number\n * @default 0\n */\n\n /**\n * The measured time elapsed between the last two browser frames measured in milliseconds.\n * This is useful e.g. to estimate the current browser FPS using `1000 / runner.frameDelta`.\n *\n * @readonly\n * @property frameDelta\n * @type number\n */\n\n /**\n * Enables averaging to smooth frame rate measurements and therefore stabilise play rate.\n *\n * @property frameDeltaSmoothing\n * @type boolean\n * @default true\n */\n\n /**\n * Rounds measured browser frame delta to the nearest 1 Hz.\n * This option can help smooth frame rate measurements and simplify handling hardware timing differences e.g. 59.94Hz and 60Hz displays.\n * For best results you should also round your `runner.delta` equivalent to the nearest 1 Hz.\n *\n * @property frameDeltaSnapping\n * @type boolean\n * @default true\n */\n\n /**\n * A performance budget that limits execution time allowed for this runner per browser frame in milliseconds.\n * \n * To calculate the effective browser FPS at which this throttle is applied use `1000 / runner.maxFrameTime`.\n * \n * This performance budget is intended to help maintain browser interactivity and help improve framerate recovery during temporary high CPU usage.\n * \n * This budget only covers the measured time elapsed executing the functions called in the scope of the runner tick, including `Engine.update` and its related user event callbacks.\n * \n * You may also reduce this budget to allow for any significant additional processing you perform on the same thread outside the scope of this runner tick, e.g. rendering time.\n * \n * See also `runner.maxUpdates`.\n *\n * @property maxFrameTime\n * @type number\n * @default 1000 / 30\n */\n\n /**\n * An optional limit for maximum engine update count allowed per frame tick in addition to `runner.maxFrameTime`.\n * \n * Unless you set a value it is automatically chosen based on `runner.delta` and `runner.maxFrameTime`.\n * \n * See also `runner.maxFrameTime`.\n * \n * @property maxUpdates\n * @type number\n * @default null\n */\n\n /**\n * The timestamp of the last call to `Runner.tick` used to measure `frameDelta`.\n *\n * @private\n * @property timeLastTick\n * @type number\n * @default 0\n */\n\n /**\n * The id of the last call to `Runner._onNextFrame`.\n *\n * @private\n * @property frameRequestId\n * @type number\n * @default null\n */\n\n})();\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* This module has now been replaced by `Matter.Collision`.\n*\n* All usage should be migrated to `Matter.Collision`.\n* For back-compatibility purposes this module will remain for a short term and then later removed in a future release.\n*\n* The `Matter.SAT` module contains methods for detecting collisions using the Separating Axis Theorem.\n*\n* @class SAT\n* @deprecated\n*/\n\nvar SAT = {};\n\nmodule.exports = SAT;\n\nvar Collision = __webpack_require__(8);\nvar Common = __webpack_require__(0);\nvar deprecated = Common.deprecated;\n\n(function() {\n\n /**\n * Detect collision between two bodies using the Separating Axis Theorem.\n * @deprecated replaced by Collision.collides\n * @method collides\n * @param {body} bodyA\n * @param {body} bodyB\n * @return {collision} collision\n */\n SAT.collides = function(bodyA, bodyB) {\n return Collision.collides(bodyA, bodyB);\n };\n\n deprecated(SAT, 'collides', 'SAT.collides ➤ replaced by Collision.collides');\n\n})();\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* The `Matter.Svg` module contains methods for converting SVG images into an array of vector points.\n*\n* To use this module you also need the SVGPathSeg polyfill: https://github.com/progers/pathseg\n*\n* See the included usage [examples](https://github.com/liabru/matter-js/tree/master/examples).\n*\n* @class Svg\n*/\n\nvar Svg = {};\n\nmodule.exports = Svg;\n\nvar Bounds = __webpack_require__(1);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * Converts an SVG path into an array of vector points.\n * If the input path forms a concave shape, you must decompose the result into convex parts before use.\n * See `Bodies.fromVertices` which provides support for this.\n * Note that this function is not guaranteed to support complex paths (such as those with holes).\n * You must load the `pathseg.js` polyfill on newer browsers.\n * @method pathToVertices\n * @param {SVGPathElement} path\n * @param {Number} [sampleLength=15]\n * @return {Vector[]} points\n */\n Svg.pathToVertices = function(path, sampleLength) {\n if (typeof window !== 'undefined' && !('SVGPathSeg' in window)) {\n Common.warn('Svg.pathToVertices: SVGPathSeg not defined, a polyfill is required.');\n }\n\n // https://github.com/wout/svg.topoly.js/blob/master/svg.topoly.js\n var i, il, total, point, segment, segments, \n segmentsQueue, lastSegment, \n lastPoint, segmentIndex, points = [],\n lx, ly, length = 0, x = 0, y = 0;\n\n sampleLength = sampleLength || 15;\n\n var addPoint = function(px, py, pathSegType) {\n // all odd-numbered path types are relative except PATHSEG_CLOSEPATH (1)\n var isRelative = pathSegType % 2 === 1 && pathSegType > 1;\n\n // when the last point doesn't equal the current point add the current point\n if (!lastPoint || px != lastPoint.x || py != lastPoint.y) {\n if (lastPoint && isRelative) {\n lx = lastPoint.x;\n ly = lastPoint.y;\n } else {\n lx = 0;\n ly = 0;\n }\n\n var point = {\n x: lx + px,\n y: ly + py\n };\n\n // set last point\n if (isRelative || !lastPoint) {\n lastPoint = point;\n }\n\n points.push(point);\n\n x = lx + px;\n y = ly + py;\n }\n };\n\n var addSegmentPoint = function(segment) {\n var segType = segment.pathSegTypeAsLetter.toUpperCase();\n\n // skip path ends\n if (segType === 'Z') \n return;\n\n // map segment to x and y\n switch (segType) {\n\n case 'M':\n case 'L':\n case 'T':\n case 'C':\n case 'S':\n case 'Q':\n x = segment.x;\n y = segment.y;\n break;\n case 'H':\n x = segment.x;\n break;\n case 'V':\n y = segment.y;\n break;\n }\n\n addPoint(x, y, segment.pathSegType);\n };\n\n // ensure path is absolute\n Svg._svgPathToAbsolute(path);\n\n // get total length\n total = path.getTotalLength();\n\n // queue segments\n segments = [];\n for (i = 0; i < path.pathSegList.numberOfItems; i += 1)\n segments.push(path.pathSegList.getItem(i));\n\n segmentsQueue = segments.concat();\n\n // sample through path\n while (length < total) {\n // get segment at position\n segmentIndex = path.getPathSegAtLength(length);\n segment = segments[segmentIndex];\n\n // new segment\n if (segment != lastSegment) {\n while (segmentsQueue.length && segmentsQueue[0] != segment)\n addSegmentPoint(segmentsQueue.shift());\n\n lastSegment = segment;\n }\n\n // add points in between when curving\n // TODO: adaptive sampling\n switch (segment.pathSegTypeAsLetter.toUpperCase()) {\n\n case 'C':\n case 'T':\n case 'S':\n case 'Q':\n case 'A':\n point = path.getPointAtLength(length);\n addPoint(point.x, point.y, 0);\n break;\n\n }\n\n // increment by sample value\n length += sampleLength;\n }\n\n // add remaining segments not passed by sampling\n for (i = 0, il = segmentsQueue.length; i < il; ++i)\n addSegmentPoint(segmentsQueue[i]);\n\n return points;\n };\n\n Svg._svgPathToAbsolute = function(path) {\n // http://phrogz.net/convert-svg-path-to-all-absolute-commands\n // Copyright (c) Gavin Kistner\n // http://phrogz.net/js/_ReuseLicense.txt\n // Modifications: tidy formatting and naming\n var x0, y0, x1, y1, x2, y2, segs = path.pathSegList,\n x = 0, y = 0, len = segs.numberOfItems;\n\n for (var i = 0; i < len; ++i) {\n var seg = segs.getItem(i),\n segType = seg.pathSegTypeAsLetter;\n\n if (/[MLHVCSQTA]/.test(segType)) {\n if ('x' in seg) x = seg.x;\n if ('y' in seg) y = seg.y;\n } else {\n if ('x1' in seg) x1 = x + seg.x1;\n if ('x2' in seg) x2 = x + seg.x2;\n if ('y1' in seg) y1 = y + seg.y1;\n if ('y2' in seg) y2 = y + seg.y2;\n if ('x' in seg) x += seg.x;\n if ('y' in seg) y += seg.y;\n\n switch (segType) {\n\n case 'm':\n segs.replaceItem(path.createSVGPathSegMovetoAbs(x, y), i);\n break;\n case 'l':\n segs.replaceItem(path.createSVGPathSegLinetoAbs(x, y), i);\n break;\n case 'h':\n segs.replaceItem(path.createSVGPathSegLinetoHorizontalAbs(x), i);\n break;\n case 'v':\n segs.replaceItem(path.createSVGPathSegLinetoVerticalAbs(y), i);\n break;\n case 'c':\n segs.replaceItem(path.createSVGPathSegCurvetoCubicAbs(x, y, x1, y1, x2, y2), i);\n break;\n case 's':\n segs.replaceItem(path.createSVGPathSegCurvetoCubicSmoothAbs(x, y, x2, y2), i);\n break;\n case 'q':\n segs.replaceItem(path.createSVGPathSegCurvetoQuadraticAbs(x, y, x1, y1), i);\n break;\n case 't':\n segs.replaceItem(path.createSVGPathSegCurvetoQuadraticSmoothAbs(x, y), i);\n break;\n case 'a':\n segs.replaceItem(path.createSVGPathSegArcAbs(x, y, seg.r1, seg.r2, seg.angle, seg.largeArcFlag, seg.sweepFlag), i);\n break;\n case 'z':\n case 'Z':\n x = x0;\n y = y0;\n break;\n\n }\n }\n\n if (segType == 'M' || segType == 'm') {\n x0 = x;\n y0 = y;\n }\n }\n };\n\n})();\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n* This module has now been replaced by `Matter.Composite`.\n*\n* All usage should be migrated to the equivalent functions found on `Matter.Composite`.\n* For example `World.add(world, body)` now becomes `Composite.add(world, body)`.\n*\n* The property `world.gravity` has been moved to `engine.gravity`.\n*\n* For back-compatibility purposes this module will remain as a direct alias to `Matter.Composite` in the short term during migration.\n* Eventually this alias module will be marked as deprecated and then later removed in a future release.\n*\n* @class World\n*/\n\nvar World = {};\n\nmodule.exports = World;\n\nvar Composite = __webpack_require__(6);\nvar Common = __webpack_require__(0);\n\n(function() {\n\n /**\n * See above, aliases for back compatibility only\n */\n World.create = Composite.create;\n World.add = Composite.add;\n World.remove = Composite.remove;\n World.clear = Composite.clear;\n World.addComposite = Composite.addComposite;\n World.addBody = Composite.addBody;\n World.addConstraint = Composite.addConstraint;\n\n})();\n\n\n/***/ })\n/******/ ]);\n});","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\n// t: current time, b: beginning value, _c: final value, d: total duration\nvar tweenFunctions = {\n linear: function(t, b, _c, d) {\n var c = _c - b;\n return c * t / d + b;\n },\n easeInQuad: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t + b;\n },\n easeOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (t /= d) * (t - 2) + b;\n },\n easeInOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t + b;\n } else {\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n }\n },\n easeInCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t + b;\n },\n easeOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t + 1) + b;\n },\n easeInOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n },\n easeInQuart: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t + b;\n },\n easeOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n },\n easeInOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t + b;\n } else {\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n },\n easeInQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t * t + b;\n },\n easeOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n easeInOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n },\n easeInSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n },\n easeOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n },\n easeInOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n },\n easeInExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n } else {\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n },\n easeInCirc: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n },\n easeOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n },\n easeInOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n } else {\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n },\n easeInElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n },\n easeOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;\n },\n easeInOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n } else {\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;\n }\n },\n easeInBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n easeOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n easeInOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n } else {\n return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n }\n },\n easeInBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n v = tweenFunctions.easeOutBounce(d - t, 0, c, d);\n return c - v + b;\n },\n easeOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n } else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n } else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n } else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n easeInOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n if (t < d / 2) {\n v = tweenFunctions.easeInBounce(t * 2, 0, c, d);\n return v * 0.5 + b;\n } else {\n v = tweenFunctions.easeOutBounce(t * 2 - d, 0, c, d);\n return v * 0.5 + c * 0.5 + b;\n }\n }\n};\n\nmodule.exports = tweenFunctions;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"010e476d\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"jongro:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkjongro\"] = self[\"webpackChunkjongro\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n signal: AbortSignal;\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/v6/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @deprecated The `json` method is deprecated in favor of returning raw objects.\n * This method will be removed in v7.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\n/**\n * @deprecated The `defer` method is deprecated in favor of returning raw\n * objects. This method will be removed in v7.\n */\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Remove any lingering deleted fetchers that have already been removed\n // from state.fetchers\n deletedFetchers.forEach((key) => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n deletedFetchersKeys.push(key);\n }\n });\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n } else {\n // We already called deleteFetcher() on these, can remove them from this\n // Set now that we've handed the keys off to the data layer\n deletedFetchersKeys.forEach((key) => deletedFetchers.delete(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches =\n opts?.initialHydration &&\n state.matches &&\n state.matches.length > 0 &&\n !initialMatchesIsFOW\n ? // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches\n : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n\n // If we opted into the flag we can clear this now since we're calling\n // deleteFetcher() at the end of updateState() and we've already handed the\n // deleted fetcher keys off to the data layer.\n // If not, we're eagerly calling deleteFetcher() and we need to keep this\n // Set populated until the next updateState call, and we'll clear\n // `deletedFetchers` then\n if (future.v7_fetcherPersist) {\n deletedFetchers.delete(key);\n }\n\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n if (!future.v7_fetcherPersist) {\n deleteFetcher(key);\n }\n } else {\n activeFetchers.set(key, count);\n }\n\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n signal,\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n ),\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator, static: isStatic } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches =\n !isStatic &&\n dataRouterState &&\n dataRouterState.matches &&\n dataRouterState.matches.length > 0\n ? (dataRouterState.matches as AgnosticRouteMatch[])\n : matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n if (__DEV__ && !alreadyWarned[message]) {\n alreadyWarned[message] = true;\n console.warn(message);\n }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n warnOnce(\n flag,\n `⚠️ React Router Future Flag Warning: ${msg}. ` +\n `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n `For more information, see ${link}.`\n );\n\nexport function logV6DeprecationWarnings(\n renderFuture: Partial | undefined,\n routerFuture?: Omit\n) {\n if (renderFuture?.v7_startTransition === undefined) {\n logDeprecation(\n \"v7_startTransition\",\n \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n );\n }\n\n if (\n renderFuture?.v7_relativeSplatPath === undefined &&\n (!routerFuture || !routerFuture.v7_relativeSplatPath)\n ) {\n logDeprecation(\n \"v7_relativeSplatPath\",\n \"Relative route resolution within Splat routes is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n );\n }\n\n if (routerFuture) {\n if (routerFuture.v7_fetcherPersist === undefined) {\n logDeprecation(\n \"v7_fetcherPersist\",\n \"The persistence behavior of fetchers is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n );\n }\n\n if (routerFuture.v7_normalizeFormMethod === undefined) {\n logDeprecation(\n \"v7_normalizeFormMethod\",\n \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n );\n }\n\n if (routerFuture.v7_partialHydration === undefined) {\n logDeprecation(\n \"v7_partialHydration\",\n \"`RouterProvider` hydration behavior is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n );\n }\n\n if (routerFuture.v7_skipActionErrorRevalidation === undefined) {\n logDeprecation(\n \"v7_skipActionErrorRevalidation\",\n \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n );\n }\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n React.useEffect(\n () => logV6DeprecationWarnings(future, router.future),\n [router, future]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a