{"version":3,"sources":["../src/useInterval.ts","../src/utils.ts","../src/index.tsx"],"names":["noop","useInterval","callback","delay","immediate","savedCallback","useRef","useEffect","id","randomValue","min","max","randomInt","LoadingBar","forwardRef","progress","height","className","color","background","onLoaderFinished","transitionTime","loaderSpeed","waitingTime","shadow","containerStyle","style","shadowStyleProp","containerClassName","ref","isMounted","localProgress","localProgressSet","useState","pressedContinuous","pressedStaticStart","setStaticStartPressed","initialLoaderStyle","loaderContainerStyle","initialShadowStyles","loaderStyle","loaderStyleSet","shadowStyle","shadowStyleSet","useImperativeHandle","startingValue","refreshRate","val","checkIfFull","type","continuousRandom","staticRandom","value","prev","newVal","_progress","_loaderStyle","minValue","maxValue","random","LoaderContext","LoadingBarContainer","children","props","hookProps","setProps","start","_a","useLoadingBar","context"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/** keep typescript happy */\nconst noop = () => {};\n\nexport function useInterval(\n  callback: () => void,\n  delay: number | null | false,\n  immediate?: boolean,\n) {\n  const savedCallback = useRef(noop);\n\n  // Remember the latest callback.\n  useEffect(() => {\n    savedCallback.current = callback;\n  });\n\n  // Execute callback if immediate is set.\n  useEffect(() => {\n    if (!immediate) return;\n    if (delay === null || delay === false) return;\n    savedCallback.current();\n  }, [immediate]);\n\n  // Set up the interval.\n  useEffect(() => {\n    if (delay === null || delay === false) return undefined;\n    const tick = () => savedCallback.current();\n    const id = setInterval(tick, delay);\n    return () => clearInterval(id);\n  }, [delay]);\n}\n","export function randomValue(min: number, max: number): number {\n  return (Math.random() * (max - min + 1) + min)\n}\n\nexport function randomInt(min: number, max: number): number {\n  return Math.floor(randomValue(min, max))\n}\n","import * as React from \"react\";\nimport {\n  CSSProperties,\n  useEffect,\n  useState,\n  forwardRef,\n  useImperativeHandle,\n  useRef,\n} from \"react\";\nimport { useInterval } from \"./useInterval\";\nimport { randomInt, randomValue } from \"./utils\";\n\nexport interface IProps {\n  progress?: number;\n  color?: string;\n  shadow?: boolean;\n  background?: string;\n  height?: number;\n  onLoaderFinished?: () => void;\n  className?: string;\n  containerClassName?: string;\n  loaderSpeed?: number;\n  transitionTime?: number;\n  waitingTime?: number;\n  style?: CSSProperties;\n  containerStyle?: CSSProperties;\n  shadowStyle?: CSSProperties;\n}\n\nexport interface LoadingBarRef {\n  continuousStart: (startingValue?: number, refreshRate?: number) => void;\n  staticStart: (startingValue?: number) => void;\n  start: (\n    type?: \"continuous\" | \"static\",\n    startingValue?: number,\n    refreshRate?: number,\n  ) => void;\n  complete: () => void;\n  increase: (value: number) => void;\n  decrease: (value: number) => void;\n  getProgress: () => number;\n}\n\nconst LoadingBar = forwardRef<LoadingBarRef, IProps>(\n  (\n    {\n      progress,\n      height = 2,\n      className = \"\",\n      color = \"red\",\n      background = \"transparent\",\n      onLoaderFinished,\n      transitionTime = 300,\n      loaderSpeed = 500,\n      waitingTime = 1000,\n      shadow = true,\n      containerStyle = {},\n      style = {},\n      shadowStyle: shadowStyleProp = {},\n      containerClassName = \"\",\n    },\n    ref,\n  ) => {\n    const isMounted = useRef(false);\n    const [localProgress, localProgressSet] = useState<number>(0);\n\n    const pressedContinuous = useRef<{\n      active: boolean;\n      refreshRate: number;\n    }>({ active: false, refreshRate: 1000 });\n\n    const [pressedStaticStart, setStaticStartPressed] = useState<{\n      active: boolean;\n      value: number;\n    }>({ active: false, value: 60 });\n\n    const initialLoaderStyle: CSSProperties = {\n      height: \"100%\",\n      background: color,\n      transition: `all ${loaderSpeed}ms ease`,\n      width: \"0%\",\n    };\n\n    const loaderContainerStyle: CSSProperties = {\n      position: \"fixed\",\n      top: 0,\n      left: 0,\n      height,\n      background,\n      zIndex: 99999999999,\n      width: 100 + \"%\",\n    };\n\n    const initialShadowStyles: CSSProperties = {\n      boxShadow: `0 0 10px ${color}, 0 0 10px ${color}`,\n      width: \"5%\",\n      opacity: 1,\n      position: \"absolute\",\n      height: \"100%\",\n      transition: `all ${loaderSpeed}ms ease`,\n      transform: \"rotate(2deg) translate(0px, -2px)\",\n      left: \"-10rem\",\n    };\n\n    const [loaderStyle, loaderStyleSet] =\n      useState<CSSProperties>(initialLoaderStyle);\n    const [shadowStyle, shadowStyleSet] =\n      useState<CSSProperties>(initialShadowStyles);\n\n    useEffect(() => {\n      isMounted.current = true;\n      return () => {\n        isMounted.current = false;\n      };\n    }, []);\n\n    useImperativeHandle(ref, () => ({\n      continuousStart(startingValue?: number, refreshRate: number = 1000) {\n        if (pressedStaticStart.active) return;\n        if (progress !== undefined) {\n          console.warn(\n            \"react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!\",\n          );\n          return;\n        }\n\n        const val = startingValue || randomInt(10, 20);\n\n        pressedContinuous.current = {\n          active: true,\n          refreshRate,\n        };\n\n        localProgressSet(val);\n        checkIfFull(val);\n      },\n      staticStart(startingValue?: number) {\n        if (pressedContinuous.current.active) return;\n        if (progress !== undefined) {\n          console.warn(\n            \"react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!\",\n          );\n          return;\n        }\n\n        const val = startingValue || randomInt(30, 60);\n\n        setStaticStartPressed({\n          active: true,\n          value: val,\n        });\n        localProgressSet(val);\n        checkIfFull(val);\n      },\n      start(type = \"continuous\", startingValue?: number, refreshRate?: number) {\n        if (progress !== undefined) {\n          console.warn(\n            \"react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!\",\n          );\n          return;\n        }\n\n        if (type === \"continuous\") {\n          pressedContinuous.current = {\n            active: true,\n            refreshRate: refreshRate || 1000,\n          };\n        } else {\n          setStaticStartPressed({\n            active: true,\n            value: startingValue || 20,\n          });\n        }\n\n        const continuousRandom = randomInt(10, 20);\n        const staticRandom = randomInt(30, 70);\n\n        const val =\n          startingValue ||\n          (type === \"continuous\" ? continuousRandom : staticRandom);\n\n        localProgressSet(val);\n        checkIfFull(val);\n      },\n      complete() {\n        if (progress !== undefined) {\n          console.warn(\n            \"react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!\",\n          );\n          return;\n        }\n        localProgressSet(100);\n        checkIfFull(100);\n      },\n      increase(value: number) {\n        if (progress !== undefined) {\n          console.warn(\n            \"react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!\",\n          );\n          return;\n        }\n        localProgressSet((prev) => {\n          const newVal = prev + value;\n          checkIfFull(newVal);\n          return newVal;\n        });\n      },\n      decrease(value: number) {\n        if (progress !== undefined) {\n          console.warn(\n            \"react-top-loading-bar: You can't use both controlling by props and ref methods to control the bar!\",\n          );\n          return;\n        }\n        localProgressSet((prev) => {\n          const newVal = prev - value;\n          checkIfFull(newVal);\n          return newVal;\n        });\n      },\n      getProgress() {\n        return localProgress;\n      },\n    }));\n\n    useEffect(() => {\n      loaderStyleSet({\n        ...loaderStyle,\n        background: color,\n      });\n\n      shadowStyleSet({\n        ...shadowStyle,\n        boxShadow: `0 0 10px ${color}, 0 0 5px ${color}`,\n      });\n    }, [color]);\n\n    useEffect(() => {\n      if (ref) {\n        if (ref && progress !== undefined) {\n          console.warn(\n            'react-top-loading-bar: You can\\'t use both controlling by props and ref methods to control the bar! Please use only props or only ref methods! Ref methods will override props if \"ref\" property is available.',\n          );\n          return;\n        }\n        checkIfFull(localProgress);\n      } else {\n        if (progress) checkIfFull(progress);\n      }\n    }, [progress]);\n\n    const checkIfFull = (_progress: number) => {\n      if (_progress >= 100) {\n        // now it should wait a little\n        loaderStyleSet({\n          ...loaderStyle,\n          width: \"100%\",\n        });\n        if (shadow) {\n          shadowStyleSet({\n            ...shadowStyle,\n            left: _progress - 10 + \"%\",\n          });\n        }\n\n        setTimeout(() => {\n          if (!isMounted.current) {\n            return;\n          }\n          // now it can fade out\n          loaderStyleSet({\n            ...loaderStyle,\n            opacity: 0,\n            width: \"100%\",\n            transition: `all ${transitionTime}ms ease-out`,\n            color: color,\n          });\n\n          setTimeout(() => {\n            if (!isMounted.current) {\n              return;\n            }\n            // here we wait for it to fade\n            if (pressedContinuous.current.active) {\n              // if we have continuous loader just ending, we kill it and reset it\n\n              pressedContinuous.current = {\n                ...pressedContinuous.current,\n                active: false,\n              };\n\n              localProgressSet(0);\n              checkIfFull(0);\n            }\n\n            if (pressedStaticStart.active) {\n              setStaticStartPressed({\n                ...pressedStaticStart,\n                active: false,\n              });\n              localProgressSet(0);\n              checkIfFull(0);\n            }\n\n            if (onLoaderFinished) onLoaderFinished();\n            localProgressSet(0);\n            checkIfFull(0);\n          }, transitionTime);\n        }, waitingTime);\n      } else {\n        loaderStyleSet((_loaderStyle) => {\n          return {\n            ..._loaderStyle,\n            width: _progress + \"%\",\n            opacity: 1,\n            transition: _progress > 0 ? `all ${loaderSpeed}ms ease` : \"\",\n          };\n        });\n\n        if (shadow) {\n          shadowStyleSet({\n            ...shadowStyle,\n            left: _progress - 5.5 + \"%\",\n            transition: _progress > 0 ? `all ${loaderSpeed}ms ease` : \"\",\n          });\n        }\n      }\n    };\n\n    useInterval(\n      () => {\n        const minValue = Math.min(10, (100 - localProgress) / 5);\n        const maxValue = Math.min(20, (100 - localProgress) / 3);\n\n        const random = randomValue(minValue, maxValue);\n\n        if (localProgress + random < 95) {\n          localProgressSet(localProgress + random);\n          checkIfFull(localProgress + random);\n        }\n      },\n      pressedContinuous.current.active\n        ? pressedContinuous.current.refreshRate\n        : null,\n    );\n\n    return (\n      <div\n        className={containerClassName}\n        style={{ ...loaderContainerStyle, ...containerStyle }}\n      >\n        <div className={className} style={{ ...loaderStyle, ...style }}>\n          {shadow ? (\n            <div style={{ ...shadowStyle, ...shadowStyleProp }} />\n          ) : null}\n        </div>\n      </div>\n    );\n  },\n);\n\ninterface IContext\n  extends Omit<LoadingBarRef, \"continuousStart\" | \"staticStart\"> {\n  setProps: (props: IProps) => void;\n}\n\nconst LoaderContext = React.createContext<IContext>(undefined as any);\n\nexport const LoadingBarContainer = ({\n  children,\n  props,\n}: {\n  children: React.ReactNode;\n  props?: Omit<IProps, \"progress\">;\n}) => {\n  const [hookProps, setProps] = useState<IProps>(props || {});\n\n  const ref = useRef<LoadingBarRef>(null);\n\n  const start = (type: \"continuous\" | \"static\" = \"continuous\") =>\n    ref.current?.start(type);\n\n  return (\n    <LoaderContext.Provider\n      value={{\n        start,\n        complete: () => ref.current?.complete(),\n        getProgress: () => ref.current?.getProgress() || 0,\n        increase: (value: number) => ref.current?.increase(value),\n        decrease: (value: number) => ref.current?.decrease(value),\n        setProps: (props: IProps) => setProps({ ...props, ...hookProps }),\n      }}\n    >\n      <LoadingBar ref={ref} {...hookProps} />\n      {children}\n    </LoaderContext.Provider>\n  );\n};\n\nexport const useLoadingBar = (props?: IProps): Omit<IContext, \"setProps\"> => {\n  const context = React.useContext(LoaderContext);\n\n  if (!context) {\n    throw new Error(\n      \"[react-top-loading-bar] useLoadingBar hook must be used within a LoadingBarContainer. Try wrapping parent component in <LoadingBarContainer>.\",\n    );\n  }\n\n  useEffect(() => {\n    if (props) context.setProps(props);\n  }, []);\n\n  return {\n    start: context.start,\n    complete: context.complete,\n    increase: context.increase,\n    decrease: context.decrease,\n    getProgress: context.getProgress,\n  };\n};\n\nexport { LoadingBar as default };\n"]}