Skip to content

Instantly share code, notes, and snippets.

@domenic
Created October 14, 2014 15:51
Show Gist options
  • Save domenic/6eb116abee8f112ddca3 to your computer and use it in GitHub Desktop.
Save domenic/6eb116abee8f112ddca3 to your computer and use it in GitHub Desktop.
HTMLMediaElement.js skeleton
import conversions from "webidl-conversions";
import reflector from "webidl-html-reflector";
var defineProperty = Object.defineProperty;
export default class CustomHTMLMediaElement extends HTMLElement {
get error() {}
get src() {
return reflector["DOMString"].get(this, "src");
}
set src(v) {
v = conversions["DOMString"](v);
reflector["DOMString"].set(this, "src", v);
}
get srcObject() {}
set srcObject(v) {
v = conversions["MediaProvider"](v);
}
get currentSrc() {}
get crossOrigin() {
return reflector["DOMString"].get(this, "crossorigin");
}
set crossOrigin(v) {
v = conversions["DOMString"](v);
reflector["DOMString"].set(this, "crossorigin", v);
}
get networkState() {}
get preload() {}
set preload(v) {
v = conversions["DOMString"](v);
}
get buffered() {}
get readyState() {}
get seeking() {}
get currentTime() {}
set currentTime(v) {
v = conversions["double"](v);
}
get duration() {}
get paused() {}
get defaultPlaybackRate() {}
set defaultPlaybackRate(v) {
v = conversions["double"](v);
}
get playbackRate() {}
set playbackRate(v) {
v = conversions["double"](v);
}
get played() {}
get seekable() {}
get ended() {}
get autoplay() {
return reflector["boolean"].get(this, "autoplay");
}
set autoplay(v) {
v = conversions["boolean"](v);
reflector["boolean"].set(this, "autoplay", v);
}
get loop() {
return reflector["boolean"].get(this, "loop");
}
set loop(v) {
v = conversions["boolean"](v);
reflector["boolean"].set(this, "loop", v);
}
get mediaGroup() {
return reflector["DOMString"].get(this, "mediagroup");
}
set mediaGroup(v) {
v = conversions["DOMString"](v);
reflector["DOMString"].set(this, "mediagroup", v);
}
get controller() {}
set controller(v) {
v = conversions["MediaController"](v);
}
get controls() {}
set controls(v) {
v = conversions["boolean"](v);
}
get volume() {}
set volume(v) {
v = conversions["double"](v);
}
get muted() {}
set muted(v) {
v = conversions["boolean"](v);
}
get defaultMuted() {
return reflector["boolean"].get(this, "muted");
}
set defaultMuted(v) {
v = conversions["boolean"](v);
reflector["boolean"].set(this, "muted", v);
}
get audioTracks() {}
get videoTracks() {}
get textTracks() {}
load() {}
canPlayType(type) {
type = conversions["DOMString"](type);
}
fastSeek(time) {
time = conversions["double"](time);
}
getStartDate() {}
play() {}
pause() {}
addTextTrack(kind, label, language) {
kind = conversions["TextTrackKind"](kind);
label = conversions["DOMString"](label);
language = conversions["DOMString"](language);
}
}
defineProperty(CustomHTMLMediaElement, "NETWORK_EMPTY", {
value: 0,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "NETWORK_EMPTY", {
value: 0,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "NETWORK_IDLE", {
value: 1,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "NETWORK_IDLE", {
value: 1,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "NETWORK_LOADING", {
value: 2,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "NETWORK_LOADING", {
value: 2,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "NETWORK_NO_SOURCE", {
value: 3,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "NETWORK_NO_SOURCE", {
value: 3,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "HAVE_NOTHING", {
value: 0,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "HAVE_NOTHING", {
value: 0,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "HAVE_METADATA", {
value: 1,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "HAVE_METADATA", {
value: 1,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "HAVE_CURRENT_DATA", {
value: 2,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "HAVE_CURRENT_DATA", {
value: 2,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "HAVE_FUTURE_DATA", {
value: 3,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "HAVE_FUTURE_DATA", {
value: 3,
enumerable: true
});
defineProperty(CustomHTMLMediaElement, "HAVE_ENOUGH_DATA", {
value: 4,
enumerable: true
});
defineProperty(CustomHTMLMediaElement.prototype, "HAVE_ENOUGH_DATA", {
value: 4,
enumerable: true
});
window.CustomHTMLMediaElement = CustomHTMLMediaElement;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment