Skip to content

Instantly share code, notes, and snippets.

@Mifrill
Forked from nbibler/caller.hbs
Created November 5, 2020 18:37
Show Gist options
  • Save Mifrill/f9c8f7dd91f5edb4107c946fd88fe604 to your computer and use it in GitHub Desktop.
Save Mifrill/f9c8f7dd91f5edb4107c946fd88fe604 to your computer and use it in GitHub Desktop.
Video.js, TypeScript, traditional Ember Component
<MyVideo @video={{someVideoModelInstance}}/>
<video class="video-js vjs-big-play-centered"></video>
import Component from "@ember/component";
import { assert } from "@ember/debug";
import { isNone } from "@ember/utils";
import ModelRegistry from "ember-data/types/registries/model";
import videojs, { VideoJsPlayer } from "video.js";
export default class MyVideoComponent extends Component {
player?: VideoJsPlayer;
video!: ModelRegistry["video"];
didInsertElement() {
super.didInsertElement();
this.player = videojs(this.element.querySelector(".video-js"), { controls: true, fluid: true });
this.player.on("play", () => {
console.log("playing...");
});
}
didRender() {
if (!this.player || !this.video.mediaPath || this.video.mediaPath === this.player.src()) {
return;
}
this.player.src(this.video.mediaPath);
}
init() {
super.init();
assert("`video` is required", !isNone(this.video));
}
willDestroyElement() {
super.willDestroyElement();
if (this.player) {
this.player.dispose();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment