{"ast":null,"code":"\"use client\";\n\nimport * as React from 'react';\nimport useForceUpdate from '../_util/hooks/useForceUpdate';\nimport { cloneElement } from '../_util/reactNode';\nimport Statistic from './Statistic';\nimport { formatCountdown } from './utils';\nconst REFRESH_INTERVAL = 1000 / 30;\nfunction getTime(value) {\n  return new Date(value).getTime();\n}\nconst Countdown = props => {\n  const {\n    value,\n    format = 'HH:mm:ss',\n    onChange,\n    onFinish\n  } = props;\n  const forceUpdate = useForceUpdate();\n  const countdown = React.useRef(null);\n  const stopTimer = () => {\n    onFinish === null || onFinish === void 0 ? void 0 : onFinish();\n    if (countdown.current) {\n      clearInterval(countdown.current);\n      countdown.current = null;\n    }\n  };\n  const syncTimer = () => {\n    const timestamp = getTime(value);\n    if (timestamp >= Date.now()) {\n      countdown.current = setInterval(() => {\n        forceUpdate();\n        onChange === null || onChange === void 0 ? void 0 : onChange(timestamp - Date.now());\n        if (timestamp < Date.now()) {\n          stopTimer();\n        }\n      }, REFRESH_INTERVAL);\n    }\n  };\n  React.useEffect(() => {\n    syncTimer();\n    return () => {\n      if (countdown.current) {\n        clearInterval(countdown.current);\n        countdown.current = null;\n      }\n    };\n  }, [value]);\n  const formatter = (formatValue, config) => formatCountdown(formatValue, Object.assign(Object.assign({}, config), {\n    format\n  }));\n  const valueRender = node => cloneElement(node, {\n    title: undefined\n  });\n  return /*#__PURE__*/React.createElement(Statistic, Object.assign({}, props, {\n    valueRender: valueRender,\n    formatter: formatter\n  }));\n};\nexport default /*#__PURE__*/React.memo(Countdown);","map":{"version":3,"names":["React","useForceUpdate","cloneElement","Statistic","formatCountdown","REFRESH_INTERVAL","getTime","value","Date","Countdown","props","format","onChange","onFinish","forceUpdate","countdown","useRef","stopTimer","current","clearInterval","syncTimer","timestamp","now","setInterval","useEffect","formatter","formatValue","config","Object","assign","valueRender","node","title","undefined","createElement","memo"],"sources":["/Users/chrishaack/UC_Trains_Voice/react-demo/node_modules/antd/es/statistic/Countdown.js"],"sourcesContent":["\"use client\";\n\nimport * as React from 'react';\nimport useForceUpdate from '../_util/hooks/useForceUpdate';\nimport { cloneElement } from '../_util/reactNode';\nimport Statistic from './Statistic';\nimport { formatCountdown } from './utils';\nconst REFRESH_INTERVAL = 1000 / 30;\nfunction getTime(value) {\n  return new Date(value).getTime();\n}\nconst Countdown = props => {\n  const {\n    value,\n    format = 'HH:mm:ss',\n    onChange,\n    onFinish\n  } = props;\n  const forceUpdate = useForceUpdate();\n  const countdown = React.useRef(null);\n  const stopTimer = () => {\n    onFinish === null || onFinish === void 0 ? void 0 : onFinish();\n    if (countdown.current) {\n      clearInterval(countdown.current);\n      countdown.current = null;\n    }\n  };\n  const syncTimer = () => {\n    const timestamp = getTime(value);\n    if (timestamp >= Date.now()) {\n      countdown.current = setInterval(() => {\n        forceUpdate();\n        onChange === null || onChange === void 0 ? void 0 : onChange(timestamp - Date.now());\n        if (timestamp < Date.now()) {\n          stopTimer();\n        }\n      }, REFRESH_INTERVAL);\n    }\n  };\n  React.useEffect(() => {\n    syncTimer();\n    return () => {\n      if (countdown.current) {\n        clearInterval(countdown.current);\n        countdown.current = null;\n      }\n    };\n  }, [value]);\n  const formatter = (formatValue, config) => formatCountdown(formatValue, Object.assign(Object.assign({}, config), {\n    format\n  }));\n  const valueRender = node => cloneElement(node, {\n    title: undefined\n  });\n  return /*#__PURE__*/React.createElement(Statistic, Object.assign({}, props, {\n    valueRender: valueRender,\n    formatter: formatter\n  }));\n};\nexport default /*#__PURE__*/React.memo(Countdown);"],"mappings":"AAAA,YAAY;;AAEZ,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,cAAc,MAAM,+BAA+B;AAC1D,SAASC,YAAY,QAAQ,oBAAoB;AACjD,OAAOC,SAAS,MAAM,aAAa;AACnC,SAASC,eAAe,QAAQ,SAAS;AACzC,MAAMC,gBAAgB,GAAG,IAAI,GAAG,EAAE;AAClC,SAASC,OAAOA,CAACC,KAAK,EAAE;EACtB,OAAO,IAAIC,IAAI,CAACD,KAAK,CAAC,CAACD,OAAO,CAAC,CAAC;AAClC;AACA,MAAMG,SAAS,GAAGC,KAAK,IAAI;EACzB,MAAM;IACJH,KAAK;IACLI,MAAM,GAAG,UAAU;IACnBC,QAAQ;IACRC;EACF,CAAC,GAAGH,KAAK;EACT,MAAMI,WAAW,GAAGb,cAAc,CAAC,CAAC;EACpC,MAAMc,SAAS,GAAGf,KAAK,CAACgB,MAAM,CAAC,IAAI,CAAC;EACpC,MAAMC,SAAS,GAAGA,CAAA,KAAM;IACtBJ,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,QAAQ,CAAC,CAAC;IAC9D,IAAIE,SAAS,CAACG,OAAO,EAAE;MACrBC,aAAa,CAACJ,SAAS,CAACG,OAAO,CAAC;MAChCH,SAAS,CAACG,OAAO,GAAG,IAAI;IAC1B;EACF,CAAC;EACD,MAAME,SAAS,GAAGA,CAAA,KAAM;IACtB,MAAMC,SAAS,GAAGf,OAAO,CAACC,KAAK,CAAC;IAChC,IAAIc,SAAS,IAAIb,IAAI,CAACc,GAAG,CAAC,CAAC,EAAE;MAC3BP,SAAS,CAACG,OAAO,GAAGK,WAAW,CAAC,MAAM;QACpCT,WAAW,CAAC,CAAC;QACbF,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,QAAQ,CAACS,SAAS,GAAGb,IAAI,CAACc,GAAG,CAAC,CAAC,CAAC;QACpF,IAAID,SAAS,GAAGb,IAAI,CAACc,GAAG,CAAC,CAAC,EAAE;UAC1BL,SAAS,CAAC,CAAC;QACb;MACF,CAAC,EAAEZ,gBAAgB,CAAC;IACtB;EACF,CAAC;EACDL,KAAK,CAACwB,SAAS,CAAC,MAAM;IACpBJ,SAAS,CAAC,CAAC;IACX,OAAO,MAAM;MACX,IAAIL,SAAS,CAACG,OAAO,EAAE;QACrBC,aAAa,CAACJ,SAAS,CAACG,OAAO,CAAC;QAChCH,SAAS,CAACG,OAAO,GAAG,IAAI;MAC1B;IACF,CAAC;EACH,CAAC,EAAE,CAACX,KAAK,CAAC,CAAC;EACX,MAAMkB,SAAS,GAAGA,CAACC,WAAW,EAAEC,MAAM,KAAKvB,eAAe,CAACsB,WAAW,EAAEE,MAAM,CAACC,MAAM,CAACD,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEF,MAAM,CAAC,EAAE;IAC/GhB;EACF,CAAC,CAAC,CAAC;EACH,MAAMmB,WAAW,GAAGC,IAAI,IAAI7B,YAAY,CAAC6B,IAAI,EAAE;IAC7CC,KAAK,EAAEC;EACT,CAAC,CAAC;EACF,OAAO,aAAajC,KAAK,CAACkC,aAAa,CAAC/B,SAAS,EAAEyB,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEnB,KAAK,EAAE;IAC1EoB,WAAW,EAAEA,WAAW;IACxBL,SAAS,EAAEA;EACb,CAAC,CAAC,CAAC;AACL,CAAC;AACD,eAAe,aAAazB,KAAK,CAACmC,IAAI,CAAC1B,SAAS,CAAC"},"metadata":{},"sourceType":"module","externalDependencies":[]}