ruffle/web/js-src/ruffle-embed.js

54 lines
1.6 KiB
JavaScript
Raw Normal View History

import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, is_swf_filename, RufflePlayer } from "./ruffle-player.js";
import { register_element } from "./register-element";
2019-08-22 01:02:43 +00:00
export default class RuffleEmbed extends RufflePlayer {
constructor(...args) {
let self = super(...args);
return self;
}
connectedCallback() {
super.connectedCallback();
this.stream_swf_url(this.attributes.src.value);
2019-08-22 01:02:43 +00:00
}
get src() {
2019-09-14 19:40:19 +00:00
return this.attributes.src.value;
2019-08-22 01:02:43 +00:00
}
set src(srcval) {
2019-09-14 19:40:19 +00:00
this.attributes.src = srcval;
2019-08-22 01:02:43 +00:00
}
static get observedAttributes() {
return ["src", "width", "height"];
2019-08-22 01:02:43 +00:00
}
attributeChangedCallback(name, oldValue, newValue) {
super.attributeChangedCallback(name, oldValue, newValue);
console.log(name + " " + oldValue + " " + newValue);
if (this.isConnected && name === "src") {
this.stream_swf_url(this.attributes.src.value);
2019-08-22 01:02:43 +00:00
}
}
static is_interdictable(elem) {
if (elem.type === FLASH_MIMETYPE || elem.type === FUTURESPLASH_MIMETYPE || elem.type == FLASH7_AND_8_MIMETYPE || elem.type == FLASH_MOVIE_MIMETYPE) {
return true;
} else if (elem.type === undefined || elem.type === "") {
return is_swf_filename(elem.src);
}
return false;
2019-08-22 01:02:43 +00:00
}
static from_native_embed_element(elem) {
let external_name = register_element("ruffle-embed", RuffleEmbed);
let ruffle_obj = document.createElement(external_name);
2020-03-26 09:54:35 +00:00
ruffle_obj.copy_element(elem);
2019-08-22 01:02:43 +00:00
return ruffle_obj;
}
}