function useProdHMR() {
  return false;
}

let webpackHMR = false;
let viteHMR = false;

function useDevHMR() {
  return webpackHMR || viteHMR;
}

export default process.env.NODE_ENV === 'production' ? useProdHMR : useDevHMR;

// Webpack `module.hot.accept` do not support any deps update trigger
// We have to hack handler to force mark as HRM
if (
  process.env.NODE_ENV !== 'production' &&
  ((typeof module !== 'undefined' &&
    module &&
    // @ts-ignore
    module.hot) ||
    // @ts-ignore
    import.meta.hot)
) {
  const win = window as any;

  if (typeof win.webpackHotUpdate === 'function') {
    const originWebpackHotUpdate = win.webpackHotUpdate;

    win.webpackHotUpdate = (...args: any[]) => {
      webpackHMR = true;
      setTimeout(() => {
        webpackHMR = false;
      }, 0);
      return originWebpackHotUpdate(...args);
    };
    // @ts-ignore
  } else if (import.meta.hot) {
    viteHMR = true;
  }
}