aboutsummaryrefslogtreecommitdiff
path: root/app/src/web/ts/media.ts
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2019-05-01 16:05:19 -0700
committerAllan Wang <me@allanwang.ca>2019-05-01 16:05:19 -0700
commit58f4f9298b09081b3c937227828824849057a835 (patch)
tree18d2bf44637b52c9f68817253fc37d4ca699daef /app/src/web/ts/media.ts
parent576cc1a451a16f2d82ee1e41e83c420a85ded47e (diff)
parentda93672c2ed6b54e0e7119a6b55715185112df3e (diff)
downloadfrost-58f4f9298b09081b3c937227828824849057a835.tar.gz
frost-58f4f9298b09081b3c937227828824849057a835.tar.bz2
frost-58f4f9298b09081b3c937227828824849057a835.zip
Merge dev
Diffstat (limited to 'app/src/web/ts/media.ts')
-rw-r--r--app/src/web/ts/media.ts47
1 files changed, 47 insertions, 0 deletions
diff --git a/app/src/web/ts/media.ts b/app/src/web/ts/media.ts
new file mode 100644
index 00000000..5b9b1a54
--- /dev/null
+++ b/app/src/web/ts/media.ts
@@ -0,0 +1,47 @@
+// Handles media events
+(function () {
+ const _frostMediaClick = (e: Event) => {
+ const target = e.target || e.srcElement;
+ if (!(target instanceof HTMLElement)) {
+ return
+ }
+ let element: HTMLElement = target;
+ const dataset = element.dataset;
+ if (!dataset || !dataset.sigil || dataset.sigil.toLowerCase().indexOf('inlinevideo') == -1) {
+ return
+ }
+ let i = 0;
+ while (!element.hasAttribute('data-store')) {
+ if (++i > 2) {
+ return
+ }
+ element = <HTMLElement>element.parentNode;
+ }
+ const store = element.dataset.store;
+ if (!store) {
+ return
+ }
+
+ let dataStore;
+
+ try {
+ dataStore = JSON.parse(store)
+ } catch (e) {
+ return
+ }
+
+ const url = dataStore.src;
+
+ // !startsWith; see https://stackoverflow.com/a/36876507/4407321
+ if (!url || url.lastIndexOf('http', 0) !== 0) {
+ return
+ }
+
+ console.log(`Inline video ${url}`);
+ if (Frost.loadVideo(url, dataStore.animatedGifVideo || false)) {
+ e.stopPropagation()
+ }
+ };
+
+ document.addEventListener('click', _frostMediaClick, true);
+}).call(undefined);