app
Adom Video Player
Public Made by Adomby adom
Show any video in a real player: seek, scrub, frame step, chapters. One command, no hand-rolled servers.
← Commit history
package.json+1−1@@ -1,7 +1,7 @@ { "slug": "adom-video-player", "type": "app",- "version": "0.4.5",+ "version": "0.4.6", "title": "Adom Video Player", "brief": "Show any video in a real player: seek, scrub, frame step, chapters. One command, no hand-rolled servers.", "summary": "When an AI shows you a video or audio file, it plays here: a shared server that answers HTTP Range requests, so the timeline seeks, in the same YouTube-style player as the wiki's ::adom-video widget, with YouTube's shortcuts, chapters, captions, frame stepping and auto-reload when the file is re-rendered.",
page.json+1−1@@ -1,7 +1,7 @@ { "slug": "adom-video-player", "type": "app",- "version": "0.4.5",+ "version": "0.4.6", "title": "Adom Video Player", "brief": "Show any video in a real player: seek, scrub, frame step, chapters. One command, no hand-rolled servers.", "summary": "When an AI shows you a video or audio file, it plays here: a shared server that answers HTTP Range requests, so the timeline seeks, in the same YouTube-style player as the wiki's ::adom-video widget, with YouTube's shortcuts, chapters, captions, frame stepping and auto-reload when the file is re-rendered.",
public/adom-video.js+6−1@@ -847,9 +847,14 @@ tapTimer = setTimeout(() => { if (p.classList.contains('hide-ui')) this._show(); else this.toggle(); }, 280); return; }+ // a double-click is measured here, not left to the OS setting (Windows allows 500 ms, so a pause+ // then a quick unpause counted): two clicks within 300 ms and 10 px. Each click still toggles, as on+ // YouTube, so a double-click ends where it started and goes fullscreen. this.toggle();+ const now = performance.now(), last = this._lastClick;+ if (last && now - last.t <= 300 && Math.hypot(e.clientX - last.x, e.clientY - last.y) <= 10) { this._lastClick = null; this.fullscreen(); }+ else this._lastClick = { t: now, x: e.clientX, y: e.clientY }; });- click.addEventListener('dblclick', (e) => { e.preventDefault(); this.fullscreen(); }); $('.big').addEventListener('click', () => this.toggle()); p.addEventListener('pointermove', (e) => { if (e.pointerType !== 'touch') this._show(); });