{"version":3,"sources":["jsdelivr-header.js","/npm/@reactjs-player/use-hlsjs@1.2.1/lib/use-hlsjs.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OCNO,UAAW,QAElB,MAAM,OAAS,GACb,IAAI,SAAQ,IACV,GAAI,OAAO,IAET,YADA,EAAQ,OAAO,KAGjB,MAAM,EAAS,OAAO,SAAS,cAAc,UAC7C,OAAO,SAAS,KAAK,YAAY,GACjC,EAAO,OAAS,IAAM,EAAQ,OAAO,KACrC,EAAO,QAAU,IAAM,EAAQ,OAAO,KACtC,EAAO,OAAQ,EACf,EAAO,IAAM,CAAG,IAId,MAAQ,QAAQ,MAEhB,cAAgB,IACpB,GAAI,EACF,IACE,EAAO,SACT,CAAE,MAAO,GAAS,CACpB,gBAGa,EAAG,kBAAiB,MAAK,SAAQ,kBAC9C,MAAO,EAAQ,GAAa,MAAM,SAAS,MACrC,EAAW,MAAM,OAAO,GACxB,EAAM,MAAM,OAAO,IACnB,EAAY,MAAM,OAAO,MACzB,EAAiB,MAAM,OAAO,GAwDpC,OAtDA,MAAM,WAAU,KACd,EAAI,QAAU,EACd,EAAU,QAAU,EACb,KACL,EAAI,QAAU,EAAE,IAEjB,CAAC,EAAK,IAET,MAAM,WAAU,KAUd,EAAU,MACV,EAAe,QAAQ,MACnB,GAXS,iBACL,OAAO,4CACR,OAAO,KAAO,EAAI,UAAY,EAInC,EAAU,IAAI,OAAO,IAAI,CAAE,cAAc,KAAU,EAAU,WAH3D,MAAM,oCAGgE,EAMxE,EACF,GACC,CAAC,IAEJ,MAAM,WAAU,KACd,MAAM,EAAU,IAAM,cAAc,GACpC,IAAK,IAAW,EAAI,QAClB,OAAO,EAET,MAAM,EAAa,EAAI,QACjB,EAAK,EAAS,UACpB,OAAK,GAGL,EAAO,YAAY,GACnB,EAAO,KAAK,OAAO,IAAI,OAAO,gBAAgB,KACxC,IAAe,EAAI,SACrB,EAAO,WAAW,EAAI,QACxB,IAOF,EAAO,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,EAAG,KACjC,GAAkB,EAAe,SAAW,GAAQ,EAAK,OAC3D,EAAe,QAAQ,CAAE,KAAM,EAAK,KAAM,OAAQ,EAAK,SACzD,IAEK,GAlBE,CAkBK,GACb,CAAC,IAEG,IAAI","file":"/npm/@reactjs-player/use-hlsjs@1.2.1/lib/use-hlsjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@reactjs-player/use-hlsjs@1.2.1/lib/use-hlsjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import React from 'react';\n\nconst getHls = src =>\n  new Promise(resolve => {\n    if (global.Hls) {\n      resolve(global.Hls);\n      return;\n    }\n    const script = global.document.createElement('script');\n    global.document.body.appendChild(script);\n    script.onload = () => resolve(global.Hls);\n    script.onerror = () => resolve(global.Hls);\n    script.async = true;\n    script.src = src;\n  });\n\n// eslint-disable-next-line no-console\nconst debug = console.error;\n\nconst destroyPlayer = player => {\n  if (player) {\n    try {\n      player.destroy();\n    } catch (errMsg) {}\n  }\n};\n\nexport default ({ getVideoElement, src, config, onMsgChange }) => {\n  const [player, setPlayer] = React.useState(null);\n  const getVideo = React.useRef(getVideoElement);\n  const ref = React.useRef('');\n  const configRef = React.useRef(null);\n  const onMsgChangeRef = React.useRef(onMsgChange);\n\n  React.useEffect(() => {\n    ref.current = src;\n    configRef.current = config;\n    return () => {\n      ref.current = '';\n    };\n  }, [src, config]);\n\n  React.useEffect(() => {\n    const play = async () => {\n      await getHls('https://unpkg.com/hls.js/dist/hls.min.js');\n      if (!global.Hls || ref.current !== src) {\n        debug('useHlsjs: 加载 hls.js 失败或者 src 已经变更');\n        return;\n      }\n      setPlayer(new global.Hls({ enableWorker: false, ...configRef.current }));\n    };\n\n    setPlayer(null);\n    onMsgChangeRef.current(null);\n    if (src) {\n      play();\n    }\n  }, [src]);\n\n  React.useEffect(() => {\n    const cleanup = () => destroyPlayer(player);\n    if (!player || !ref.current) {\n      return cleanup;\n    }\n    const currentSrc = ref.current;\n    const el = getVideo.current();\n    if (!el) {\n      return cleanup;\n    }\n    player.attachMedia(el);\n    player.once(global.Hls.Events.MEDIA_ATTACHED, () => {\n      if (currentSrc === ref.current) {\n        player.loadSource(ref.current);\n      }\n    });\n    // player.once(global.Hls.Events.MANIFEST_PARSED, () => {\n    //   if (currentSrc === ref.current) {\n    //     el.play();\n    //   }\n    // });\n    player.on(global.Hls.Events.ERROR, (e, info) => {\n      if (onMsgChangeRef && onMsgChangeRef.current && info && info.fatal) {\n        onMsgChangeRef.current({ type: info.type, detail: info.details });\n      }\n    });\n    return cleanup;\n  }, [player]);\n\n  return null;\n};\n"]}