UNPKG

12.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"react-nprogress.cjs.production.js","sources":["../compiled/clamp.js","../compiled/createQueue.js","../compiled/createTimeout.js","../compiled/increment.js","../compiled/useEffectOnce.js","../compiled/useGetSetState.js","../compiled/useUpdateEffect.js","../compiled/useNProgress.js","../compiled/NProgress.js","../compiled/withNProgress.js"],"sourcesContent":["export const clamp = (num, lower, upper) => {\n num = num <= upper ? num : upper;\n num = num >= lower ? num : lower;\n return num;\n};\n","export const createQueue = () => {\n let isRunning = false;\n let pending = [];\n const next = () => {\n isRunning = true;\n const cb = pending.shift();\n if (cb) {\n return cb(next);\n }\n isRunning = false;\n };\n const clear = () => {\n isRunning = false;\n pending = [];\n };\n const enqueue = (cb) => {\n pending.push(cb);\n if (!isRunning && pending.length === 1) {\n next();\n }\n };\n return {\n clear,\n enqueue,\n };\n};\n","export const createTimeout = () => {\n let handle;\n const cancel = () => {\n if (handle) {\n window.cancelAnimationFrame(handle);\n }\n };\n const schedule = (callback, delay) => {\n let deltaTime;\n let start;\n const frame = (time) => {\n start = start || time;\n deltaTime = time - start;\n if (deltaTime > delay) {\n callback();\n return;\n }\n handle = window.requestAnimationFrame(frame);\n };\n handle = window.requestAnimationFrame(frame);\n };\n return {\n cancel,\n schedule,\n };\n};\n","import { clamp } from './clamp';\nexport const increment = (progress) => {\n let amount = 0;\n if (progress >= 0 && progress < 0.2) {\n amount = 0.1;\n }\n else if (progress >= 0.2 && progress < 0.5) {\n amount = 0.04;\n }\n else if (progress >= 0.5 && progress < 0.8) {\n amount = 0.02;\n }\n else if (progress >= 0.8 && progress < 0.99) {\n amount = 0.005;\n }\n return clamp(progress + amount, 0, 0.994);\n};\n","// Hat-tip:\n// https://github.com/streamich/react-use/blob/master/src/useEffectOnce.ts.\n//\n// `react-use` appears to be unmaintained, so moving the required code into\n// this project for now.\nimport { useEffect } from 'react';\nexport const useEffectOnce = (effect) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(effect, []);\n};\n","// Hat-tip:\n// https://github.com/streamich/react-use/blob/master/src/useGetSetState.ts.\n//\n// `react-use` appears to be unmaintained, so moving the required code into\n// this project for now.\nimport { useCallback, useRef, useState } from 'react';\nconst incrementParameter = (num) => ++num % 1_000_000;\nconst useUpdate = () => {\n const [, setState] = useState(0);\n return useCallback(() => setState(incrementParameter), []);\n};\nexport const useGetSetState = (\n/* istanbul ignore next */\ninitialState = {}) => {\n const update = useUpdate();\n const state = useRef({ ...initialState });\n const get = useCallback(() => state.current, []);\n const set = useCallback((patch) => {\n if (!patch) {\n return;\n }\n Object.assign(state.current, patch);\n update();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return [get, set];\n};\n","// Hat-tip:\n// https://github.com/streamich/react-use/blob/master/src/useUpdateEffect.ts.\n//\n// `react-use` appears to be unmaintained, so moving the required code into\n// this project for now.\nimport { useEffect, useRef } from 'react';\nconst useFirstMountState = () => {\n const isFirst = useRef(true);\n if (isFirst.current) {\n isFirst.current = false;\n return true;\n }\n return isFirst.current;\n};\nexport const useUpdateEffect = (effect, deps) => {\n const isFirstMount = useFirstMountState();\n useEffect(() => {\n if (!isFirstMount) {\n return effect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n","import { useCallback, useEffect, useRef } from 'react';\nimport { clamp } from './clamp';\nimport { createQueue } from './createQueue';\nimport { createTimeout } from './createTimeout';\nimport { increment } from './increment';\nimport { useEffectOnce } from './useEffectOnce';\nimport { useGetSetState } from './useGetSetState';\nimport { useUpdateEffect } from './useUpdateEffect';\n/* istanbul ignore next */\nconst noop = () => undefined;\nconst initialState = {\n isFinished: true,\n progress: 0,\n sideEffect: noop,\n};\nexport const useNProgress = ({ animationDuration = 200, incrementDuration = 800, isAnimating = false, minimum = 0.08, } = {}) => {\n const [get, setState] = useGetSetState(initialState);\n const queue = useRef(null);\n const timeout = useRef(null);\n useEffectOnce(() => {\n queue.current = createQueue();\n timeout.current = createTimeout();\n });\n const cleanup = useCallback(() => {\n timeout.current?.cancel();\n queue.current?.clear();\n }, []);\n const set = useCallback((n) => {\n n = clamp(n, minimum, 1);\n if (n === 1) {\n cleanup();\n queue.current?.enqueue((next) => {\n setState({\n progress: n,\n sideEffect: () => timeout.current?.schedule(next, animationDuration),\n });\n });\n queue.current?.enqueue(() => {\n setState({ isFinished: true, sideEffect: cleanup });\n });\n return;\n }\n queue.current?.enqueue((next) => {\n setState({\n isFinished: false,\n progress: n,\n sideEffect: () => timeout.current?.schedule(next, animationDuration),\n });\n });\n }, [animationDuration, cleanup, minimum, queue, setState, timeout]);\n const trickle = useCallback(() => {\n set(increment(get().progress));\n }, [get, set]);\n const start = useCallback(() => {\n const work = () => {\n trickle();\n queue.current?.enqueue((next) => {\n timeout.current?.schedule(() => {\n work();\n next();\n }, incrementDuration);\n });\n };\n work();\n }, [incrementDuration, queue, timeout, trickle]);\n const savedTrickle = useRef(noop);\n const sideEffect = get().sideEffect;\n useEffect(() => {\n savedTrickle.current = trickle;\n });\n useEffectOnce(() => {\n if (isAnimating) {\n start();\n }\n return cleanup;\n });\n useUpdateEffect(() => {\n get().sideEffect();\n }, [get, sideEffect]);\n useUpdateEffect(() => {\n if (!isAnimating) {\n set(1);\n }\n else {\n setState({\n ...initialState,\n sideEffect: start,\n });\n }\n }, [isAnimating, set, setState, start]);\n return {\n animationDuration,\n isFinished: get().isFinished,\n progress: get().progress,\n };\n};\n","import { useNProgress } from './useNProgress';\nexport const NProgress = ({ children, ...restProps }) => {\n const renderProps = useNProgress(restProps);\n return children(renderProps);\n};\n","import hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { useNProgress } from './useNProgress';\nexport function withNProgress(BaseComponent) {\n const WithNProgress = (props) => {\n const hookProps = useNProgress(props);\n return React.createElement(BaseComponent, { ...props, ...hookProps });\n };\n hoistNonReactStatics(WithNProgress, BaseComponent);\n return WithNProgress;\n}\n"],"names":["clamp","num","lower","upper","createQueue","isRunning","pending","next","cb","shift","clear","enqueue","push","length","createTimeout","handle","cancel","window","cancelAnimationFrame","schedule","callback","delay","start","requestAnimationFrame","frame","time","increment","progress","amount","useEffectOnce","effect","useEffect","incrementParameter","useUpdate","setState","useState","useCallback","useGetSetState","initialState","update","state","useRef","_extends","current","patch","Object","assign","useFirstMountState","isFirst","useUpdateEffect","deps","isFirstMount","noop","isFinished","sideEffect","useNProgress","_temp","_ref","_ref$animationDuratio","animationDuration","_ref$incrementDuratio","incrementDuration","_ref$isAnimating","isAnimating","_ref$minimum","minimum","_useGetSetState","get","queue","timeout","cleanup","_timeout$current","_queue$current","set","n","_queue$current4","_queue$current2","_queue$current3","_timeout$current2","_timeout$current3","trickle","work","_queue$current5","_timeout$current4","savedTrickle","NProgress","children","restProps","_objectWithoutPropertiesLoose","_excluded","withNProgress","BaseComponent","WithNProgress","props","hookProps","React","createElement","hoistNonReactStatics"],"mappings":"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"}
\No newline at end of file