view src/index.ts @ 0:3f2da406c788

start
author drewp@bigasterisk.com
date Tue, 21 Jul 2020 23:28:04 -0700
parents
children
line wrap: on
line source

import {
  LitElement,
  html,
  customElement,
  property,
  unsafeCSS,
  PropertyValues,
} from "lit-element";

const shaka = (window as any).shaka! as any;

@customElement("video-page")
export class VideoPage extends LitElement {
  render() {
    return html`
      <video-section
        title="Henry Sugar"
        manifest="/vids/henry-sugar/manifest.mpd"
      ></video-section>
      <video-section
        title="Henry Sugar bloopers"
        manifest="/vids/henry-sugar-bloopers/manifest.mpd"
      ></video-section>
    `;
  }
}

@customElement("video-section")
export class VideoSection extends LitElement {
  @property({ type: String }) manifest: string | undefined;
  @property({ type: String }) title: string = "(unknown)";
  render() {
    return html`
      <style>
        section {
          background: #ffffff14;
          display: inline-block;
          padding: 10px;
          color: white;
        }
      </style>
      <section>
        <h1>${this.title}</h1>
        <video id="video" width="720" height="480" controls></video>
      </section>
    `;
  }

  updated(changedProperties: Map<string, any>) {
    if (!this.manifest) {
      return;
    }
    var video = this.shadowRoot!.querySelector("#video");
    var player = new shaka.Player(video);

    player.addEventListener("error", onErrorEvent);
    player.load(this.manifest).catch(onError);
    function onErrorEvent(event: any) {
      const error = event.detail;
      onError(event.detail);
    }

    function onError(error: any) {
      console.error("Error code", error.code, "object", error);
    }
  }
}

document.addEventListener("DOMContentLoaded", shaka.polyfill.installAll);