{
  "version": 3,
  "sources": ["../../../src/index.ts", "../../../src/UncontrolledPlyr/index.tsx", "../../../src/createPlyr/index.ts", "../../../src/SolidPlyr/index.tsx", "../../../src/createDashPlyr/index.ts", "../../../src/SolidDashPlyr/index.tsx", "../../../src/createHlsPlyr/index.ts", "../../../src/SolidHlsPlyr/index.tsx"],
  "sourcesContent": ["// ANCHOR Modules\nexport {\n  default as UncontrolledPlyr,\n} from './UncontrolledPlyr';\nexport {\n  default as SolidPlyr,\n} from './SolidPlyr';\nexport {\n  default as SolidDashPlyr,\n} from './SolidDashPlyr';\nexport {\n  default as SolidHlsPlyr,\n} from './SolidHlsPlyr';\nexport {\n  default as createPlyr,\n} from './createPlyr';\nexport {\n  default as createDashPlyr,\n} from './createDashPlyr';\nexport {\n  default as createHlsPlyr,\n} from './createHlsPlyr';\n\n// ANCHOR Types\nexport type {\n  UncontrolledPlyrProps,\n  HTMLPlyrVideoElement,\n} from './UncontrolledPlyr';\nexport type {\n  CreatePlyrProps,\n} from './createPlyr';\n", "// ANCHOR Solid\nimport { JSX, Show } from 'solid-js';\n\n// ANCHOR Plyr\nimport Plyr from 'plyr';\n\n// ANCHOR Types\nexport type HTMLPlyrVideoElement = HTMLVideoElement\n  & { plyr?: Plyr }\n\nexport interface UncontrolledPlyrProps\n  extends JSX.VideoHTMLAttributes<HTMLPlyrVideoElement> {\n  fallback?: JSX.Element;\n  isLoading?: boolean;\n}\n\nexport default function UncontrolledPlyr(\n  props: UncontrolledPlyrProps,\n): JSX.Element {\n  return (\n    <>\n      <Show when={props.isLoading}>\n        <Show\n          when={props.fallback}\n          fallback={(\n            <div class=\"lion-spinner-container\">\n              <div class=\"lion-spinner lion-spinner-wave\" />\n            </div>\n          )}\n        >\n          {(fallback) => fallback}\n        </Show>\n      </Show>\n      <div>\n        <video\n          {...props}\n          ref={props.ref}\n          class=\"solid-plyr plyr\"\n        />\n      </div>\n    </>\n  );\n}\n", "// ANCHOR Solid\nimport {\n  createSignal,\n  createEffect,\n  onCleanup,\n  Accessor,\n  Setter,\n} from 'solid-js';\n\n// ANCHOR Plyr\nimport Plyr from 'plyr';\n\n// ANCHOR Types\nimport { HTMLPlyrVideoElement } from '../UncontrolledPlyr';\n\nexport interface CreatePlyrProps {\n  source: Plyr.SourceInfo;\n  options?: Plyr.Options;\n}\n\ntype PlyrResult = HTMLPlyrVideoElement | undefined;\n\nexport type CreatePlyrResult = [\n  plyr: Accessor<PlyrResult>,\n  setPlyr: Setter<PlyrResult>,\n];\n\n\nexport default function createPlyr(\n  props: CreatePlyrProps\n): CreatePlyrResult {\n  const [\n    plyr,\n    setPlyr,\n  ] = createSignal<HTMLPlyrVideoElement>();\n\n  createEffect(() => {\n    const options = props.options ?? {};\n    const newPlayer = new Plyr('.solid-plyr', options);\n    newPlayer.source = props.source;\n\n    setPlyr((current) => current\n      ? ({\n        ...current,\n        plyr: newPlayer,\n      })\n      : undefined,\n    );\n\n    onCleanup(() => {\n      newPlayer.destroy();\n    });\n  });\n\n  return [plyr, setPlyr];\n};\n", "// ANCHOR Solid\nimport { JSX } from 'solid-js';\n\n// ANCHOR Signals\nimport createPlyr from '../createPlyr';\n\n// ANCHOR Types\nimport {\n  CreatePlyrProps,\n} from '../createPlyr';\n\n// ANCHOR Components\nimport UncontrolledPlyr from '../UncontrolledPlyr';\nimport '../styles.css';\n\nexport default function SolidPlyr(\n  props: CreatePlyrProps,\n): JSX.Element {\n  const [plyr, setPlyr] = createPlyr(props);\n\n  return (\n    <UncontrolledPlyr\n      ref={setPlyr}\n      isLoading={!plyr()}\n    />\n  );\n}\n", "// ANCHOR Solid\nimport {\n  createSignal,\n  createEffect,\n  onCleanup,\n  createMemo,\n} from 'solid-js';\n\n// ANCHOR Plyr\nimport Plyr from 'plyr';\n\n// ANCHOR Hls\nimport Dash from 'dashjs';\n\n// ANCHOR Types\nimport {\n  CreatePlyrProps,\n  CreatePlyrResult,\n} from '../createPlyr';\nimport { HTMLPlyrVideoElement } from '../UncontrolledPlyr';\n\nexport default function createDashPlyr(\n  props: CreatePlyrProps\n): CreatePlyrResult {\n  const [\n    plyr,\n    setPlyr,\n  ] = createSignal<HTMLPlyrVideoElement>();\n  const [\n    dashPlyr,\n    setDashPlyr,\n  ] = createSignal<HTMLPlyrVideoElement>();\n  const dash = createMemo(() => (\n    Dash.MediaPlayer().create()\n  ));\n  const [\n    availableQualities,\n    setAvailableQualities,\n  ] = createSignal<number[]>();\n\n  const options = props.options ?? {};\n  const { source } = props;\n  const currentSource = source.sources[0].src;\n\n  createEffect(() => {\n    const plyrInstance = plyr();\n    const dashInstance = dash();\n\n    if (!window) {\n      return;\n    }\n\n    window.dashjs = window.dashjs || {};\n\n    if (plyrInstance) {\n      if (!Dash.supportsMediaSource) {\n        const newPlayer = new Plyr('.solid-plyr', options);\n\n        plyrInstance.plyr = newPlayer;\n        setDashPlyr(plyrInstance);\n      } else {\n        dashInstance.initialize(\n          plyrInstance,\n          currentSource,\n          options?.autoplay ?? false,\n        );\n\n        dashInstance.on(\n          'playbackMetaDataLoaded',\n          () => {\n            let span = document.querySelector(\n              \".plyr__menu__container [data-plyr='quality'][value='0'] span\"\n            );\n\n            if (span) {\n              span.innerHTML = 'AUTO';\n            }\n\n            const bitrateList = dashInstance\n              .getBitrateInfoListFor('video');\n            const availableLevels = bitrateList\n              .map(bitrate => bitrate.height);\n            const qualities = [0, ...availableLevels];\n\n            setAvailableQualities(qualities);\n          }\n        )\n      }\n    }\n  })\n\n  createEffect(() => {\n    const plyrInstance = plyr();\n    const dashInstance = dash();\n    const qualityOptions = availableQualities();\n\n    if (qualityOptions && plyrInstance) {\n      const newOptions: Plyr.Options = {\n        ...options,\n        quality: {\n          default: 720,\n          options: qualityOptions,\n          forced: true,\n          onChange: (newQuality) => {\n            dashInstance.setQualityFor(\n              'video',\n              newQuality === 0 ? -1 : qualityOptions.indexOf(newQuality) - 1,\n              true,\n            );\n          }\n        },\n        i18n: {\n          qualityLabel: {\n            0: 'Auto',\n          },\n        },\n      }\n\n      const newPlayer = new Plyr('.solid-plyr', newOptions);\n\n      plyrInstance.plyr = newPlayer;\n      setDashPlyr(plyrInstance);\n    }\n\n    onCleanup(() => {\n      if (dashInstance && qualityOptions) {\n        dashInstance.reset();\n      }\n    });\n  });\n\n  return [dashPlyr, setPlyr];\n};\n", "// ANCHOR Solid\nimport { JSX } from 'solid-js';\n\n// ANCHOR Signals\nimport createDashPlyr from '../createDashPlyr';\n\n// ANCHOR Types\nimport {\n  CreatePlyrProps,\n} from '../createPlyr';\n\n// ANCHOR Components\nimport UncontrolledPlyr from '../UncontrolledPlyr';\nimport '../styles.css';\n\nexport default function SolidDashPlyr(\n  props: CreatePlyrProps,\n): JSX.Element {\n  const [plyr, setPlyr] = createDashPlyr(props);\n\n  return (\n    <UncontrolledPlyr\n      ref={setPlyr}\n      isLoading={!plyr()}\n    />\n  );\n}\n", "// ANCHOR Solid\nimport {\n  createSignal,\n  createEffect,\n  onCleanup,\n  createMemo,\n} from 'solid-js';\n\n// ANCHOR Plyr\nimport Plyr from 'plyr';\n\n// ANCHOR Hls\nimport Hls from 'hls.js';\n\n// ANCHOR Types\nimport {\n  CreatePlyrProps,\n  CreatePlyrResult,\n} from '../createPlyr';\nimport { HTMLPlyrVideoElement } from '../UncontrolledPlyr';\n\ndeclare global {\n  interface Window { hls: Hls; }\n}\n\nexport default function createHlsPlyr(\n  props: CreatePlyrProps\n): CreatePlyrResult {\n  const [\n    plyr,\n    setPlyr,\n  ] = createSignal<HTMLPlyrVideoElement>();\n  const [\n    hlsPlyr,\n    setHlsPlyr,\n  ] = createSignal<HTMLPlyrVideoElement>();\n  const hls = createMemo(() => new Hls());\n  const [\n    availableQualities,\n    setAvailableQualities,\n  ] = createSignal<number[]>();\n\n  const options = props.options ?? {};\n  const { source } = props;\n  const currentSource = source.sources[0].src;\n\n  createEffect(() => {\n    const plyrInstance = plyr();\n    const hlsInstance = hls();\n\n    if (!window) {\n      return;\n    }\n\n    window.hls = window.hls || {};\n\n    if (plyrInstance) {\n      if (plyrInstance.canPlayType('application/vnd.apple.mpegURL')) {\n        const newPlayer = new Plyr('.solid-plyr', options);\n        newPlayer.source = {\n          ...source,\n          sources: [\n            {\n              ...source.sources[0],\n              type: 'application/vnd.apple.mpegURL',\n            }\n          ]\n        };\n\n        plyrInstance.plyr = newPlayer;\n        setHlsPlyr(plyrInstance);\n      } else if (!Hls.isSupported()) {\n        const newPlayer = new Plyr('.solid-plyr', options);\n\n        plyrInstance.plyr = newPlayer;\n        setHlsPlyr(plyrInstance);\n      } else {\n        hlsInstance.loadSource(currentSource);\n\n        hlsInstance.on(\n          Hls.Events.MANIFEST_PARSED,\n          () => {\n            const availableLevels = hlsInstance.levels\n              .map((level) => level.height);\n            const qualities = [0, ...availableLevels];\n\n            setAvailableQualities(qualities);\n\n            hlsInstance.on(Hls.Events.LEVEL_SWITCHED, (_, data) => {\n              let span = document.querySelector(\n                \".plyr__menu__container [data-plyr='quality'][value='0'] span\"\n              );\n\n              if (span) {\n                if (hlsInstance.autoLevelEnabled) {\n                  span.innerHTML = `AUTO (${hlsInstance.levels[data.level].height}p)`\n                } else {\n                  span.innerHTML = `AUTO`\n                }\n              }\n            });\n          }\n        );\n      }\n    }\n  });\n\n  createEffect(() => {\n    const plyrInstance = plyr();\n    const hlsInstance = hls();\n    const qualityOptions = availableQualities();\n\n    if (qualityOptions && plyrInstance) {\n      const newOptions: Plyr.Options = {\n        ...options,\n        quality: {\n          default: 720,\n          options: qualityOptions,\n          forced: true,\n          onChange: newQuality => {\n            if (newQuality === 0) {\n              hlsInstance.currentLevel = -1;\n            } else {\n              hlsInstance.levels.forEach((level, levelIndex) => {\n                if (level.height === newQuality) {\n                  hlsInstance.currentLevel = levelIndex;\n                }\n              });\n            }\n          }\n        },\n        i18n: {\n          qualityLabel: {\n            0: 'Auto'\n          }\n        }\n      }\n\n      const newPlayer = new Plyr('.solid-plyr', newOptions);\n\n      plyrInstance.plyr = newPlayer;\n      setHlsPlyr(plyrInstance);\n      hlsInstance.attachMedia(plyrInstance);\n      window.hls = hlsInstance;\n    }\n\n    onCleanup(() => {\n      if (hlsInstance && qualityOptions) {\n        hlsInstance.detachMedia();\n      }\n    });\n  });\n\n  return [hlsPlyr, setPlyr];\n};\n", "// ANCHOR Solid\nimport { JSX } from 'solid-js';\n\n// ANCHOR Signals\nimport createHlsPlyr from '../createHlsPlyr';\n\n// ANCHOR Types\nimport {\n  CreatePlyrProps,\n} from '../createPlyr';\n\n// ANCHOR Components\nimport UncontrolledPlyr from '../UncontrolledPlyr';\nimport '../styles.css';\n\nexport default function SolidHlsPlyr(\n  props: CreatePlyrProps,\n): JSX.Element {\n  const [plyr, setPlyr] = createHlsPlyr(props);\n\n  return (\n    <UncontrolledPlyr\n      ref={setPlyr}\n      isLoading={!plyr()}\n    />\n  );\n}\n"],
  "mappings": "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",
  "names": []
}
