@hopeplayer/core 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HopePlayerElement.d.ts +34 -0
- package/dist/HopePlayerElement.d.ts.map +1 -1
- package/dist/chunks/ScratchSound-0XKHUcJK.js +174 -0
- package/dist/chunks/ScratchSound-0XKHUcJK.js.map +1 -0
- package/dist/chunks/{index-BHO8Gbrj.js → index-01P9jpUY.js} +819 -418
- package/dist/chunks/index-01P9jpUY.js.map +1 -0
- package/dist/chunks/{index-BeBmx35F.js → index-048h1-5X.js} +2 -2
- package/dist/chunks/{index-BeBmx35F.js.map → index-048h1-5X.js.map} +1 -1
- package/dist/chunks/{index-C6ONQXlF.js → index-9NzklChR.js} +2 -2
- package/dist/chunks/{index-C6ONQXlF.js.map → index-9NzklChR.js.map} +1 -1
- package/dist/chunks/index-BCMVXNL0.js +845 -0
- package/dist/chunks/index-BCMVXNL0.js.map +1 -0
- package/dist/chunks/{index-d_U9dcN6.js → index-BO0tjMR6.js} +2 -2
- package/dist/chunks/{index-d_U9dcN6.js.map → index-BO0tjMR6.js.map} +1 -1
- package/dist/chunks/index-BgJJr55r.js +311 -0
- package/dist/chunks/index-BgJJr55r.js.map +1 -0
- package/dist/chunks/{index-lwFM1iPV.js → index-CP1Y6U0c.js} +2 -2
- package/dist/chunks/{index-lwFM1iPV.js.map → index-CP1Y6U0c.js.map} +1 -1
- package/dist/chunks/index-DCXX1ZJG.js +108 -0
- package/dist/chunks/index-DCXX1ZJG.js.map +1 -0
- package/dist/chunks/{index-DGSYKljQ.js → index-n-1IIClr.js} +2 -2
- package/dist/chunks/{index-DGSYKljQ.js.map → index-n-1IIClr.js.map} +1 -1
- package/dist/controls/ControlBar.d.ts +32 -0
- package/dist/controls/ControlBar.d.ts.map +1 -1
- package/dist/controls/SeekBar.d.ts +8 -0
- package/dist/controls/SeekBar.d.ts.map +1 -1
- package/dist/controls/SettingsMenu.d.ts +3 -0
- package/dist/controls/SettingsMenu.d.ts.map +1 -1
- package/dist/controls/VolumePanel.d.ts +0 -2
- package/dist/controls/VolumePanel.d.ts.map +1 -1
- package/dist/debug/ErrorLog.d.ts +29 -0
- package/dist/debug/ErrorLog.d.ts.map +1 -0
- package/dist/hls/SourceManager.d.ts +11 -0
- package/dist/hls/SourceManager.d.ts.map +1 -1
- package/dist/hope-player.js +1 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/types.d.ts +19 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/keyboard/KeyboardController.d.ts +2 -0
- package/dist/keyboard/KeyboardController.d.ts.map +1 -1
- package/dist/plugins/ads/AdSurfaceGuard.d.ts +39 -0
- package/dist/plugins/ads/AdSurfaceGuard.d.ts.map +1 -0
- package/dist/plugins/ads/AdsController.d.ts +103 -1
- package/dist/plugins/ads/AdsController.d.ts.map +1 -1
- package/dist/plugins/ads/PrerollGate.d.ts +51 -0
- package/dist/plugins/ads/PrerollGate.d.ts.map +1 -0
- package/dist/plugins/ads/preconnect.d.ts +2 -0
- package/dist/plugins/ads/preconnect.d.ts.map +1 -0
- package/dist/plugins/audio/AudioStage.d.ts +80 -0
- package/dist/plugins/audio/AudioStage.d.ts.map +1 -0
- package/dist/plugins/audio/ScratchSound.d.ts +48 -0
- package/dist/plugins/audio/ScratchSound.d.ts.map +1 -0
- package/dist/plugins/audio/index.d.ts +7 -0
- package/dist/plugins/audio/index.d.ts.map +1 -0
- package/dist/plugins/audio/vinylSvg.d.ts +12 -0
- package/dist/plugins/audio/vinylSvg.d.ts.map +1 -0
- package/dist/plugins/debug/DebugPanel.d.ts +37 -0
- package/dist/plugins/debug/DebugPanel.d.ts.map +1 -0
- package/dist/plugins/debug/index.d.ts +5 -0
- package/dist/plugins/debug/index.d.ts.map +1 -0
- package/dist/subtitles/CaptionRenderer.d.ts +6 -0
- package/dist/subtitles/CaptionRenderer.d.ts.map +1 -1
- package/dist/subtitles/attachTracks.d.ts.map +1 -1
- package/dist/types/index.d.ts +108 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-BHO8Gbrj.js.map +0 -1
- package/dist/chunks/index-glxDu2eJ.js +0 -531
- package/dist/chunks/index-glxDu2eJ.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
var g = Object.defineProperty;
|
|
2
|
+
var b = (l, t, e) => t in l ? g(l, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[t] = e;
|
|
3
|
+
var o = (l, t, e) => b(l, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
+
const E = '<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>';
|
|
5
|
+
class x {
|
|
6
|
+
constructor(t) {
|
|
7
|
+
o(this, "el");
|
|
8
|
+
o(this, "titleEl");
|
|
9
|
+
o(this, "countEl");
|
|
10
|
+
o(this, "copyBtn");
|
|
11
|
+
o(this, "clearBtn");
|
|
12
|
+
o(this, "closeBtn");
|
|
13
|
+
o(this, "list");
|
|
14
|
+
o(this, "emptyEl");
|
|
15
|
+
o(this, "copiedTimer", null);
|
|
16
|
+
this.ctx = t, this.el = document.createElement("div"), this.el.className = "hp-debug", this.el.setAttribute("part", "debug-panel"), this.el.setAttribute("role", "dialog"), this.el.tabIndex = -1;
|
|
17
|
+
const e = document.createElement("div");
|
|
18
|
+
e.className = "hp-debug-header";
|
|
19
|
+
const i = document.createElement("div");
|
|
20
|
+
i.className = "hp-debug-title", this.titleEl = document.createElement("span"), this.countEl = document.createElement("span"), this.countEl.className = "hp-debug-count", i.append(this.titleEl, this.countEl);
|
|
21
|
+
const a = document.createElement("div");
|
|
22
|
+
a.className = "hp-debug-actions", this.copyBtn = this.button("hp-debug-btn", () => void this.copy()), this.clearBtn = this.button("hp-debug-btn", () => this.ctx.log.clear()), this.closeBtn = this.button("hp-stats-close", () => this.hide()), this.closeBtn.innerHTML = E, a.append(this.copyBtn, this.clearBtn, this.closeBtn), e.append(i, a), this.list = document.createElement("ol"), this.list.className = "hp-debug-list", this.emptyEl = document.createElement("p"), this.emptyEl.className = "hp-debug-empty", this.el.append(e, this.list, this.emptyEl), this.el.addEventListener("pointerdown", (n) => n.stopPropagation()), this.el.addEventListener("click", (n) => n.stopPropagation()), this.el.addEventListener("dblclick", (n) => n.stopPropagation()), this.el.addEventListener("keydown", (n) => {
|
|
23
|
+
n.key === "Escape" && this.hide(), n.stopPropagation();
|
|
24
|
+
}), this.refreshLabels();
|
|
25
|
+
}
|
|
26
|
+
get isVisible() {
|
|
27
|
+
return this.el.isConnected;
|
|
28
|
+
}
|
|
29
|
+
show() {
|
|
30
|
+
this.isVisible || this.ctx.containerEl.appendChild(this.el), this.ctx.log.onChange = () => this.render(), this.render(), this.el.focus({ preventScroll: !0 });
|
|
31
|
+
}
|
|
32
|
+
hide() {
|
|
33
|
+
this.ctx.log.onChange && (this.ctx.log.onChange = null), this.el.remove();
|
|
34
|
+
}
|
|
35
|
+
refreshLabels() {
|
|
36
|
+
const t = this.ctx.i18n;
|
|
37
|
+
this.titleEl.textContent = t.debugTitle, this.copyBtn.textContent = t.debugCopy, this.clearBtn.textContent = t.debugClear, this.closeBtn.setAttribute("aria-label", t.debugClose), this.emptyEl.textContent = t.debugEmpty, this.isVisible && this.render();
|
|
38
|
+
}
|
|
39
|
+
destroy() {
|
|
40
|
+
this.copiedTimer && clearTimeout(this.copiedTimer), this.hide();
|
|
41
|
+
}
|
|
42
|
+
button(t, e) {
|
|
43
|
+
const i = document.createElement("button");
|
|
44
|
+
return i.type = "button", i.className = t, i.addEventListener("click", e), i;
|
|
45
|
+
}
|
|
46
|
+
sourceLabel(t) {
|
|
47
|
+
const e = this.ctx.i18n;
|
|
48
|
+
return { media: e.debugSourceMedia, stream: e.debugSourceStream, ads: e.debugSourceAds, subtitles: e.debugSourceSubtitles, player: e.debugSourcePlayer }[t];
|
|
49
|
+
}
|
|
50
|
+
render() {
|
|
51
|
+
const t = this.ctx.log.entries;
|
|
52
|
+
this.countEl.textContent = t.length ? String(t.length) : "", this.emptyEl.hidden = t.length > 0, this.clearBtn.disabled = t.length === 0, this.copyBtn.disabled = t.length === 0, this.list.replaceChildren(...[...t].reverse().map((e) => this.row(e)));
|
|
53
|
+
}
|
|
54
|
+
row(t) {
|
|
55
|
+
const e = document.createElement("li");
|
|
56
|
+
e.className = "hp-debug-row", t.fatal && e.setAttribute("data-fatal", "");
|
|
57
|
+
const i = document.createElement("div");
|
|
58
|
+
i.className = "hp-debug-row-head";
|
|
59
|
+
const a = document.createElement("time");
|
|
60
|
+
a.className = "hp-debug-time";
|
|
61
|
+
const n = new Date(t.time);
|
|
62
|
+
a.textContent = `${n.toLocaleTimeString([], { hour12: !1 })}.${String(n.getMilliseconds()).padStart(3, "0")}`;
|
|
63
|
+
const c = document.createElement("span");
|
|
64
|
+
if (c.className = "hp-debug-source", c.setAttribute("data-source", t.source), c.textContent = this.sourceLabel(t.source), i.append(a, c), t.fatal) {
|
|
65
|
+
const s = document.createElement("span");
|
|
66
|
+
s.className = "hp-debug-fatal", s.textContent = this.ctx.i18n.debugFatal, i.appendChild(s);
|
|
67
|
+
}
|
|
68
|
+
const d = document.createElement("div");
|
|
69
|
+
if (d.className = "hp-debug-message", d.textContent = t.message, t.count && t.count > 1) {
|
|
70
|
+
const s = document.createElement("span");
|
|
71
|
+
s.className = "hp-debug-repeat", s.textContent = ` ×${t.count}`, d.appendChild(s);
|
|
72
|
+
}
|
|
73
|
+
e.append(i, d);
|
|
74
|
+
const r = Object.entries(t.details ?? {}).filter(([, s]) => s !== void 0 && s !== "");
|
|
75
|
+
if (r.length) {
|
|
76
|
+
const s = document.createElement("dl");
|
|
77
|
+
s.className = "hp-debug-details";
|
|
78
|
+
for (const [p, m] of r) {
|
|
79
|
+
const h = document.createElement("dt");
|
|
80
|
+
h.textContent = p;
|
|
81
|
+
const u = document.createElement("dd");
|
|
82
|
+
u.textContent = String(m), s.append(h, u);
|
|
83
|
+
}
|
|
84
|
+
e.appendChild(s);
|
|
85
|
+
}
|
|
86
|
+
return e;
|
|
87
|
+
}
|
|
88
|
+
async copy() {
|
|
89
|
+
const t = `HopeCorePlayer ${this.ctx.version} · ${navigator.userAgent}
|
|
90
|
+
${this.ctx.log.toText()}`;
|
|
91
|
+
try {
|
|
92
|
+
await navigator.clipboard.writeText(t);
|
|
93
|
+
} catch {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.copyBtn.textContent = this.ctx.i18n.debugCopied, this.copiedTimer && clearTimeout(this.copiedTimer), this.copiedTimer = setTimeout(() => {
|
|
97
|
+
this.copiedTimer = null, this.copyBtn.textContent = this.ctx.i18n.debugCopy;
|
|
98
|
+
}, 1500);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function f(l) {
|
|
102
|
+
return new x(l);
|
|
103
|
+
}
|
|
104
|
+
export {
|
|
105
|
+
x as DebugPanel,
|
|
106
|
+
f as installDebugPanel
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=index-DCXX1ZJG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DCXX1ZJG.js","sources":["../../src/plugins/debug/DebugPanel.ts","../../src/plugins/debug/index.ts"],"sourcesContent":["import type { HopeLocaleStrings } from '../../i18n/types';\nimport type { ErrorLog, PlayerLogEntry, PlayerLogSource } from '../../debug/ErrorLog';\n\nexport interface DebugPanelContext {\n containerEl: HTMLElement;\n i18n: HopeLocaleStrings;\n log: ErrorLog;\n version: string;\n}\n\nconst CLOSE_ICON =\n '<svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\"/></svg>';\n\n/**\n * Sağ tık menüsündeki \"Hata ayıklama\" — player'ın tüm hatalarını (medya, yayın, reklam, altyazı) zaman sırasıyla,\n * ayrıntılarıyla gösteren ve tüm player alanını kaplayan pencere. Uzun satırlar (URL'ler) kırılır, liste kendi içinde\n * kayar; yeni hata gelince açık pencere canlı güncellenir.\n */\nexport class DebugPanel {\n private readonly el: HTMLDivElement;\n private readonly titleEl: HTMLSpanElement;\n private readonly countEl: HTMLSpanElement;\n private readonly copyBtn: HTMLButtonElement;\n private readonly clearBtn: HTMLButtonElement;\n private readonly closeBtn: HTMLButtonElement;\n private readonly list: HTMLOListElement;\n private readonly emptyEl: HTMLParagraphElement;\n private copiedTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(private readonly ctx: DebugPanelContext) {\n this.el = document.createElement('div');\n this.el.className = 'hp-debug';\n this.el.setAttribute('part', 'debug-panel');\n this.el.setAttribute('role', 'dialog');\n // Odak pencerenin kendisinde (ESC ile kapanır) — butona odaklanınca ipucu kendiliğinden açılıyordu.\n this.el.tabIndex = -1;\n\n const header = document.createElement('div');\n header.className = 'hp-debug-header';\n const title = document.createElement('div');\n title.className = 'hp-debug-title';\n this.titleEl = document.createElement('span');\n this.countEl = document.createElement('span');\n this.countEl.className = 'hp-debug-count';\n title.append(this.titleEl, this.countEl);\n\n const actions = document.createElement('div');\n actions.className = 'hp-debug-actions';\n this.copyBtn = this.button('hp-debug-btn', () => void this.copy());\n this.clearBtn = this.button('hp-debug-btn', () => this.ctx.log.clear());\n this.closeBtn = this.button('hp-stats-close', () => this.hide());\n this.closeBtn.innerHTML = CLOSE_ICON;\n actions.append(this.copyBtn, this.clearBtn, this.closeBtn);\n header.append(title, actions);\n\n this.list = document.createElement('ol');\n this.list.className = 'hp-debug-list';\n this.emptyEl = document.createElement('p');\n this.emptyEl.className = 'hp-debug-empty';\n\n this.el.append(header, this.list, this.emptyEl);\n // Panel tıklamaları / kaydırma videoyu oynat-duraklat yapmasın, klavye kısayolları tetiklenmesin.\n this.el.addEventListener('pointerdown', (e) => e.stopPropagation());\n this.el.addEventListener('click', (e) => e.stopPropagation());\n this.el.addEventListener('dblclick', (e) => e.stopPropagation());\n this.el.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') this.hide();\n e.stopPropagation();\n });\n this.refreshLabels();\n }\n\n get isVisible(): boolean {\n return this.el.isConnected;\n }\n\n show(): void {\n if (!this.isVisible) this.ctx.containerEl.appendChild(this.el);\n this.ctx.log.onChange = () => this.render();\n this.render();\n this.el.focus({ preventScroll: true });\n }\n\n hide(): void {\n if (this.ctx.log.onChange) this.ctx.log.onChange = null;\n this.el.remove();\n }\n\n refreshLabels(): void {\n const t = this.ctx.i18n;\n this.titleEl.textContent = t.debugTitle;\n this.copyBtn.textContent = t.debugCopy;\n this.clearBtn.textContent = t.debugClear;\n this.closeBtn.setAttribute('aria-label', t.debugClose);\n this.emptyEl.textContent = t.debugEmpty;\n if (this.isVisible) this.render();\n }\n\n destroy(): void {\n if (this.copiedTimer) clearTimeout(this.copiedTimer);\n this.hide();\n }\n\n private button(className: string, onClick: () => void): HTMLButtonElement {\n const btn = document.createElement('button');\n btn.type = 'button';\n btn.className = className;\n btn.addEventListener('click', onClick);\n return btn;\n }\n\n private sourceLabel(source: PlayerLogSource): string {\n const t = this.ctx.i18n;\n return { media: t.debugSourceMedia, stream: t.debugSourceStream, ads: t.debugSourceAds, subtitles: t.debugSourceSubtitles, player: t.debugSourcePlayer }[source];\n }\n\n private render(): void {\n const entries = this.ctx.log.entries;\n this.countEl.textContent = entries.length ? String(entries.length) : '';\n this.emptyEl.hidden = entries.length > 0;\n this.clearBtn.disabled = entries.length === 0;\n this.copyBtn.disabled = entries.length === 0;\n // En yeni en üstte.\n this.list.replaceChildren(...[...entries].reverse().map((e) => this.row(e)));\n }\n\n private row(entry: PlayerLogEntry): HTMLLIElement {\n const li = document.createElement('li');\n li.className = 'hp-debug-row';\n if (entry.fatal) li.setAttribute('data-fatal', '');\n\n const head = document.createElement('div');\n head.className = 'hp-debug-row-head';\n const time = document.createElement('time');\n time.className = 'hp-debug-time';\n const d = new Date(entry.time);\n time.textContent = `${d.toLocaleTimeString([], { hour12: false })}.${String(d.getMilliseconds()).padStart(3, '0')}`;\n const source = document.createElement('span');\n source.className = 'hp-debug-source';\n source.setAttribute('data-source', entry.source);\n source.textContent = this.sourceLabel(entry.source);\n head.append(time, source);\n if (entry.fatal) {\n const fatal = document.createElement('span');\n fatal.className = 'hp-debug-fatal';\n fatal.textContent = this.ctx.i18n.debugFatal;\n head.appendChild(fatal);\n }\n\n const message = document.createElement('div');\n message.className = 'hp-debug-message';\n message.textContent = entry.message;\n if (entry.count && entry.count > 1) {\n const repeat = document.createElement('span');\n repeat.className = 'hp-debug-repeat';\n repeat.textContent = ` ×${entry.count}`;\n message.appendChild(repeat);\n }\n li.append(head, message);\n\n const details = Object.entries(entry.details ?? {}).filter(([, v]) => v !== undefined && v !== '');\n if (details.length) {\n const dl = document.createElement('dl');\n dl.className = 'hp-debug-details';\n for (const [k, v] of details) {\n const dt = document.createElement('dt');\n dt.textContent = k;\n const dd = document.createElement('dd');\n dd.textContent = String(v);\n dl.append(dt, dd);\n }\n li.appendChild(dl);\n }\n return li;\n }\n\n private async copy(): Promise<void> {\n const text = `HopeCorePlayer ${this.ctx.version} · ${navigator.userAgent}\\n${this.ctx.log.toText()}`;\n try {\n await navigator.clipboard.writeText(text);\n } catch {\n return;\n }\n this.copyBtn.textContent = this.ctx.i18n.debugCopied;\n if (this.copiedTimer) clearTimeout(this.copiedTimer);\n this.copiedTimer = setTimeout(() => {\n this.copiedTimer = null;\n this.copyBtn.textContent = this.ctx.i18n.debugCopy;\n }, 1500);\n }\n}\n","import { DebugPanel, type DebugPanelContext } from './DebugPanel';\n\nexport function installDebugPanel(ctx: DebugPanelContext): DebugPanel {\n return new DebugPanel(ctx);\n}\n\nexport { DebugPanel };\nexport type { DebugPanelContext };\n"],"names":["CLOSE_ICON","DebugPanel","ctx","__publicField","header","title","actions","e","className","onClick","btn","source","t","entries","entry","li","head","time","d","fatal","message","repeat","details","v","dl","k","dt","dd","text","installDebugPanel"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var E = Object.defineProperty;
|
|
2
2
|
var y = (a, t, e) => t in a ? E(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e;
|
|
3
3
|
var l = (a, t, e) => y(a, typeof t != "symbol" ? t + "" : t, e);
|
|
4
|
-
import { f as x } from "./index-
|
|
4
|
+
import { f as x } from "./index-01P9jpUY.js";
|
|
5
5
|
const w = 8, f = /%(0(\d+))?d/;
|
|
6
6
|
class M {
|
|
7
7
|
constructor(t, e) {
|
|
@@ -222,4 +222,4 @@ export {
|
|
|
222
222
|
M as SpriteThumbnails,
|
|
223
223
|
I as installSpriteThumbnails
|
|
224
224
|
};
|
|
225
|
-
//# sourceMappingURL=index-
|
|
225
|
+
//# sourceMappingURL=index-n-1IIClr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-DGSYKljQ.js","sources":["../../src/plugins/sprite-thumbnails/SpriteThumbnails.ts","../../src/plugins/sprite-thumbnails/index.ts"],"sourcesContent":["import type { SpriteThumbnailsOptions } from '../../types';\nimport { formatTime } from '../../utils/format-time';\n\nexport interface SpriteThumbnailsPlayerContext {\n videoEl: HTMLVideoElement;\n /** Önizlemenin bağlandığı seek bar — zaman eşlemesi (chapter boşlukları dahil) onun `ratioAtClientX`'inden. */\n seekBar: {\n readonly el: HTMLElement;\n ratioAtClientX(clientX: number): number;\n suppressHoverTime(key: string, suppressed: boolean): void;\n };\n /** Responsive ölçekleme için referans genişlik — genelde player/video alanının genişliği. */\n playerWidth(): number;\n}\n\n/** Bir önizleme karesi: hangi görselin hangi dikdörtgeni. */\ninterface Frame {\n url: string;\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\ninterface Sheet {\n img: HTMLImageElement;\n ready: boolean;\n failed: boolean;\n promise: Promise<void>;\n}\n\nexport interface VttCue {\n start: number;\n end: number;\n url: string;\n /** `#xywh` yoksa null → görselin tamamı. */\n rect: { x: number; y: number; w: number; h: number } | null;\n}\n\n/** Aynı anda bellekte (decode edilmiş) tutulan en fazla sheet — uzun videolarda bellek sınırsız büyümesin. */\nconst MAX_CACHED_SHEETS = 8;\n/** Sheet numarası şablonu: `%d` ya da sıfır dolgulu `%03d`. */\nconst SHEET_TEMPLATE = /%(0(\\d+))?d/;\n\n/**\n * Seek bar hover önizlemesi. Kaynak: tek görsel, çok parçalı (%d / %03d şablonu ya da sheets) veya WebVTT (#xywh).\n * sheetDuration verilmezse ilk sheet'in ızgarasından hesaplanır. Kurulumda hiçbir şey indirilmez; yalnızca imlecin\n * altındaki sheet + komşuları yüklenir, decode bitmeden gösterilmez, LRU cache.\n */\nexport class SpriteThumbnails {\n private readonly tooltip: HTMLElement;\n private readonly imageEl: HTMLElement;\n private readonly timeEl: HTMLElement;\n private readonly sheets = new Map<string, Sheet>();\n private vttCues: VttCue[] | null = null;\n private vttLoading: Promise<void> | null = null;\n /** Çok parçalı modda otomatik hesaplanan sheet süresi (ilk sheet yüklenince). */\n private derivedSheetDuration: number | null = null;\n private warmed = false;\n private hovering = false;\n private lastClientX = 0;\n private rafId: number | null = null;\n private destroyed = false;\n\n constructor(\n private readonly ctx: SpriteThumbnailsPlayerContext,\n private readonly options: SpriteThumbnailsOptions\n ) {\n this.tooltip = document.createElement('div');\n this.tooltip.setAttribute('part', 'sprite-tooltip');\n this.tooltip.className = 'hp-sprite-tooltip';\n this.imageEl = document.createElement('div');\n this.imageEl.className = 'hp-sprite-image';\n this.timeEl = document.createElement('div');\n this.timeEl.className = 'hp-sprite-time';\n this.tooltip.append(this.imageEl, this.timeEl);\n ctx.seekBar.el.appendChild(this.tooltip);\n // Önizlemenin altında zaman zaten yazıyor — varsayılan hover zamanı ikinci kez göstermesin.\n ctx.seekBar.suppressHoverTime('sprite', true);\n\n ctx.seekBar.el.addEventListener('pointerenter', this.onPointerEnter);\n ctx.seekBar.el.addEventListener('pointermove', this.onPointerMove);\n ctx.seekBar.el.addEventListener('pointerleave', this.onPointerLeave);\n ctx.videoEl.addEventListener('play', this.warm);\n }\n\n destroy(): void {\n this.destroyed = true;\n if (this.rafId !== null) cancelAnimationFrame(this.rafId);\n this.ctx.seekBar.el.removeEventListener('pointerenter', this.onPointerEnter);\n this.ctx.seekBar.el.removeEventListener('pointermove', this.onPointerMove);\n this.ctx.seekBar.el.removeEventListener('pointerleave', this.onPointerLeave);\n this.ctx.videoEl.removeEventListener('play', this.warm);\n this.tooltip.remove();\n this.ctx.seekBar.suppressHoverTime('sprite', false);\n for (const sheet of this.sheets.values()) sheet.img.src = '';\n this.sheets.clear();\n }\n\n // ── olaylar ──\n\n private readonly onPointerEnter = (e: PointerEvent): void => {\n this.hovering = true;\n this.lastClientX = e.clientX;\n this.warm();\n this.scheduleRender();\n };\n\n private readonly onPointerMove = (e: PointerEvent): void => {\n this.hovering = true;\n this.lastClientX = e.clientX;\n this.scheduleRender();\n };\n\n private readonly onPointerLeave = (): void => {\n this.hovering = false;\n this.tooltip.removeAttribute('data-visible');\n };\n\n /** İlk ihtiyaç anında (hover / oynatma) kaynağı hazırla — kurulumda hiçbir şey indirilmiyor. */\n private readonly warm = (): void => {\n if (this.warmed || this.destroyed) return;\n this.warmed = true;\n if (this.options.vtt) {\n void this.loadVtt();\n return;\n }\n const duration = this.ctx.videoEl.duration;\n const t = Number.isFinite(duration) ? this.ctx.videoEl.currentTime : 0;\n // Şablonlu/çok parçalı modda sheet süresi henüz bilinmiyorsa ilk sheet'ten öğrenilecek.\n void this.ensureSheet(this.sheetUrl(this.isMultiSheet() && this.sheetDuration() === null ? 0 : this.sheetIndexAt(t)));\n };\n\n private scheduleRender(): void {\n if (this.rafId !== null) return;\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n this.render();\n });\n }\n\n // ── çizim ──\n\n private render(): void {\n if (!this.hovering || this.destroyed) return;\n const duration = this.ctx.videoEl.duration;\n if (!Number.isFinite(duration) || duration <= 0) return;\n\n const seconds = this.ctx.seekBar.ratioAtClientX(this.lastClientX) * duration;\n this.timeEl.textContent = formatTime(seconds);\n\n const frame = this.isNetworkEligible() ? this.frameAt(seconds, duration) : null;\n const scale = this.scale();\n if (frame) {\n const sheet = this.sheets.get(frame.url)!;\n const { naturalWidth, naturalHeight } = sheet.img;\n this.imageEl.style.display = '';\n this.imageEl.style.width = `${frame.w * scale}px`;\n this.imageEl.style.height = `${frame.h * scale}px`;\n this.imageEl.style.backgroundImage = `url(\"${frame.url}\")`;\n this.imageEl.style.backgroundSize = `${naturalWidth * scale}px ${naturalHeight * scale}px`;\n this.imageEl.style.backgroundPosition = `${-frame.x * scale}px ${-frame.y * scale}px`;\n } else if (!this.imageEl.style.backgroundImage) {\n // Henüz hiçbir kare yüklenmedi — yalnızca zaman (yükleme bitince yeniden çizilir).\n this.imageEl.style.display = 'none';\n }\n\n // Kenarlarda taşmasın: imleci ortala ama seek bar sınırlarında kal.\n this.tooltip.setAttribute('data-visible', '');\n const barRect = this.ctx.seekBar.el.getBoundingClientRect();\n const tipWidth = this.tooltip.offsetWidth;\n const x = Math.min(Math.max(this.lastClientX - barRect.left - tipWidth / 2, 0), Math.max(barRect.width - tipWidth, 0));\n this.tooltip.style.transform = `translateX(${x}px)`;\n }\n\n private scale(): number {\n const responsive = this.options.responsive;\n const playerWidth = this.ctx.playerWidth();\n return responsive && playerWidth && playerWidth < responsive ? playerWidth / responsive : 1;\n }\n\n private isNetworkEligible(): boolean {\n const nav = navigator as Navigator & { connection?: { downlink?: number } };\n const downlink = nav.connection?.downlink;\n const anyReady = Array.from(this.sheets.values()).some((s) => s.ready);\n return downlink === undefined || downlink >= (this.options.downlink ?? 2) || anyReady;\n }\n\n // ── kare çözümleme ──\n\n /** Saniyedeki kareyi döner; gereken sheet hazır değilse yüklemeyi başlatıp null döner (yüklenince render tekrar çağrılır). */\n private frameAt(seconds: number, duration: number): Frame | null {\n return this.options.vtt ? this.vttFrameAt(seconds) : this.gridFrameAt(seconds, duration);\n }\n\n private isMultiSheet(): boolean {\n return !!this.options.sheets?.length || SHEET_TEMPLATE.test(this.options.url ?? '');\n }\n\n /** Tek sheet → Infinity (tüm video); çok parçalı → verilen ya da ilk sheet'ten hesaplanan süre; henüz bilinmiyorsa null. */\n private sheetDuration(): number | null {\n if (!this.isMultiSheet()) return Infinity;\n return this.options.sheetDuration ?? this.derivedSheetDuration;\n }\n\n private sheetIndexAt(seconds: number): number {\n const d = this.sheetDuration();\n if (d === null || d === Infinity) return 0;\n // floor (ceil DEĞİL): tam sınırda (ör. 60. sn) bir SONRAKİ sheet'in ilk karesi.\n let index = Math.floor(Math.max(0, seconds) / d);\n if (this.options.sheets?.length) index = Math.min(index, this.options.sheets.length - 1);\n return index;\n }\n\n /** 0 tabanlı sheet index'inden URL. */\n private sheetUrl(index: number): string {\n if (this.options.sheets?.length) return this.options.sheets[Math.min(index, this.options.sheets.length - 1)]!;\n const url = this.options.url ?? '';\n const number = index + (this.options.firstSheetIndex ?? 1);\n return url.replace(SHEET_TEMPLATE, (_m, _p, width?: string) => String(number).padStart(width ? Number(width) : 0, '0'));\n }\n\n private gridFrameAt(seconds: number, duration: number): Frame | null {\n const { width, height } = this.options;\n if (!width || !height) return null;\n const interval = this.options.interval || 1;\n\n const sheetDuration = this.sheetDuration();\n if (sheetDuration === null) {\n // Çok parçalı ama süre bilinmiyor — ilk sheet yüklenince hesaplanacak.\n void this.ensureSheet(this.sheetUrl(0));\n return null;\n }\n\n const lastIndex = sheetDuration === Infinity ? 0 : this.sheetIndexAt(Math.max(0, duration - 0.001));\n const index = Math.min(this.sheetIndexAt(seconds), lastIndex);\n const url = this.sheetUrl(index);\n this.preloadAround(index, lastIndex);\n\n const sheet = this.sheets.get(url);\n if (!sheet?.ready) {\n void this.ensureSheet(url);\n return null;\n }\n this.touch(url);\n\n // Her sheet'in KENDİ boyutu (son sheet daha kısa olabilir).\n const columns = Math.max(1, Math.floor(sheet.img.naturalWidth / width));\n const rows = Math.max(1, Math.floor(sheet.img.naturalHeight / height));\n const local = sheetDuration === Infinity ? seconds : seconds - index * sheetDuration;\n const frameIndex = Math.min(Math.max(0, Math.floor(local / interval)), columns * rows - 1);\n return { url, x: (frameIndex % columns) * width, y: Math.floor(frameIndex / columns) * height, w: width, h: height };\n }\n\n private preloadAround(index: number, lastIndex: number): void {\n const n = this.options.preloadSheets ?? 1;\n for (let d = 1; d <= n; d++) {\n if (index + d <= lastIndex) void this.ensureSheet(this.sheetUrl(index + d));\n if (index - d >= 0) void this.ensureSheet(this.sheetUrl(index - d));\n }\n }\n\n private vttFrameAt(seconds: number): Frame | null {\n if (!this.vttCues) {\n void this.loadVtt();\n return null;\n }\n const cues = this.vttCues;\n if (!cues.length) return null;\n // İkili arama — saatlerce süren videolarda binlerce cue olabilir.\n let lo = 0;\n let hi = cues.length - 1;\n while (lo < hi) {\n const mid = (lo + hi + 1) >> 1;\n if (cues[mid]!.start <= seconds) lo = mid;\n else hi = mid - 1;\n }\n const cue = cues[lo]!;\n const neighbours = [cues[lo + 1], cues[lo - 1]].filter((c): c is VttCue => !!c && c.url !== cue.url);\n neighbours.forEach((c) => void this.ensureSheet(c.url));\n\n const sheet = this.sheets.get(cue.url);\n if (!sheet?.ready) {\n void this.ensureSheet(cue.url);\n return null;\n }\n this.touch(cue.url);\n const rect = cue.rect ?? { x: 0, y: 0, w: sheet.img.naturalWidth, h: sheet.img.naturalHeight };\n return { url: cue.url, ...rect };\n }\n\n // ── yükleme / cache ──\n\n private ensureSheet(url: string): Promise<void> {\n if (!url) return Promise.resolve();\n const existing = this.sheets.get(url);\n if (existing) return existing.promise;\n\n const img = new Image();\n img.decoding = 'async';\n const sheet: Sheet = { img, ready: false, failed: false, promise: Promise.resolve() };\n sheet.promise = new Promise<void>((resolve) => {\n img.onload = () => {\n // decode() bitmeden gösterme — yeni sheet'e geçerken boş/yanlış kare titremesi olmasın.\n const done = () => {\n if (this.destroyed) return resolve();\n sheet.ready = true;\n this.learnSheetDuration(img);\n if (this.hovering) this.scheduleRender();\n resolve();\n };\n img.decode ? img.decode().then(done, done) : done();\n };\n img.onerror = () => {\n sheet.failed = true;\n resolve();\n };\n });\n img.src = url;\n this.sheets.set(url, sheet);\n this.evict();\n return sheet.promise;\n }\n\n /** Çok parçalı modda `sheetDuration` verilmediyse ilk yüklenen sheet'in ızgara kapasitesinden hesapla. */\n private learnSheetDuration(img: HTMLImageElement): void {\n if (this.derivedSheetDuration !== null || this.options.vtt || !this.isMultiSheet() || this.options.sheetDuration) return;\n const { width, height } = this.options;\n if (!width || !height) return;\n const capacity = Math.max(1, Math.floor(img.naturalWidth / width)) * Math.max(1, Math.floor(img.naturalHeight / height));\n this.derivedSheetDuration = capacity * (this.options.interval || 1);\n }\n\n /** LRU: kullanılan sheet'i sona taşı. */\n private touch(url: string): void {\n const sheet = this.sheets.get(url);\n if (!sheet) return;\n this.sheets.delete(url);\n this.sheets.set(url, sheet);\n }\n\n private evict(): void {\n while (this.sheets.size > MAX_CACHED_SHEETS) {\n const oldest = this.sheets.keys().next().value as string;\n const sheet = this.sheets.get(oldest)!;\n sheet.img.onload = null;\n sheet.img.onerror = null;\n this.sheets.delete(oldest);\n }\n }\n\n private loadVtt(): Promise<void> {\n if (this.vttLoading) return this.vttLoading;\n const vttUrl = this.options.vtt!;\n this.vttLoading = fetch(vttUrl)\n .then((r) => {\n if (!r.ok) throw new Error(`HTTP ${r.status}`);\n return r.text();\n })\n .then((text) => {\n if (this.destroyed) return;\n this.vttCues = parseThumbnailVtt(text, new URL(vttUrl, document.baseURI).href);\n if (this.vttCues.length) void this.ensureSheet(this.vttCues[0]!.url);\n if (this.hovering) this.scheduleRender();\n })\n .catch((err) => {\n console.warn('[HopePlayer sprite-thumbnails] VTT yüklenemedi:', err);\n this.vttCues = [];\n });\n return this.vttLoading;\n }\n}\n\n/** \"01:02:03.500\" / \"02:03.500\" → saniye. */\nfunction parseVttTime(value: string): number {\n const parts = value.trim().split(':').map(Number);\n return parts.reduce((acc, n) => acc * 60 + n, 0);\n}\n\n/** WebVTT thumbnail dosyası → sıralı cue listesi. Görsel yolları VTT dosyasına göre çözümlenir. */\nexport function parseThumbnailVtt(text: string, baseUrl: string): VttCue[] {\n const cues: VttCue[] = [];\n const blocks = text.replace(/\\r/g, '').split(/\\n\\n+/);\n for (const block of blocks) {\n const lines = block.split('\\n').filter(Boolean);\n const timingIndex = lines.findIndex((l) => l.includes('-->'));\n if (timingIndex === -1) continue;\n const [startStr, endStr] = lines[timingIndex]!.split('-->');\n const target = lines[timingIndex + 1]?.trim();\n if (!startStr || !endStr || !target) continue;\n\n const [path, hash] = target.split('#');\n const match = hash?.match(/xywh=(\\d+),(\\d+),(\\d+),(\\d+)/);\n cues.push({\n start: parseVttTime(startStr),\n end: parseVttTime(endStr.trim().split(/\\s+/)[0]!),\n url: new URL(path!, baseUrl).href,\n rect: match ? { x: +match[1]!, y: +match[2]!, w: +match[3]!, h: +match[4]! } : null,\n });\n }\n return cues.sort((a, b) => a.start - b.start);\n}\n","import { SpriteThumbnails, type SpriteThumbnailsPlayerContext } from './SpriteThumbnails';\nimport type { SpriteThumbnailsOptions } from '../../types';\n\nexport function installSpriteThumbnails(ctx: SpriteThumbnailsPlayerContext, options: SpriteThumbnailsOptions): SpriteThumbnails {\n return new SpriteThumbnails(ctx, options);\n}\n\nexport { SpriteThumbnails };\nexport type { SpriteThumbnailsPlayerContext };\n"],"names":["MAX_CACHED_SHEETS","SHEET_TEMPLATE","SpriteThumbnails","ctx","options","__publicField","e","duration","t","sheet","seconds","formatTime","frame","scale","naturalWidth","naturalHeight","barRect","tipWidth","x","responsive","playerWidth","downlink","_a","anyReady","s","d","index","url","number","_m","_p","width","height","interval","sheetDuration","lastIndex","columns","rows","local","frameIndex","n","cues","lo","hi","mid","cue","c","rect","existing","img","resolve","done","capacity","oldest","vttUrl","r","text","parseThumbnailVtt","err","parseVttTime","value","acc","baseUrl","blocks","block","lines","timingIndex","l","startStr","endStr","target","path","hash","match","a","b","installSpriteThumbnails"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-n-1IIClr.js","sources":["../../src/plugins/sprite-thumbnails/SpriteThumbnails.ts","../../src/plugins/sprite-thumbnails/index.ts"],"sourcesContent":["import type { SpriteThumbnailsOptions } from '../../types';\nimport { formatTime } from '../../utils/format-time';\n\nexport interface SpriteThumbnailsPlayerContext {\n videoEl: HTMLVideoElement;\n /** Önizlemenin bağlandığı seek bar — zaman eşlemesi (chapter boşlukları dahil) onun `ratioAtClientX`'inden. */\n seekBar: {\n readonly el: HTMLElement;\n ratioAtClientX(clientX: number): number;\n suppressHoverTime(key: string, suppressed: boolean): void;\n };\n /** Responsive ölçekleme için referans genişlik — genelde player/video alanının genişliği. */\n playerWidth(): number;\n}\n\n/** Bir önizleme karesi: hangi görselin hangi dikdörtgeni. */\ninterface Frame {\n url: string;\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\ninterface Sheet {\n img: HTMLImageElement;\n ready: boolean;\n failed: boolean;\n promise: Promise<void>;\n}\n\nexport interface VttCue {\n start: number;\n end: number;\n url: string;\n /** `#xywh` yoksa null → görselin tamamı. */\n rect: { x: number; y: number; w: number; h: number } | null;\n}\n\n/** Aynı anda bellekte (decode edilmiş) tutulan en fazla sheet — uzun videolarda bellek sınırsız büyümesin. */\nconst MAX_CACHED_SHEETS = 8;\n/** Sheet numarası şablonu: `%d` ya da sıfır dolgulu `%03d`. */\nconst SHEET_TEMPLATE = /%(0(\\d+))?d/;\n\n/**\n * Seek bar hover önizlemesi. Kaynak: tek görsel, çok parçalı (%d / %03d şablonu ya da sheets) veya WebVTT (#xywh).\n * sheetDuration verilmezse ilk sheet'in ızgarasından hesaplanır. Kurulumda hiçbir şey indirilmez; yalnızca imlecin\n * altındaki sheet + komşuları yüklenir, decode bitmeden gösterilmez, LRU cache.\n */\nexport class SpriteThumbnails {\n private readonly tooltip: HTMLElement;\n private readonly imageEl: HTMLElement;\n private readonly timeEl: HTMLElement;\n private readonly sheets = new Map<string, Sheet>();\n private vttCues: VttCue[] | null = null;\n private vttLoading: Promise<void> | null = null;\n /** Çok parçalı modda otomatik hesaplanan sheet süresi (ilk sheet yüklenince). */\n private derivedSheetDuration: number | null = null;\n private warmed = false;\n private hovering = false;\n private lastClientX = 0;\n private rafId: number | null = null;\n private destroyed = false;\n\n constructor(\n private readonly ctx: SpriteThumbnailsPlayerContext,\n private readonly options: SpriteThumbnailsOptions\n ) {\n this.tooltip = document.createElement('div');\n this.tooltip.setAttribute('part', 'sprite-tooltip');\n this.tooltip.className = 'hp-sprite-tooltip';\n this.imageEl = document.createElement('div');\n this.imageEl.className = 'hp-sprite-image';\n this.timeEl = document.createElement('div');\n this.timeEl.className = 'hp-sprite-time';\n this.tooltip.append(this.imageEl, this.timeEl);\n ctx.seekBar.el.appendChild(this.tooltip);\n // Önizlemenin altında zaman zaten yazıyor — varsayılan hover zamanı ikinci kez göstermesin.\n ctx.seekBar.suppressHoverTime('sprite', true);\n\n ctx.seekBar.el.addEventListener('pointerenter', this.onPointerEnter);\n ctx.seekBar.el.addEventListener('pointermove', this.onPointerMove);\n ctx.seekBar.el.addEventListener('pointerleave', this.onPointerLeave);\n ctx.videoEl.addEventListener('play', this.warm);\n }\n\n destroy(): void {\n this.destroyed = true;\n if (this.rafId !== null) cancelAnimationFrame(this.rafId);\n this.ctx.seekBar.el.removeEventListener('pointerenter', this.onPointerEnter);\n this.ctx.seekBar.el.removeEventListener('pointermove', this.onPointerMove);\n this.ctx.seekBar.el.removeEventListener('pointerleave', this.onPointerLeave);\n this.ctx.videoEl.removeEventListener('play', this.warm);\n this.tooltip.remove();\n this.ctx.seekBar.suppressHoverTime('sprite', false);\n for (const sheet of this.sheets.values()) sheet.img.src = '';\n this.sheets.clear();\n }\n\n // ── olaylar ──\n\n private readonly onPointerEnter = (e: PointerEvent): void => {\n this.hovering = true;\n this.lastClientX = e.clientX;\n this.warm();\n this.scheduleRender();\n };\n\n private readonly onPointerMove = (e: PointerEvent): void => {\n this.hovering = true;\n this.lastClientX = e.clientX;\n this.scheduleRender();\n };\n\n private readonly onPointerLeave = (): void => {\n this.hovering = false;\n this.tooltip.removeAttribute('data-visible');\n };\n\n /** İlk ihtiyaç anında (hover / oynatma) kaynağı hazırla — kurulumda hiçbir şey indirilmiyor. */\n private readonly warm = (): void => {\n if (this.warmed || this.destroyed) return;\n this.warmed = true;\n if (this.options.vtt) {\n void this.loadVtt();\n return;\n }\n const duration = this.ctx.videoEl.duration;\n const t = Number.isFinite(duration) ? this.ctx.videoEl.currentTime : 0;\n // Şablonlu/çok parçalı modda sheet süresi henüz bilinmiyorsa ilk sheet'ten öğrenilecek.\n void this.ensureSheet(this.sheetUrl(this.isMultiSheet() && this.sheetDuration() === null ? 0 : this.sheetIndexAt(t)));\n };\n\n private scheduleRender(): void {\n if (this.rafId !== null) return;\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n this.render();\n });\n }\n\n // ── çizim ──\n\n private render(): void {\n if (!this.hovering || this.destroyed) return;\n const duration = this.ctx.videoEl.duration;\n if (!Number.isFinite(duration) || duration <= 0) return;\n\n const seconds = this.ctx.seekBar.ratioAtClientX(this.lastClientX) * duration;\n this.timeEl.textContent = formatTime(seconds);\n\n const frame = this.isNetworkEligible() ? this.frameAt(seconds, duration) : null;\n const scale = this.scale();\n if (frame) {\n const sheet = this.sheets.get(frame.url)!;\n const { naturalWidth, naturalHeight } = sheet.img;\n this.imageEl.style.display = '';\n this.imageEl.style.width = `${frame.w * scale}px`;\n this.imageEl.style.height = `${frame.h * scale}px`;\n this.imageEl.style.backgroundImage = `url(\"${frame.url}\")`;\n this.imageEl.style.backgroundSize = `${naturalWidth * scale}px ${naturalHeight * scale}px`;\n this.imageEl.style.backgroundPosition = `${-frame.x * scale}px ${-frame.y * scale}px`;\n } else if (!this.imageEl.style.backgroundImage) {\n // Henüz hiçbir kare yüklenmedi — yalnızca zaman (yükleme bitince yeniden çizilir).\n this.imageEl.style.display = 'none';\n }\n\n // Kenarlarda taşmasın: imleci ortala ama seek bar sınırlarında kal.\n this.tooltip.setAttribute('data-visible', '');\n const barRect = this.ctx.seekBar.el.getBoundingClientRect();\n const tipWidth = this.tooltip.offsetWidth;\n const x = Math.min(Math.max(this.lastClientX - barRect.left - tipWidth / 2, 0), Math.max(barRect.width - tipWidth, 0));\n this.tooltip.style.transform = `translateX(${x}px)`;\n }\n\n private scale(): number {\n const responsive = this.options.responsive;\n const playerWidth = this.ctx.playerWidth();\n return responsive && playerWidth && playerWidth < responsive ? playerWidth / responsive : 1;\n }\n\n private isNetworkEligible(): boolean {\n const nav = navigator as Navigator & { connection?: { downlink?: number } };\n const downlink = nav.connection?.downlink;\n const anyReady = Array.from(this.sheets.values()).some((s) => s.ready);\n return downlink === undefined || downlink >= (this.options.downlink ?? 2) || anyReady;\n }\n\n // ── kare çözümleme ──\n\n /** Saniyedeki kareyi döner; gereken sheet hazır değilse yüklemeyi başlatıp null döner (yüklenince render tekrar çağrılır). */\n private frameAt(seconds: number, duration: number): Frame | null {\n return this.options.vtt ? this.vttFrameAt(seconds) : this.gridFrameAt(seconds, duration);\n }\n\n private isMultiSheet(): boolean {\n return !!this.options.sheets?.length || SHEET_TEMPLATE.test(this.options.url ?? '');\n }\n\n /** Tek sheet → Infinity (tüm video); çok parçalı → verilen ya da ilk sheet'ten hesaplanan süre; henüz bilinmiyorsa null. */\n private sheetDuration(): number | null {\n if (!this.isMultiSheet()) return Infinity;\n return this.options.sheetDuration ?? this.derivedSheetDuration;\n }\n\n private sheetIndexAt(seconds: number): number {\n const d = this.sheetDuration();\n if (d === null || d === Infinity) return 0;\n // floor (ceil DEĞİL): tam sınırda (ör. 60. sn) bir SONRAKİ sheet'in ilk karesi.\n let index = Math.floor(Math.max(0, seconds) / d);\n if (this.options.sheets?.length) index = Math.min(index, this.options.sheets.length - 1);\n return index;\n }\n\n /** 0 tabanlı sheet index'inden URL. */\n private sheetUrl(index: number): string {\n if (this.options.sheets?.length) return this.options.sheets[Math.min(index, this.options.sheets.length - 1)]!;\n const url = this.options.url ?? '';\n const number = index + (this.options.firstSheetIndex ?? 1);\n return url.replace(SHEET_TEMPLATE, (_m, _p, width?: string) => String(number).padStart(width ? Number(width) : 0, '0'));\n }\n\n private gridFrameAt(seconds: number, duration: number): Frame | null {\n const { width, height } = this.options;\n if (!width || !height) return null;\n const interval = this.options.interval || 1;\n\n const sheetDuration = this.sheetDuration();\n if (sheetDuration === null) {\n // Çok parçalı ama süre bilinmiyor — ilk sheet yüklenince hesaplanacak.\n void this.ensureSheet(this.sheetUrl(0));\n return null;\n }\n\n const lastIndex = sheetDuration === Infinity ? 0 : this.sheetIndexAt(Math.max(0, duration - 0.001));\n const index = Math.min(this.sheetIndexAt(seconds), lastIndex);\n const url = this.sheetUrl(index);\n this.preloadAround(index, lastIndex);\n\n const sheet = this.sheets.get(url);\n if (!sheet?.ready) {\n void this.ensureSheet(url);\n return null;\n }\n this.touch(url);\n\n // Her sheet'in KENDİ boyutu (son sheet daha kısa olabilir).\n const columns = Math.max(1, Math.floor(sheet.img.naturalWidth / width));\n const rows = Math.max(1, Math.floor(sheet.img.naturalHeight / height));\n const local = sheetDuration === Infinity ? seconds : seconds - index * sheetDuration;\n const frameIndex = Math.min(Math.max(0, Math.floor(local / interval)), columns * rows - 1);\n return { url, x: (frameIndex % columns) * width, y: Math.floor(frameIndex / columns) * height, w: width, h: height };\n }\n\n private preloadAround(index: number, lastIndex: number): void {\n const n = this.options.preloadSheets ?? 1;\n for (let d = 1; d <= n; d++) {\n if (index + d <= lastIndex) void this.ensureSheet(this.sheetUrl(index + d));\n if (index - d >= 0) void this.ensureSheet(this.sheetUrl(index - d));\n }\n }\n\n private vttFrameAt(seconds: number): Frame | null {\n if (!this.vttCues) {\n void this.loadVtt();\n return null;\n }\n const cues = this.vttCues;\n if (!cues.length) return null;\n // İkili arama — saatlerce süren videolarda binlerce cue olabilir.\n let lo = 0;\n let hi = cues.length - 1;\n while (lo < hi) {\n const mid = (lo + hi + 1) >> 1;\n if (cues[mid]!.start <= seconds) lo = mid;\n else hi = mid - 1;\n }\n const cue = cues[lo]!;\n const neighbours = [cues[lo + 1], cues[lo - 1]].filter((c): c is VttCue => !!c && c.url !== cue.url);\n neighbours.forEach((c) => void this.ensureSheet(c.url));\n\n const sheet = this.sheets.get(cue.url);\n if (!sheet?.ready) {\n void this.ensureSheet(cue.url);\n return null;\n }\n this.touch(cue.url);\n const rect = cue.rect ?? { x: 0, y: 0, w: sheet.img.naturalWidth, h: sheet.img.naturalHeight };\n return { url: cue.url, ...rect };\n }\n\n // ── yükleme / cache ──\n\n private ensureSheet(url: string): Promise<void> {\n if (!url) return Promise.resolve();\n const existing = this.sheets.get(url);\n if (existing) return existing.promise;\n\n const img = new Image();\n img.decoding = 'async';\n const sheet: Sheet = { img, ready: false, failed: false, promise: Promise.resolve() };\n sheet.promise = new Promise<void>((resolve) => {\n img.onload = () => {\n // decode() bitmeden gösterme — yeni sheet'e geçerken boş/yanlış kare titremesi olmasın.\n const done = () => {\n if (this.destroyed) return resolve();\n sheet.ready = true;\n this.learnSheetDuration(img);\n if (this.hovering) this.scheduleRender();\n resolve();\n };\n img.decode ? img.decode().then(done, done) : done();\n };\n img.onerror = () => {\n sheet.failed = true;\n resolve();\n };\n });\n img.src = url;\n this.sheets.set(url, sheet);\n this.evict();\n return sheet.promise;\n }\n\n /** Çok parçalı modda `sheetDuration` verilmediyse ilk yüklenen sheet'in ızgara kapasitesinden hesapla. */\n private learnSheetDuration(img: HTMLImageElement): void {\n if (this.derivedSheetDuration !== null || this.options.vtt || !this.isMultiSheet() || this.options.sheetDuration) return;\n const { width, height } = this.options;\n if (!width || !height) return;\n const capacity = Math.max(1, Math.floor(img.naturalWidth / width)) * Math.max(1, Math.floor(img.naturalHeight / height));\n this.derivedSheetDuration = capacity * (this.options.interval || 1);\n }\n\n /** LRU: kullanılan sheet'i sona taşı. */\n private touch(url: string): void {\n const sheet = this.sheets.get(url);\n if (!sheet) return;\n this.sheets.delete(url);\n this.sheets.set(url, sheet);\n }\n\n private evict(): void {\n while (this.sheets.size > MAX_CACHED_SHEETS) {\n const oldest = this.sheets.keys().next().value as string;\n const sheet = this.sheets.get(oldest)!;\n sheet.img.onload = null;\n sheet.img.onerror = null;\n this.sheets.delete(oldest);\n }\n }\n\n private loadVtt(): Promise<void> {\n if (this.vttLoading) return this.vttLoading;\n const vttUrl = this.options.vtt!;\n this.vttLoading = fetch(vttUrl)\n .then((r) => {\n if (!r.ok) throw new Error(`HTTP ${r.status}`);\n return r.text();\n })\n .then((text) => {\n if (this.destroyed) return;\n this.vttCues = parseThumbnailVtt(text, new URL(vttUrl, document.baseURI).href);\n if (this.vttCues.length) void this.ensureSheet(this.vttCues[0]!.url);\n if (this.hovering) this.scheduleRender();\n })\n .catch((err) => {\n console.warn('[HopePlayer sprite-thumbnails] VTT yüklenemedi:', err);\n this.vttCues = [];\n });\n return this.vttLoading;\n }\n}\n\n/** \"01:02:03.500\" / \"02:03.500\" → saniye. */\nfunction parseVttTime(value: string): number {\n const parts = value.trim().split(':').map(Number);\n return parts.reduce((acc, n) => acc * 60 + n, 0);\n}\n\n/** WebVTT thumbnail dosyası → sıralı cue listesi. Görsel yolları VTT dosyasına göre çözümlenir. */\nexport function parseThumbnailVtt(text: string, baseUrl: string): VttCue[] {\n const cues: VttCue[] = [];\n const blocks = text.replace(/\\r/g, '').split(/\\n\\n+/);\n for (const block of blocks) {\n const lines = block.split('\\n').filter(Boolean);\n const timingIndex = lines.findIndex((l) => l.includes('-->'));\n if (timingIndex === -1) continue;\n const [startStr, endStr] = lines[timingIndex]!.split('-->');\n const target = lines[timingIndex + 1]?.trim();\n if (!startStr || !endStr || !target) continue;\n\n const [path, hash] = target.split('#');\n const match = hash?.match(/xywh=(\\d+),(\\d+),(\\d+),(\\d+)/);\n cues.push({\n start: parseVttTime(startStr),\n end: parseVttTime(endStr.trim().split(/\\s+/)[0]!),\n url: new URL(path!, baseUrl).href,\n rect: match ? { x: +match[1]!, y: +match[2]!, w: +match[3]!, h: +match[4]! } : null,\n });\n }\n return cues.sort((a, b) => a.start - b.start);\n}\n","import { SpriteThumbnails, type SpriteThumbnailsPlayerContext } from './SpriteThumbnails';\nimport type { SpriteThumbnailsOptions } from '../../types';\n\nexport function installSpriteThumbnails(ctx: SpriteThumbnailsPlayerContext, options: SpriteThumbnailsOptions): SpriteThumbnails {\n return new SpriteThumbnails(ctx, options);\n}\n\nexport { SpriteThumbnails };\nexport type { SpriteThumbnailsPlayerContext };\n"],"names":["MAX_CACHED_SHEETS","SHEET_TEMPLATE","SpriteThumbnails","ctx","options","__publicField","e","duration","t","sheet","seconds","formatTime","frame","scale","naturalWidth","naturalHeight","barRect","tipWidth","x","responsive","playerWidth","downlink","_a","anyReady","s","d","index","url","number","_m","_p","width","height","interval","sheetDuration","lastIndex","columns","rows","local","frameIndex","n","cues","lo","hi","mid","cue","c","rect","existing","img","resolve","done","capacity","oldest","vttUrl","r","text","parseThumbnailVtt","err","parseVttTime","value","acc","baseUrl","blocks","block","lines","timingIndex","l","startStr","endStr","target","path","hash","match","a","b","installSpriteThumbnails"],"mappings":"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"}
|
|
@@ -13,6 +13,13 @@ export interface ControlBarCallbacks {
|
|
|
13
13
|
adVolume: VolumePanelAdHooks;
|
|
14
14
|
/** hls.js'in hedef canlı konumu (canlı ucun ~3 segment gerisi) — rozet "geride" kararı ve "canlıya dön" için. */
|
|
15
15
|
liveSyncPosition?(): number | null;
|
|
16
|
+
/**
|
|
17
|
+
* Oynat/duraklat butonu ve klavyeden önce sorulur — true dönerse tıklama orada işlenmiştir.
|
|
18
|
+
* Preroll beklenirken basılan "duraklat" beklemeyi iptal eder (video zaten duraklatılmış durumda).
|
|
19
|
+
*/
|
|
20
|
+
interceptTogglePlay?(): boolean;
|
|
21
|
+
/** Yükleme halkası (medya takılması ya da preroll beklemesi) açıldı / kapandı — kontroller bu sırada gizlenmesin. */
|
|
22
|
+
onLoadingChange?(loading: boolean): void;
|
|
16
23
|
}
|
|
17
24
|
/** Alt kontrol çubuğunu kurar; alt bileşenleri (SeekBar/VolumePanel/SettingsMenu) birleştirir. */
|
|
18
25
|
export declare class ControlBar {
|
|
@@ -32,11 +39,17 @@ export declare class ControlBar {
|
|
|
32
39
|
private seekingEnabled;
|
|
33
40
|
private readonly leftGroup;
|
|
34
41
|
private loadingTimer;
|
|
42
|
+
/** Halkayı açık tutan sebepler: 'media' (buffer bekleniyor) ve player'ın verdikleri (ör. 'preroll'). */
|
|
43
|
+
private readonly loadingReasons;
|
|
44
|
+
/** Preroll beklenirken video duraklatılmış olsa da kullanıcı oynatmak istedi — buton "duraklat" görünür. */
|
|
45
|
+
private pendingPlay;
|
|
35
46
|
/** Sarma butonuyla sarıldığında (sn, negatif = geri) — sarma bildirimi için. */
|
|
36
47
|
onSkip: ((delta: number) => void) | null;
|
|
37
48
|
private readonly fullscreenButton;
|
|
38
49
|
private readonly fullscreenIcon;
|
|
39
50
|
private readonly timeLabel;
|
|
51
|
+
/** Reklam sırasında süre etiketinin yerinde: "Reklam 2/3 · 0:12". */
|
|
52
|
+
private readonly adInfoEl;
|
|
40
53
|
private showRemaining;
|
|
41
54
|
/** Kompakt düzende (player < 480px) sağ grubun taşındığı üst bar; tam ekran altta kalır. */
|
|
42
55
|
readonly topEl: HTMLDivElement;
|
|
@@ -48,12 +61,16 @@ export declare class ControlBar {
|
|
|
48
61
|
private readonly liveBadge;
|
|
49
62
|
private readonly liveText;
|
|
50
63
|
private adMode;
|
|
64
|
+
/** Ses modu: tam ekran / PiP yok — dar düzende tam ekran kutusu da boş kalmasın. */
|
|
65
|
+
private audioMode;
|
|
51
66
|
private readonly callbacks;
|
|
52
67
|
private row;
|
|
53
68
|
private extraButtonAnchor;
|
|
54
69
|
constructor(video: HTMLVideoElement, playbackRates: number[], callbacks: ControlBarCallbacks, labels: HopeLocaleStrings);
|
|
55
70
|
/** Player genişliğine göre normal / kompakt (mobil) düzen arasında geçiş — yalnızca eşik geçilince DOM taşınır. */
|
|
56
71
|
private updateLayout;
|
|
72
|
+
/** Ses modu: görüntü olmadığı için tam ekran ve PiP butonları gizlenir. */
|
|
73
|
+
setAudioMode(on: boolean): void;
|
|
57
74
|
setFullscreenState(isFullscreen: boolean): void;
|
|
58
75
|
/** Dil sonradan değişince (`options.locale`/`labels`) statik (reaktif olarak yeniden render edilmeyen) etiketleri tazeler. */
|
|
59
76
|
/** Geri/ileri sarma butonları — `null` süre o butonu gizler. */
|
|
@@ -65,6 +82,15 @@ export declare class ControlBar {
|
|
|
65
82
|
refreshLabels(): void;
|
|
66
83
|
/** Reklam modu: seek bar, süre ve sağ grup gizlenir; oynat/duraklat + ses kalır. */
|
|
67
84
|
setAdMode(active: boolean): void;
|
|
85
|
+
/**
|
|
86
|
+
* Reklam geri sayımı + pod göstergesi ("Reklam 2/3 · 0:12"). `null` → gizle. Pod tek reklamsa yalnızca "Reklam · 0:12";
|
|
87
|
+
* kalan süre bilinmiyorsa (bazı VPAID reklamları) yalnızca etiket.
|
|
88
|
+
*/
|
|
89
|
+
setAdInfo(info: {
|
|
90
|
+
remaining: number;
|
|
91
|
+
position: number;
|
|
92
|
+
total: number;
|
|
93
|
+
} | null): void;
|
|
68
94
|
/** `AdsController`'ın IMA'nın KENDİ UI'ı üzerinden (ör. reklam video'suna tıklama) gelen PAUSED/RESUMED event'leri için — oynat/duraklat ikonunu tazeler. */
|
|
69
95
|
refreshAdPlayState(): void;
|
|
70
96
|
setQualities(options: SettingsQualityOption[], activeLabel: string): void;
|
|
@@ -84,6 +110,12 @@ export declare class ControlBar {
|
|
|
84
110
|
private togglePlay;
|
|
85
111
|
private togglePip;
|
|
86
112
|
private toggleFullscreen;
|
|
113
|
+
/** Preroll beklemesi: video duraklatılmış ama oynatma istendi — buton "duraklat" görünsün. */
|
|
114
|
+
setPendingPlay(pending: boolean): void;
|
|
115
|
+
/** Player'ın kendi bekleme durumları (ör. 'preroll') için yükleme halkası — medya takılmasından bağımsız. */
|
|
116
|
+
setLoading(reason: string, on: boolean): void;
|
|
117
|
+
get isLoading(): boolean;
|
|
118
|
+
private renderLoading;
|
|
87
119
|
private readonly renderPlayState;
|
|
88
120
|
/** Canlı uç (media-time) — seekable sonu; native HLS'te DVR'sız canlıda seekable boş kalabildiği için buffered sonu (bkz. LiveWallClock.isLive notu). */
|
|
89
121
|
private liveEdge;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlBar.d.ts","sourceRoot":"","sources":["../../src/controls/ControlBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,KAAK,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAItG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA4CvD,MAAM,WAAW,mBAAmB;IAChC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B,uGAAuG;IACvG,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,iHAAiH;IACjH,gBAAgB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ControlBar.d.ts","sourceRoot":"","sources":["../../src/controls/ControlBar.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,14 @@ export declare class SeekBar {
|
|
|
49
49
|
/** Track'i sıralı, 0→1'i kesintisiz kapsayan oran aralıklarına göre ayrı parçalara böler. */
|
|
50
50
|
setChapters(ranges: SeekBarChapterRange[]): HTMLDivElement[];
|
|
51
51
|
clearChapters(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Seek bar'ın DÜZEN genişliği (px). getBoundingClientRect() ata elementlerin CSS transform'undan etkilenir: player
|
|
54
|
+
* ölçekli bir giriş animasyonuyla (ör. scale(0.985)) gösterilirken ölçülürse genişlik küçük kalıyor, animasyon
|
|
55
|
+
* bitince düzen boyutu değişmediği için ResizeObserver tekrar tetiklenmiyor ve thumb dolu kısmın gerisinde kalıyordu.
|
|
56
|
+
*/
|
|
57
|
+
/** Ekran x koordinatının seek bar içindeki DÜZEN px'i (ata transform'u ölçekliyorsa ona göre düzeltilmiş). */
|
|
58
|
+
private layoutXAtClientX;
|
|
59
|
+
private layoutWidth;
|
|
52
60
|
private measureChapters;
|
|
53
61
|
private readonly onPointerDown;
|
|
54
62
|
private readonly onPointerMove;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeekBar.d.ts","sourceRoot":"","sources":["../../src/controls/SeekBar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAChC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,qBAAa,OAAO;IAChB,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAsB;IACtC,oIAAoI;IACpI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,KAAK,CAAuB;gBAExB,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB;IA0E9D,8GAA8G;IAC9G,gBAAgB,UAAS;IAEzB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAWhB,yGAAyG;IACzG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAMzD,OAAO,CAAC,QAAQ,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"SeekBar.d.ts","sourceRoot":"","sources":["../../src/controls/SeekBar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAChC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,qBAAa,OAAO;IAChB,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,QAAQ,CAAsB;IACtC,oIAAoI;IACpI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,KAAK,CAAuB;gBAExB,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB;IA0E9D,8GAA8G;IAC9G,gBAAgB,UAAS;IAEzB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAWhB,yGAAyG;IACzG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAMzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAwB1B;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG3B;IAEF,OAAO,CAAC,cAAc;IAItB,gKAAgK;IAChK,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAiBvC,qEAAqE;IACrE,OAAO,CAAC,QAAQ;IAQhB,6FAA6F;IAC7F,WAAW,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,cAAc,EAAE;IA+B5D,aAAa,IAAI,IAAI;IAQrB;;;;OAIG;IACH,8GAA8G;IAC9G,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAO5B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAK1B;IAEF,uGAAuG;IACvG,YAAY,SAAK;IACjB,sFAAsF;IACtF,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAExD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAaxB;IAEF,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAOxB;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAMvB;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CA4CrB;IAEF,iGAAiG;IACjG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,cAAc;IASzD,YAAY,IAAI,IAAI;IAKpB,aAAa,IAAI,IAAI;IAIrB,OAAO,IAAI,IAAI;CAclB"}
|
|
@@ -96,6 +96,9 @@ export declare class SettingsMenu {
|
|
|
96
96
|
private renderSpeed;
|
|
97
97
|
private renderQuality;
|
|
98
98
|
private renderCaptions;
|
|
99
|
+
/** Altyazı → Altyazı ayarları: boyut, arka plan / yazı rengi, konumu sıfırla — her satırda o anki değer. */
|
|
100
|
+
private renderCaptionSettings;
|
|
101
|
+
private backToCaptionSettings;
|
|
99
102
|
private renderCaptionsSize;
|
|
100
103
|
/** "Arka Plan Rengi" / "Yazı Rengi" — düz metin satırları yerine renkli swatch grid'i (YouTube'un kendi altyazı renk seçici deseni). */
|
|
101
104
|
private renderCaptionColorPanel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsMenu.d.ts","sourceRoot":"","sources":["../../src/controls/SettingsMenu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,uHAAuH;AACvH,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wGAAwG;AACxG,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,mBAAmB,EAAE,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,mBAAmB,EAAE,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,mBAAmB,EAAE,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,mBAAmB,EAAE,CAAC;CACzC;AAED,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"SettingsMenu.d.ts","sourceRoot":"","sources":["../../src/controls/SettingsMenu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,uHAAuH;AACvH,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wGAAwG;AACxG,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,mBAAmB,EAAE,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,mBAAmB,EAAE,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,mBAAmB,EAAE,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,mBAAmB,EAAE,CAAC;CACzC;AAED,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAqBD,qBAAa,YAAY;IACrB,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,IAAI,CAAS;IACrB,uFAAuF;IACvF,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAA4B;gBAEhC,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,iBAAiB;IAoCvF,YAAY,CAAC,OAAO,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAMzE,WAAW,CAAC,OAAO,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAMxE,+GAA+G;IAC/G,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMrC,qGAAqG;IACrG,oBAAoB,CAAC,UAAU,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI;IAaxE,0DAA0D;IAC1D,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAKzD,sFAAsF;IACtF,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI;IAM9C,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMpC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAShB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,+EAA+E;IAC/E,IAAI,SAAS,IAAI,OAAO,GAAG,IAAI,CAE9B;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAqB1B;IAEF,gGAAgG;IAChG,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,UAAU;IA6ClB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,cAAc;IA2BtB,4GAA4G;IAC5G,OAAO,CAAC,qBAAqB;IAwC7B,OAAO,CAAC,qBAAqB,CAG3B;IAEF,OAAO,CAAC,kBAAkB;IAe1B,wIAAwI;IACxI,OAAO,CAAC,uBAAuB;IA2B/B,wIAAwI;IACxI,aAAa,IAAI,IAAI;IAKrB,OAAO,IAAI,IAAI;CAIlB"}
|
|
@@ -38,8 +38,6 @@ export declare class VolumePanel {
|
|
|
38
38
|
refreshLabels(): void;
|
|
39
39
|
/** Reklam modu açılıp/kapanınca (`ControlBar.setAdMode`) görüntüyü hemen ad/içerik ses kaynağına göre tazeler — `volumechange` event'i beklemeden. */
|
|
40
40
|
refreshForAdMode(): void;
|
|
41
|
-
setIconColor(color: string): void;
|
|
42
|
-
setSliderFillColor(color: string): void;
|
|
43
41
|
destroy(): void;
|
|
44
42
|
}
|
|
45
43
|
//# sourceMappingURL=VolumePanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VolumePanel.d.ts","sourceRoot":"","sources":["../../src/controls/VolumePanel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvD,sGAAsG;AACtG,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,IAAI,IAAI,CAAC;CACtB;AAED,sDAAsD;AACtD,qBAAa,WAAW;IACpB,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,iIAAiI;IACjI,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA8C;gBAEnD,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB;IAkF3F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOtB;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAO3B;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAYtB;IAEF,yFAAyF;IACzF,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,QAAQ,CAAC,YAAY,CAQ3B;IAEF,mFAAmF;IACnF,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAMlC;IAEF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAElC;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAsB9B;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAcrB;IAEF,aAAa,IAAI,IAAI;IAKrB,sJAAsJ;IACtJ,gBAAgB,IAAI,IAAI;IAIxB,
|
|
1
|
+
{"version":3,"file":"VolumePanel.d.ts","sourceRoot":"","sources":["../../src/controls/VolumePanel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvD,sGAAsG;AACtG,MAAM,WAAW,kBAAkB;IAC/B,UAAU,IAAI,OAAO,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,IAAI,IAAI,CAAC;CACtB;AAED,sDAAsD;AACtD,qBAAa,WAAW;IACpB,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,iIAAiI;IACjI,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA8C;gBAEnD,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB;IAkF3F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOtB;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAO3B;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAYtB;IAEF,yFAAyF;IACzF,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,QAAQ,CAAC,YAAY,CAQ3B;IAEF,mFAAmF;IACnF,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAMlC;IAEF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAElC;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAKhC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAsB9B;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAcrB;IAEF,aAAa,IAAI,IAAI;IAKrB,sJAAsJ;IACtJ,gBAAgB,IAAI,IAAI;IAIxB,OAAO,IAAI,IAAI;CAYlB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Hata kaydının kaynağı — hata ayıklama ekranında etiket olarak görünür. */
|
|
2
|
+
export type PlayerLogSource = 'media' | 'stream' | 'ads' | 'subtitles' | 'player';
|
|
3
|
+
export interface PlayerLogEntry {
|
|
4
|
+
/** `Date.now()` */
|
|
5
|
+
time: number;
|
|
6
|
+
source: PlayerLogSource;
|
|
7
|
+
message: string;
|
|
8
|
+
/** Oynatmayı durduran (kurtarılamayan) hata. */
|
|
9
|
+
fatal?: boolean;
|
|
10
|
+
/** Teknik ayrıntılar (hata kodu, URL, HTTP durumu…) — tanımsız değerler gösterilmez. */
|
|
11
|
+
details?: Record<string, string | number | boolean | undefined>;
|
|
12
|
+
/** Aynı hata kısa sürede tekrarlandıysa kaç kez (ör. hls.js buffer takılması) — tek satırda "×3". */
|
|
13
|
+
count?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Player'ın tüm hatalarının (medya, yayın/hls.js, reklam, altyazı) anlık kaydı. Her zaman tutulur (birkaç yüz bayt);
|
|
17
|
+
* hata ayıklama ekranı ve sağ tık menüsündeki giriş yalnızca `options.debug` açıkken görünür.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ErrorLog {
|
|
20
|
+
private readonly list;
|
|
21
|
+
/** Kayıt eklenince / temizlenince (açık panel canlı güncellenir). */
|
|
22
|
+
onChange: (() => void) | null;
|
|
23
|
+
get entries(): readonly PlayerLogEntry[];
|
|
24
|
+
add(entry: Omit<PlayerLogEntry, 'time' | 'count'>): void;
|
|
25
|
+
clear(): void;
|
|
26
|
+
/** Destek ekibine yapıştırılabilir düz metin. */
|
|
27
|
+
toText(): string;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ErrorLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorLog.d.ts","sourceRoot":"","sources":["../../src/debug/ErrorLog.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,cAAc;IAC3B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAChE,qGAAqG;IACrG,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD;;;GAGG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,qEAAqE;IACrE,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAErC,IAAI,OAAO,IAAI,SAAS,cAAc,EAAE,CAEvC;IAED,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI;IAoBxD,KAAK,IAAI,IAAI;IAKb,iDAAiD;IACjD,MAAM,IAAI,MAAM;CAYnB"}
|
|
@@ -39,6 +39,15 @@ export interface SourceManagerCallbacks {
|
|
|
39
39
|
onCues(trackId: string, cues: VTTCue[]): void;
|
|
40
40
|
/** hls.js kurtarılamayan bir hata verdi (video.error oluşmaz) — `network` = yayın/segment indirilemiyor, `media` = çözümlenemiyor. */
|
|
41
41
|
onFatalError(kind: 'network' | 'media'): void;
|
|
42
|
+
/** hls.js'in her hatası (kurtarılanlar dahil) — hata ayıklama kaydı için. */
|
|
43
|
+
onStreamError?(info: {
|
|
44
|
+
type: string;
|
|
45
|
+
details: string;
|
|
46
|
+
fatal: boolean;
|
|
47
|
+
url?: string;
|
|
48
|
+
httpStatus?: number;
|
|
49
|
+
reason?: string;
|
|
50
|
+
}): void;
|
|
42
51
|
}
|
|
43
52
|
export declare class SourceManager {
|
|
44
53
|
private readonly callbacks;
|
|
@@ -56,6 +65,8 @@ export declare class SourceManager {
|
|
|
56
65
|
constructor(video: HTMLVideoElement, callbacks: SourceManagerCallbacks);
|
|
57
66
|
/** `options.hls` — sonraki `load()`'da uygulanır. */
|
|
58
67
|
configure(options: HopeHlsOptions | undefined): void;
|
|
68
|
+
/** Bu kaynak zaten yüklü ve hatasız mı — aynı kaynak için yeniden yükleme (başa sarma) gerekmez. */
|
|
69
|
+
isLoaded(src: string, type?: string): boolean;
|
|
59
70
|
load(src: string, type?: string): Promise<void>;
|
|
60
71
|
/** Şu anki oynatma yolu — docs demosu/entegratör teşhisi için (ör. CORS yüzünden native'e düşüldü mü). */
|
|
61
72
|
get engine(): PlaybackEngineInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceManager.d.ts","sourceRoot":"","sources":["../../src/hls/SourceManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,SAAS,GAAG,cAAc,QAAQ,CAAC,CAAC;AACzC,KAAK,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAItD,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC3C,6DAA6D;IAC7D,MAAM,CAAC,EAAE,cAAc,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC;CAClE;AAiDD,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC5B,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACnC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE,yDAAyD;IACzD,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5E,2GAA2G;IAC3G,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9C,sIAAsI;IACtI,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"SourceManager.d.ts","sourceRoot":"","sources":["../../src/hls/SourceManager.ts"],"names":[],"mappings":"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"}
|
package/dist/hope-player.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,eAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,eAAO,MAAM,EAAE,EAAE,iBAiGhB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/tr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,iHAAiH;AACjH,eAAO,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"tr.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/tr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,iHAAiH;AACjH,eAAO,MAAM,EAAE,EAAE,iBAiGhB,CAAC"}
|
package/dist/i18n/types.d.ts
CHANGED
|
@@ -27,6 +27,25 @@ export interface HopeLocaleStrings {
|
|
|
27
27
|
statsSpeedVolume: string;
|
|
28
28
|
statsSource: string;
|
|
29
29
|
statsVersion: string;
|
|
30
|
+
/** Sağ tık menüsü + hata ayıklama penceresi (options.debug). */
|
|
31
|
+
debugTitle: string;
|
|
32
|
+
debugClose: string;
|
|
33
|
+
debugCopy: string;
|
|
34
|
+
debugCopied: string;
|
|
35
|
+
debugClear: string;
|
|
36
|
+
debugEmpty: string;
|
|
37
|
+
debugFatal: string;
|
|
38
|
+
debugSourceMedia: string;
|
|
39
|
+
debugSourceStream: string;
|
|
40
|
+
debugSourceAds: string;
|
|
41
|
+
debugSourceSubtitles: string;
|
|
42
|
+
debugSourcePlayer: string;
|
|
43
|
+
/** Reklam sırasında toolbar'daki gösterge ("Reklam 2/3 · 0:12"). */
|
|
44
|
+
adLabel: string;
|
|
45
|
+
adReturnFullscreen: string;
|
|
46
|
+
adReturnPip: string;
|
|
47
|
+
audioVinyl: string;
|
|
48
|
+
captionSettings: string;
|
|
30
49
|
fullscreenEnter: string;
|
|
31
50
|
fullscreenExit: string;
|
|
32
51
|
playbackSpeed: string;
|
package/dist/i18n/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gGAAgG;IAChG,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qIAAqI;IACrI,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
|