@hopeplayer/core 1.0.18 → 1.2.0

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.
Files changed (60) hide show
  1. package/dist/HopePlayerElement.d.ts +6 -0
  2. package/dist/HopePlayerElement.d.ts.map +1 -1
  3. package/dist/chunks/accessibility-CehDBG3h.js +380 -0
  4. package/dist/chunks/accessibility-CehDBG3h.js.map +1 -0
  5. package/dist/chunks/{ads-MCG5a6eK.js → ads-CktoJVGs.js} +2 -2
  6. package/dist/chunks/{ads-MCG5a6eK.js.map → ads-CktoJVGs.js.map} +1 -1
  7. package/dist/chunks/{cast-bMrkGGuD.js → cast-BZTxmz1I.js} +2 -2
  8. package/dist/chunks/{cast-bMrkGGuD.js.map → cast-BZTxmz1I.js.map} +1 -1
  9. package/dist/chunks/history-l0ZxZypM.js +144 -0
  10. package/dist/chunks/history-l0ZxZypM.js.map +1 -0
  11. package/dist/chunks/hls-DAtZkTUi.js +45 -0
  12. package/dist/chunks/{hls-BOHE_fg_.js.map → hls-DAtZkTUi.js.map} +1 -1
  13. package/dist/chunks/hlsLight-CCe_8eOw.js +28 -0
  14. package/dist/chunks/hlsLight-CCe_8eOw.js.map +1 -0
  15. package/dist/chunks/{markers-BhMJLPqj.js → markers-DR-Mn8bS.js} +2 -2
  16. package/dist/chunks/{markers-BhMJLPqj.js.map → markers-DR-Mn8bS.js.map} +1 -1
  17. package/dist/chunks/{player-DW5iWvPs.js → player-808ZzJ0g.js} +624 -440
  18. package/dist/chunks/player-808ZzJ0g.js.map +1 -0
  19. package/dist/chunks/{playlist-DYGbJ5wz.js → playlist-ByQx2cIG.js} +2 -2
  20. package/dist/chunks/{playlist-DYGbJ5wz.js.map → playlist-ByQx2cIG.js.map} +1 -1
  21. package/dist/chunks/{redirectScreen-CSjrS8Kg.js → redirectScreen-B7r4DhSa.js} +2 -2
  22. package/dist/chunks/{redirectScreen-CSjrS8Kg.js.map → redirectScreen-B7r4DhSa.js.map} +1 -1
  23. package/dist/chunks/{rewardedUnlock-DZ_qPcDG.js → rewardedUnlock-DkGF7hx7.js} +2 -2
  24. package/dist/chunks/{rewardedUnlock-DZ_qPcDG.js.map → rewardedUnlock-DkGF7hx7.js.map} +1 -1
  25. package/dist/chunks/{segments-LsZPlbYi.js → segments-XxChNKnD.js} +2 -2
  26. package/dist/chunks/{segments-LsZPlbYi.js.map → segments-XxChNKnD.js.map} +1 -1
  27. package/dist/chunks/skipSegments-NlXGNFDp.js +122 -0
  28. package/dist/chunks/skipSegments-NlXGNFDp.js.map +1 -0
  29. package/dist/chunks/{spriteThumbnails-BQkEBRu-.js → spriteThumbnails-BX3p30Yh.js} +2 -2
  30. package/dist/chunks/{spriteThumbnails-BQkEBRu-.js.map → spriteThumbnails-BX3p30Yh.js.map} +1 -1
  31. package/dist/chunks/{story-H6f7gSoX.js → story-CAbY83_O.js} +2 -2
  32. package/dist/chunks/{story-H6f7gSoX.js.map → story-CAbY83_O.js.map} +1 -1
  33. package/dist/controls/SettingsMenu.d.ts +30 -0
  34. package/dist/controls/SettingsMenu.d.ts.map +1 -1
  35. package/dist/hls/SourceManager.d.ts +2 -0
  36. package/dist/hls/SourceManager.d.ts.map +1 -1
  37. package/dist/hope-player.js +1 -1
  38. package/dist/i18n/locales/en.d.ts.map +1 -1
  39. package/dist/i18n/locales/tr.d.ts.map +1 -1
  40. package/dist/i18n/types.d.ts +39 -0
  41. package/dist/i18n/types.d.ts.map +1 -1
  42. package/dist/plugins/accessibility/Accessibility.d.ts +75 -0
  43. package/dist/plugins/accessibility/Accessibility.d.ts.map +1 -0
  44. package/dist/plugins/accessibility/colorBlind.d.ts +6 -0
  45. package/dist/plugins/accessibility/colorBlind.d.ts.map +1 -0
  46. package/dist/plugins/accessibility/index.d.ts +6 -0
  47. package/dist/plugins/accessibility/index.d.ts.map +1 -0
  48. package/dist/plugins/history/PlaybackHistory.d.ts +51 -0
  49. package/dist/plugins/history/PlaybackHistory.d.ts.map +1 -0
  50. package/dist/plugins/history/index.d.ts +6 -0
  51. package/dist/plugins/history/index.d.ts.map +1 -0
  52. package/dist/plugins/skip-segments/SkipSegments.d.ts +40 -0
  53. package/dist/plugins/skip-segments/SkipSegments.d.ts.map +1 -0
  54. package/dist/plugins/skip-segments/index.d.ts +6 -0
  55. package/dist/plugins/skip-segments/index.d.ts.map +1 -0
  56. package/dist/types/index.d.ts +133 -0
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/package.json +1 -1
  59. package/dist/chunks/hls-BOHE_fg_.js +0 -24791
  60. package/dist/chunks/player-DW5iWvPs.js.map +0 -1
@@ -87,6 +87,12 @@ export declare class HopePlayerElement extends HTMLElement {
87
87
  private geoChecker;
88
88
  private redirectScreen;
89
89
  private redirectKey;
90
+ private skipSegments;
91
+ private skipSegmentsKey;
92
+ private accessibility;
93
+ private accessibilityKey;
94
+ private playbackHistory;
95
+ private historyKey;
90
96
  private qrResume;
91
97
  private pauseAd;
92
98
  private adTriggers;
@@ -1 +1 @@
1
- {"version":3,"file":"HopePlayerElement.d.ts","sourceRoot":"","sources":["../src/HopePlayerElement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HopePlayerElement.d.ts","sourceRoot":"","sources":["../src/HopePlayerElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,380 @@
1
+ var A = Object.defineProperty;
2
+ var k = (n, t, e) => t in n ? A(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
+ var a = (n, t, e) => k(n, typeof t != "symbol" ? t + "" : t, e);
4
+ const C = {
5
+ protanopia: [0.567, 0.433, 0, 0.558, 0.442, 0, 0, 0.242, 0.758],
6
+ deuteranopia: [0.625, 0.375, 0, 0.7, 0.3, 0, 0, 0.3, 0.7],
7
+ tritanopia: [0.95, 0.05, 0, 0, 0.433, 0.567, 0, 0.475, 0.525]
8
+ }, M = {
9
+ protanopia: [0, 0, 0, 0.7, 1, 0, 0.7, 0, 1],
10
+ deuteranopia: [0, 0, 0, 0.7, 1, 0, 0.7, 0, 1],
11
+ tritanopia: [1, 0, 0.7, 0, 1, 0.7, 0, 0, 0]
12
+ }, E = [1, 0, 0, 0, 1, 0, 0, 0, 1];
13
+ function D(n, t) {
14
+ const e = new Array(9);
15
+ for (let s = 0; s < 3; s++) for (let o = 0; o < 3; o++) e[s * 3 + o] = n[s * 3] * t[o] + n[s * 3 + 1] * t[3 + o] + n[s * 3 + 2] * t[6 + o];
16
+ return e;
17
+ }
18
+ function O(n) {
19
+ const t = C[n], e = E.map((o, i) => o - t[i]), s = D(M[n], e);
20
+ return E.map((o, i) => o + s[i]);
21
+ }
22
+ const x = /* @__PURE__ */ new Map();
23
+ function F(n) {
24
+ let t = x.get(n);
25
+ if (!t) {
26
+ const e = O(n).map((i) => Math.round(i * 1e3) / 1e3), o = `<svg xmlns='http://www.w3.org/2000/svg'><filter id='f' color-interpolation-filters='sRGB'><feColorMatrix type='matrix' values='${[e[0], e[1], e[2], 0, 0, e[3], e[4], e[5], 0, 0, e[6], e[7], e[8], 0, 0, 0, 0, 0, 1, 0].join(" ")}'/></filter></svg>`;
27
+ t = `url("data:image/svg+xml,${encodeURIComponent(o)}#f")`, x.set(n, t);
28
+ }
29
+ return t;
30
+ }
31
+ const I = [1, 1.25, 1.5, 2, 3], P = [1, 1.5, 2, 3], Y = ["none", "grayscale", "daylight", "night", "contrast", "protanopia", "deuteranopia", "tritanopia"], L = "hp-accessibility", d = 0.15, z = "accessibility", X = 6, B = 'button:not(.hp-center-play), a, input, [role="slider"], [part="control-bar"], .hp-chip, .hp-chip-panel, .hp-shortcuts, .hp-top-bar', w = {
32
+ none: "",
33
+ grayscale: "grayscale(1)",
34
+ // Aydınlık ortamda (gün ışığında ekran) seçilebilirlik: daha parlak, daha kontrastlı.
35
+ daylight: "brightness(1.18) contrast(1.18) saturate(1.1)",
36
+ // Gece: sıcak ton, mavi ışık azaltılmış, biraz karartılmış.
37
+ night: "sepia(0.4) saturate(1.15) hue-rotate(-12deg) brightness(0.9)",
38
+ contrast: "contrast(1.55) saturate(1.25)",
39
+ protanopia: "",
40
+ deuteranopia: "",
41
+ tritanopia: ""
42
+ }, p = (n) => `<svg viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:var(--hp-ctrl-icon-size);height:var(--hp-ctrl-icon-size)">${n}</svg>`, K = {
43
+ // Büyüteç + artı
44
+ zoom: p('<circle cx="11" cy="11" r="6.5"/><path d="M20.5 20.5l-4.9-4.9M11 8.2v5.6M8.2 11h5.6"/>'),
45
+ // Yarısı dolu daire (renk / kontrast)
46
+ filter: p('<circle cx="12" cy="12" r="8.5"/><path d="M12 3.5a8.5 8.5 0 0 1 0 17z" fill="currentColor" stroke="none"/>'),
47
+ // Tek dalgalı hoparlör + "1"
48
+ mono: p('<path d="M4 9.5h3.5L12 5.5v13l-4.5-4H4z"/><path d="M15.5 9.5a3.5 3.5 0 0 1 0 5"/><path d="M19 8.5v7"/>'),
49
+ // Hoparlör + artı
50
+ boost: p('<path d="M3 9.5h3.5L11 5.5v13l-4.5-4H3z"/><path d="M14.5 12h6M17.5 9v6"/>'),
51
+ // Büyüyen kare (dışa oklar)
52
+ largeControls: p('<path d="M9 4H4v5M15 4h5v5M9 20H4v-5M15 20h5v-5"/><rect x="8.5" y="8.5" width="7" height="7" rx="1.2"/>')
53
+ };
54
+ class T {
55
+ constructor(t, e) {
56
+ a(this, "state", { zoom: 1, filter: "none", mono: !1, boost: 1, largeControls: !1 });
57
+ a(this, "zoomLevels");
58
+ a(this, "boostLevels");
59
+ a(this, "filters");
60
+ /** Kaydırma — her eksende -1…1 (yakınlaştırılmış görüntünün kenarına kadar). */
61
+ a(this, "panX", 0);
62
+ a(this, "panY", 0);
63
+ a(this, "graph", null);
64
+ a(this, "shortcutsEl", null);
65
+ a(this, "drag", null);
66
+ a(this, "touches", /* @__PURE__ */ new Map());
67
+ a(this, "pinch", null);
68
+ a(this, "quickButtons", /* @__PURE__ */ new Map());
69
+ a(this, "applyZoom", () => {
70
+ const t = this.ctx.videoEl, e = this.state.zoom;
71
+ if (this.ctx.hostEl.toggleAttribute("data-zoomed", e > 1), this.zoomLevels.length > 1 && (t.style.touchAction = e > 1 ? "none" : "pan-x pan-y"), e <= 1) {
72
+ t.style.transform = "";
73
+ return;
74
+ }
75
+ const s = (e - 1) * t.clientWidth / 2, o = (e - 1) * t.clientHeight / 2;
76
+ t.style.transformOrigin = "center center", t.style.transform = `translate(${(-this.panX * s).toFixed(1)}px, ${(-this.panY * o).toFixed(1)}px) scale(${e})`;
77
+ });
78
+ a(this, "resumeAudio", () => {
79
+ var t;
80
+ ((t = this.graph) == null ? void 0 : t.ctx.state) === "suspended" && this.graph.ctx.resume().catch(() => {
81
+ });
82
+ });
83
+ // ── Yakınlaştırma: sürükle, iki parmak ──
84
+ a(this, "onPointerDown", (t) => {
85
+ const e = t.composedPath()[0];
86
+ if (!(e instanceof Element && e.closest(B))) {
87
+ if (t.pointerType === "touch" && (this.touches.set(t.pointerId, { x: t.clientX, y: t.clientY }), this.touches.size === 2)) {
88
+ this.pinch = { dist: this.touchDistance(), zoom: this.state.zoom }, this.drag = null;
89
+ return;
90
+ }
91
+ this.state.zoom <= 1 || t.pointerType === "mouse" && t.button !== 0 || (this.drag = { id: t.pointerId, x: t.clientX, y: t.clientY, panX: this.panX, panY: this.panY });
92
+ }
93
+ });
94
+ a(this, "onPointerMove", (t) => {
95
+ if (t.pointerType === "touch" && this.touches.has(t.pointerId) && this.touches.set(t.pointerId, { x: t.clientX, y: t.clientY }), this.pinch && this.touches.size === 2) {
96
+ const r = this.zoomLevels[this.zoomLevels.length - 1], h = Math.min(r, Math.max(1, this.pinch.zoom * this.touchDistance() / this.pinch.dist));
97
+ this.state.zoom = Math.round(h * 100) / 100, this.state.zoom <= 1 && (this.panX = this.panY = 0), this.applyZoom();
98
+ return;
99
+ }
100
+ if (!this.drag || this.drag.id !== t.pointerId) return;
101
+ const e = this.ctx.videoEl, s = this.state.zoom, o = (s - 1) * e.clientWidth / 2 || 1, i = (s - 1) * e.clientHeight / 2 || 1;
102
+ this.panX = c(this.drag.panX - (t.clientX - this.drag.x) / o), this.panY = c(this.drag.panY - (t.clientY - this.drag.y) / i), this.applyZoom();
103
+ });
104
+ a(this, "onPointerUp", (t) => {
105
+ var e;
106
+ this.touches.delete(t.pointerId), this.pinch && this.touches.size < 2 && (this.pinch = null, this.syncQuickButtons(), this.ctx.hostEl.dispatchEvent(new CustomEvent("hp:accessibility", { detail: { ...this.state, changed: "zoom" } }))), ((e = this.drag) == null ? void 0 : e.id) === t.pointerId && (Math.hypot(t.clientX - this.drag.x, t.clientY - this.drag.y) > X && this.swallowNextClick(), this.drag = null);
107
+ });
108
+ // ── Klavye ──
109
+ a(this, "onKeyDown", (t) => {
110
+ if (!(t.defaultPrevented || t.ctrlKey || t.metaKey || t.altKey)) {
111
+ if (this.shortcutsEl && t.key === "Escape") {
112
+ t.preventDefault(), this.closeShortcuts();
113
+ return;
114
+ }
115
+ if (t.key === "?" && this.options.shortcuts !== !1) {
116
+ t.preventDefault(), this.shortcutsEl ? this.closeShortcuts() : this.openShortcuts();
117
+ return;
118
+ }
119
+ this.zoomLevels.length < 2 || (t.key === "+" || t.key === "=" ? (t.preventDefault(), this.setZoom(this.zoomLevels.find((e) => e > this.state.zoom + 1e-3) ?? this.state.zoom)) : t.key === "-" || t.key === "_" ? (t.preventDefault(), this.setZoom([...this.zoomLevels].reverse().find((e) => e < this.state.zoom - 1e-3) ?? 1)) : t.key === "0" && this.state.zoom > 1 ? (t.preventDefault(), this.setZoom(1)) : t.shiftKey && this.state.zoom > 1 && t.key.startsWith("Arrow") && (t.preventDefault(), t.key === "ArrowLeft" && (this.panX = c(this.panX - d)), t.key === "ArrowRight" && (this.panX = c(this.panX + d)), t.key === "ArrowUp" && (this.panY = c(this.panY - d)), t.key === "ArrowDown" && (this.panY = c(this.panY + d)), this.applyZoom()));
120
+ }
121
+ });
122
+ if (this.ctx = t, this.options = e, this.zoomLevels = e.zoom === !1 ? [] : S(Array.isArray(e.zoom) ? e.zoom : I), this.boostLevels = e.audio === !1 ? [] : S(e.boostLevels ?? P), this.filters = e.filters === !1 ? [] : Array.isArray(e.filters) ? ["none", ...e.filters.filter((s) => s !== "none" && s in w)] : Y, this.restore(), t.registerSubmenu(this.menu()), t.hostEl.addEventListener("keydown", this.onKeyDown, !0), this.zoomLevels.length > 1) {
123
+ const s = t.videoAreaEl;
124
+ s.addEventListener("pointerdown", this.onPointerDown), s.addEventListener("pointermove", this.onPointerMove), s.addEventListener("pointerup", this.onPointerUp), s.addEventListener("pointercancel", this.onPointerUp), window.addEventListener("resize", this.applyZoom);
125
+ }
126
+ t.videoEl.addEventListener("play", this.resumeAudio), this.applyAll();
127
+ }
128
+ destroy() {
129
+ const t = this.ctx.videoEl;
130
+ this.ctx.unregisterSubmenu(z), this.ctx.hostEl.removeEventListener("keydown", this.onKeyDown, !0);
131
+ const e = this.ctx.videoAreaEl;
132
+ e.removeEventListener("pointerdown", this.onPointerDown), e.removeEventListener("pointermove", this.onPointerMove), e.removeEventListener("pointerup", this.onPointerUp), e.removeEventListener("pointercancel", this.onPointerUp), t.removeEventListener("play", this.resumeAudio), window.removeEventListener("resize", this.applyZoom), this.closeShortcuts();
133
+ for (const s of this.quickButtons.values()) s.remove();
134
+ this.quickButtons.clear(), Object.assign(t.style, { transform: "", transformOrigin: "", filter: "", touchAction: "" }), this.ctx.hostEl.removeAttribute("data-large-controls"), this.ctx.hostEl.removeAttribute("data-zoomed"), this.graph && (this.state.mono = !1, this.state.boost = 1, this.applyAudio());
135
+ }
136
+ /** Dil değişince alt menü yeni etiketlerle yeniden kaydedilir. */
137
+ refreshLabels() {
138
+ this.ctx.registerSubmenu(this.menu()), this.syncQuickButtons(), this.shortcutsEl && (this.closeShortcuts(), this.openShortcuts());
139
+ }
140
+ // ── Menü ──
141
+ menu() {
142
+ const t = this.ctx.i18n;
143
+ return {
144
+ key: z,
145
+ title: t.a11yMenu,
146
+ getValueLabel: () => "",
147
+ getItems: () => {
148
+ const e = [], s = (o, i, r) => ({ label: o, value: i, active: !1, onSelect: () => {
149
+ }, children: r });
150
+ if (this.zoomLevels.length > 1 && e.push(s(t.a11yZoom, u(this.state.zoom), () => this.zoomDef())), this.filters.length > 1 && e.push(s(t.a11yFilter, this.filterLabel(this.state.filter), () => this.filterDef())), this.boostLevels.length) {
151
+ const o = this.audioAllowed();
152
+ e.push({
153
+ label: t.a11yMono,
154
+ value: o ? this.state.mono ? t.a11yOn : t.a11yOff : t.a11yUnavailable,
155
+ active: this.state.mono,
156
+ keepOpen: !0,
157
+ onSelect: () => {
158
+ o && this.set("mono", !this.state.mono);
159
+ }
160
+ }), this.boostLevels.length > 1 && e.push(s(t.a11yBoost, o ? u(this.state.boost) : t.a11yUnavailable, () => this.boostDef()));
161
+ }
162
+ return this.options.largeControls !== !1 && e.push({
163
+ label: t.a11yLargeControls,
164
+ value: this.state.largeControls ? t.a11yOn : t.a11yOff,
165
+ active: this.state.largeControls,
166
+ keepOpen: !0,
167
+ onSelect: () => this.set("largeControls", !this.state.largeControls)
168
+ }), this.options.shortcuts !== !1 && e.push({ label: t.a11yShortcuts, value: "?", active: !1, onSelect: () => queueMicrotask(() => this.openShortcuts()) }), e;
169
+ }
170
+ };
171
+ }
172
+ // Özelliklerin kendi alt menüleri — hem Erişilebilirlik menüsünden hem hızlı erişim butonlarından açılır.
173
+ zoomDef() {
174
+ return {
175
+ key: "a11y-zoom",
176
+ title: this.ctx.i18n.a11yZoom,
177
+ getValueLabel: () => "",
178
+ getItems: () => this.zoomLevels.map((t) => ({ label: u(t), active: Math.abs(this.state.zoom - t) < 1e-3, onSelect: () => this.setZoom(t) }))
179
+ };
180
+ }
181
+ filterDef() {
182
+ return {
183
+ key: "a11y-filter",
184
+ title: this.ctx.i18n.a11yFilter,
185
+ getValueLabel: () => "",
186
+ getItems: () => this.filters.map((t) => ({ label: this.filterLabel(t), active: this.state.filter === t, onSelect: () => this.set("filter", t) }))
187
+ };
188
+ }
189
+ boostDef() {
190
+ return {
191
+ key: "a11y-boost",
192
+ title: this.ctx.i18n.a11yBoost,
193
+ getValueLabel: () => "",
194
+ getItems: () => this.audioAllowed() ? this.boostLevels.map((t) => ({ label: u(t), active: this.state.boost === t, onSelect: () => this.set("boost", t) })) : []
195
+ };
196
+ }
197
+ /** Aç / kapa özellikleri (mono, büyük kontroller) için hızlı butonun açtığı iki satırlık menü. */
198
+ toggleDef(t, e) {
199
+ const s = this.ctx.i18n;
200
+ return {
201
+ key: `a11y-${t}`,
202
+ title: e,
203
+ getValueLabel: () => "",
204
+ getItems: () => [
205
+ { label: s.a11yOn, active: this.state[t], onSelect: () => this.set(t, !0) },
206
+ { label: s.a11yOff, active: !this.state[t], onSelect: () => this.set(t, !1) }
207
+ ]
208
+ };
209
+ }
210
+ // ── Hızlı erişim butonları ──
211
+ /**
212
+ * Açık olan her özelliğin ayarlar butonunun sağında kendi butonu olur; basınca doğrudan o özelliğin ayarları açılır
213
+ * (yakınlaştırma seviyeleri, filtre listesi…). Özellik kapanınca buton kalkar. "Geri" Erişilebilirlik menüsüne döner.
214
+ */
215
+ syncQuickButtons() {
216
+ const t = this.ctx.i18n, e = this.state, s = [
217
+ { id: "zoom", on: e.zoom > 1.001, label: `${t.a11yZoom}: ${u(e.zoom)}`, def: () => this.zoomDef() },
218
+ { id: "filter", on: e.filter !== "none", label: `${t.a11yFilter}: ${this.filterLabel(e.filter)}`, def: () => this.filterDef() },
219
+ { id: "mono", on: e.mono, label: `${t.a11yMono}: ${t.a11yOn}`, def: () => this.toggleDef("mono", t.a11yMono) },
220
+ { id: "boost", on: e.boost !== 1, label: `${t.a11yBoost}: ${u(e.boost)}`, def: () => this.boostDef() },
221
+ { id: "largeControls", on: e.largeControls, label: `${t.a11yLargeControls}: ${t.a11yOn}`, def: () => this.toggleDef("largeControls", t.a11yLargeControls) }
222
+ ];
223
+ for (const o of s) {
224
+ let i = this.quickButtons.get(o.id);
225
+ if (!o.on) {
226
+ i == null || i.remove(), this.quickButtons.delete(o.id);
227
+ continue;
228
+ }
229
+ i || (i = document.createElement("button"), i.type = "button", i.className = "hp-chip hp-a11y-quick hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer", i.setAttribute("part", `a11y-quick a11y-quick-${o.id}`), i.setAttribute("data-a11y", o.id), i.innerHTML = K[o.id], this.ctx.addQuickButton(i, o.def, () => [this.menu()]), this.quickButtons.set(o.id, i)), i.setAttribute("aria-label", o.label);
230
+ }
231
+ }
232
+ filterLabel(t) {
233
+ const e = this.ctx.i18n;
234
+ return {
235
+ none: e.a11yFilterNone,
236
+ grayscale: e.a11yFilterGrayscale,
237
+ daylight: e.a11yFilterDaylight,
238
+ night: e.a11yFilterNight,
239
+ contrast: e.a11yFilterContrast,
240
+ protanopia: e.a11yFilterProtanopia,
241
+ deuteranopia: e.a11yFilterDeuteranopia,
242
+ tritanopia: e.a11yFilterTritanopia
243
+ }[t];
244
+ }
245
+ // ── Durum ──
246
+ set(t, e) {
247
+ this.state[t] !== e && (this.state[t] = e, this.applyAll(), this.save(), this.ctx.hostEl.dispatchEvent(new CustomEvent("hp:accessibility", { detail: { ...this.state, changed: t } })));
248
+ }
249
+ setZoom(t) {
250
+ t <= 1 && (this.panX = 0, this.panY = 0), this.set("zoom", t);
251
+ }
252
+ applyAll() {
253
+ this.applyZoom(), this.applyFilter(), this.applyAudio(), this.ctx.hostEl.toggleAttribute("data-large-controls", this.state.largeControls), this.syncQuickButtons();
254
+ }
255
+ applyFilter() {
256
+ const t = this.state.filter;
257
+ this.ctx.videoEl.style.filter = t === "protanopia" || t === "deuteranopia" || t === "tritanopia" ? F(t) : w[t];
258
+ }
259
+ // ── Ses (Web Audio) ──
260
+ /**
261
+ * Web Audio kaynağı başka alan adındaysa ve CORS'la yüklenmediyse tarayıcı sesi sıfırlar — o zaman kapalı kalır.
262
+ * blob: (hls.js / MSE; hls.js zaten CORS'la indirir) ve aynı origin güvenli.
263
+ */
264
+ audioAllowed() {
265
+ if (typeof AudioContext > "u") return !1;
266
+ const t = this.ctx.videoEl.currentSrc;
267
+ if (!t || t.startsWith("blob:") || t.startsWith("data:")) return !0;
268
+ try {
269
+ if (new URL(t, location.href).origin === location.origin) return !0;
270
+ } catch {
271
+ return !1;
272
+ }
273
+ return this.ctx.videoEl.crossOrigin !== null;
274
+ }
275
+ applyAudio() {
276
+ if (!(this.state.mono || this.state.boost !== 1) && !this.graph) return;
277
+ if (!this.graph) {
278
+ if (!this.audioAllowed()) return;
279
+ try {
280
+ const o = new AudioContext(), i = o.createMediaElementSource(this.ctx.videoEl), r = o.createGain();
281
+ i.connect(r).connect(o.destination), this.graph = { ctx: o, gain: r };
282
+ } catch {
283
+ return;
284
+ }
285
+ }
286
+ const { gain: e, ctx: s } = this.graph;
287
+ e.gain.value = this.state.boost, e.channelCountMode = this.state.mono ? "explicit" : "max", e.channelCount = this.state.mono ? 1 : 2, e.channelInterpretation = "speakers", s.state === "suspended" && s.resume().catch(() => {
288
+ });
289
+ }
290
+ // ── Kalıcılık ──
291
+ restore() {
292
+ if (this.options.remember !== !1)
293
+ try {
294
+ const t = JSON.parse(localStorage.getItem(L) ?? "null");
295
+ if (!t) return;
296
+ t.filter && this.filters.includes(t.filter) && (this.state.filter = t.filter), typeof t.mono == "boolean" && this.boostLevels.length && (this.state.mono = t.mono), typeof t.boost == "number" && this.boostLevels.includes(t.boost) && (this.state.boost = t.boost), typeof t.largeControls == "boolean" && this.options.largeControls !== !1 && (this.state.largeControls = t.largeControls);
297
+ } catch {
298
+ }
299
+ }
300
+ save() {
301
+ if (this.options.remember !== !1)
302
+ try {
303
+ const { filter: t, mono: e, boost: s, largeControls: o } = this.state;
304
+ localStorage.setItem(L, JSON.stringify({ filter: t, mono: e, boost: s, largeControls: o }));
305
+ } catch {
306
+ }
307
+ }
308
+ swallowNextClick() {
309
+ const t = this.ctx.videoAreaEl, e = (s) => {
310
+ s.stopPropagation(), s.preventDefault();
311
+ };
312
+ t.addEventListener("click", e, { capture: !0, once: !0 }), setTimeout(() => t.removeEventListener("click", e, { capture: !0 }), 400);
313
+ }
314
+ touchDistance() {
315
+ const [t, e] = [...this.touches.values()];
316
+ return t && e && Math.hypot(t.x - e.x, t.y - e.y) || 1;
317
+ }
318
+ // ── Kısayol paneli ──
319
+ openShortcuts() {
320
+ if (this.shortcutsEl) return;
321
+ const t = this.ctx.i18n, e = document.createElement("div");
322
+ e.className = "hp-shortcuts", e.setAttribute("part", "shortcuts"), e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.setAttribute("aria-labelledby", "hp-shortcuts-title");
323
+ const s = document.createElement("div");
324
+ s.className = "hp-shortcuts-box";
325
+ const o = document.createElement("div");
326
+ o.className = "hp-shortcuts-head";
327
+ const i = document.createElement("h2");
328
+ i.id = "hp-shortcuts-title", i.textContent = t.a11yShortcuts;
329
+ const r = document.createElement("button");
330
+ r.type = "button", r.className = "hp-shortcuts-close", r.setAttribute("aria-label", t.a11yClose), r.textContent = "✕", r.addEventListener("click", () => this.closeShortcuts()), o.append(i, r);
331
+ const h = [
332
+ [["Space", "K"], t.a11yKeyPlay],
333
+ [["←", "→", "J", "L"], t.a11yKeySeek(this.ctx.seekStep())],
334
+ [["↑", "↓"], t.a11yKeyVolume],
335
+ [["M"], t.a11yKeyMute],
336
+ [["F"], t.a11yKeyFullscreen]
337
+ ];
338
+ this.zoomLevels.length > 1 && (h.push([["+", "−", "0"], t.a11yKeyZoom]), h.push([["Shift", "+", "←↑↓→"], t.a11yKeyPan])), h.push([["?"], t.a11yKeyShortcuts]);
339
+ const f = document.createElement("dl");
340
+ f.className = "hp-shortcuts-list";
341
+ for (const [l, m] of h) {
342
+ const y = document.createElement("dt");
343
+ for (const g of l) {
344
+ if (g === "+" && l[0] === "Shift") {
345
+ y.append(" + ");
346
+ continue;
347
+ }
348
+ const b = document.createElement("kbd");
349
+ b.textContent = g, y.appendChild(b);
350
+ }
351
+ const v = document.createElement("dd");
352
+ v.textContent = m, f.append(y, v);
353
+ }
354
+ s.append(o, f), e.appendChild(s), e.addEventListener("click", (l) => {
355
+ l.stopPropagation(), l.target === e && this.closeShortcuts();
356
+ });
357
+ for (const l of ["pointerdown", "mousedown", "mouseup", "touchstart", "touchend", "dblclick"]) e.addEventListener(l, (m) => m.stopPropagation());
358
+ e.addEventListener("keydown", (l) => {
359
+ l.key === "Tab" && (l.preventDefault(), r.focus());
360
+ }), this.ctx.videoAreaEl.appendChild(e), this.shortcutsEl = e, r.focus({ preventScroll: !0 });
361
+ }
362
+ closeShortcuts() {
363
+ if (!this.shortcutsEl) return;
364
+ const t = this.shortcutsEl.contains((this.ctx.hostEl.shadowRoot ?? document).activeElement);
365
+ this.shortcutsEl.remove(), this.shortcutsEl = null, t && this.ctx.hostEl.focus({ preventScroll: !0 });
366
+ }
367
+ }
368
+ function S(n) {
369
+ const t = n.filter((e) => Number.isFinite(e) && e >= 1 && e <= 8);
370
+ return [.../* @__PURE__ */ new Set([1, ...t])].sort((e, s) => e - s);
371
+ }
372
+ const c = (n) => Math.min(1, Math.max(-1, n)), u = (n) => `${Math.round(n * 100)}%`;
373
+ function N(n, t) {
374
+ return new T(n, t);
375
+ }
376
+ export {
377
+ T as Accessibility,
378
+ N as installAccessibility
379
+ };
380
+ //# sourceMappingURL=accessibility-CehDBG3h.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility-CehDBG3h.js","sources":["../../src/plugins/accessibility/colorBlind.ts","../../src/plugins/accessibility/Accessibility.ts","../../src/plugins/accessibility/index.ts"],"sourcesContent":["// Renk körlüğü filtreleri: daltonizasyon (renk körünün ayırt edemediği renk farkını gördüğü kanallara kaydırma).\n// Simülasyon matrisi S ile: M = I + E·(I − S). E hatayı görülebilen kanallara dağıtır. Sonuç tek bir 3×3 renk\n// matrisi — CSS `filter: url(...)` ile bir SVG feColorMatrix olarak uygulanır (shadow DOM'da #id başvurusu tarayıcıdan\n// tarayıcıya değiştiği için filtre veri adresinin içinde gelir).\n\ntype M3 = [number, number, number, number, number, number, number, number, number];\ntype Kind = 'protanopia' | 'deuteranopia' | 'tritanopia';\n\n/** RGB uzayında yaygın kullanılan renk körlüğü simülasyon matrisleri. */\nconst SIMULATE: Record<Kind, M3> = {\n protanopia: [0.567, 0.433, 0, 0.558, 0.442, 0, 0, 0.242, 0.758],\n deuteranopia: [0.625, 0.375, 0, 0.7, 0.3, 0, 0, 0.3, 0.7],\n tritanopia: [0.95, 0.05, 0, 0, 0.433, 0.567, 0, 0.475, 0.525],\n};\n\n/** Kırmızı / yeşil körlüğünde hata yeşil ve maviye; mavi körlüğünde kırmızı ve yeşile kaydırılır. */\nconst SHIFT: Record<Kind, M3> = {\n protanopia: [0, 0, 0, 0.7, 1, 0, 0.7, 0, 1],\n deuteranopia: [0, 0, 0, 0.7, 1, 0, 0.7, 0, 1],\n tritanopia: [1, 0, 0.7, 0, 1, 0.7, 0, 0, 0],\n};\n\nconst I: M3 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\nfunction mul(a: M3, b: M3): M3 {\n const r = new Array<number>(9) as M3;\n for (let i = 0; i < 3; i++) for (let j = 0; j < 3; j++) r[i * 3 + j] = a[i * 3]! * b[j]! + a[i * 3 + 1]! * b[3 + j]! + a[i * 3 + 2]! * b[6 + j]!;\n return r;\n}\n\nexport function daltonizeMatrix(kind: Kind): M3 {\n const s = SIMULATE[kind];\n const err = I.map((v, i) => v - s[i]!) as M3;\n const shifted = mul(SHIFT[kind], err);\n return I.map((v, i) => v + shifted[i]!) as M3;\n}\n\nconst cache = new Map<Kind, string>();\n\nexport function colorBlindFilterUrl(kind: Kind): string {\n let url = cache.get(kind);\n if (!url) {\n const m = daltonizeMatrix(kind).map((n) => Math.round(n * 1000) / 1000);\n const values = [m[0], m[1], m[2], 0, 0, m[3], m[4], m[5], 0, 0, m[6], m[7], m[8], 0, 0, 0, 0, 0, 1, 0].join(' ');\n const svg = `<svg xmlns='http://www.w3.org/2000/svg'><filter id='f' color-interpolation-filters='sRGB'><feColorMatrix type='matrix' values='${values}'/></filter></svg>`;\n url = `url(\"data:image/svg+xml,${encodeURIComponent(svg)}#f\")`;\n cache.set(kind, url);\n }\n return url;\n}\n","import type { AccessibilityFilter, AccessibilityOptions, AccessibilityState } from '../../types';\nimport type { HopeLocaleStrings } from '../../i18n/types';\nimport type { SettingsSubmenuDef, SettingsSubmenuItem } from '../../controls/SettingsMenu';\nimport { colorBlindFilterUrl } from './colorBlind';\n\nexport interface AccessibilityPlayerContext {\n hostEl: HTMLElement;\n videoEl: HTMLVideoElement;\n videoAreaEl: HTMLElement;\n i18n: HopeLocaleStrings;\n registerSubmenu(def: SettingsSubmenuDef): void;\n unregisterSubmenu(key: string): void;\n /** Ayarlar butonunun sağına hızlı erişim butonu (SettingsMenu.addQuickButton). */\n addQuickButton(btn: HTMLButtonElement, getDef: () => SettingsSubmenuDef, getParents: () => SettingsSubmenuDef[]): void;\n /** Klavyeyle sarma adımı (sn) — kısayol listesinde gösterilir. */\n seekStep(): number;\n}\n\nconst DEFAULT_ZOOM = [1, 1.25, 1.5, 2, 3];\nconst DEFAULT_BOOST = [1, 1.5, 2, 3];\nconst ALL_FILTERS: AccessibilityFilter[] = ['none', 'grayscale', 'daylight', 'night', 'contrast', 'protanopia', 'deuteranopia', 'tritanopia'];\nconst STORAGE_KEY = 'hp-accessibility';\n/** Shift + ok ile bir adımda kaydırma (yakınlaştırılmış alanın oranı). */\nconst PAN_STEP = 0.15;\nconst SUBMENU_KEY = 'accessibility';\n/** Bundan fazla kayan basış sürükleme sayılır — ardından gelen tık yutulur. */\nconst DRAG_THRESHOLD_PX = 6;\n/**\n * Bunların üstünde başlayan sürükleme / iki parmak görüntüyü kaydırmaz (butonlar, ilerleme çubuğu, menüler). Ortadaki\n * oynat butonu hariç: duraklatılmışken bütün alanı kaplıyor — onun üstünde de kaydırılabilmeli.\n */\nconst CONTROL_SELECTOR = 'button:not(.hp-center-play), a, input, [role=\"slider\"], [part=\"control-bar\"], .hp-chip, .hp-chip-panel, .hp-shortcuts, .hp-top-bar';\n\n/** CSS filtreleri. Renk körlüğü filtreleri SVG renk matrisi (daltonizasyon) — bkz. colorBlind.ts. */\nconst CSS_FILTERS: Record<AccessibilityFilter, string> = {\n none: '',\n grayscale: 'grayscale(1)',\n // Aydınlık ortamda (gün ışığında ekran) seçilebilirlik: daha parlak, daha kontrastlı.\n daylight: 'brightness(1.18) contrast(1.18) saturate(1.1)',\n // Gece: sıcak ton, mavi ışık azaltılmış, biraz karartılmış.\n night: 'sepia(0.4) saturate(1.15) hue-rotate(-12deg) brightness(0.9)',\n contrast: 'contrast(1.55) saturate(1.25)',\n protanopia: '',\n deuteranopia: '',\n tritanopia: '',\n};\n\ntype QuickId = 'zoom' | 'filter' | 'mono' | 'boost' | 'largeControls';\n\n/** Hızlı erişim butonlarının ikonları (satır içi SVG — ikon fontunda karşılıkları yok). */\nconst svg = (body: string): string =>\n `<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"width:var(--hp-ctrl-icon-size);height:var(--hp-ctrl-icon-size)\">${body}</svg>`;\nconst QUICK_ICONS: Record<QuickId, string> = {\n // Büyüteç + artı\n zoom: svg('<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"M20.5 20.5l-4.9-4.9M11 8.2v5.6M8.2 11h5.6\"/>'),\n // Yarısı dolu daire (renk / kontrast)\n filter: svg('<circle cx=\"12\" cy=\"12\" r=\"8.5\"/><path d=\"M12 3.5a8.5 8.5 0 0 1 0 17z\" fill=\"currentColor\" stroke=\"none\"/>'),\n // Tek dalgalı hoparlör + \"1\"\n mono: svg('<path d=\"M4 9.5h3.5L12 5.5v13l-4.5-4H4z\"/><path d=\"M15.5 9.5a3.5 3.5 0 0 1 0 5\"/><path d=\"M19 8.5v7\"/>'),\n // Hoparlör + artı\n boost: svg('<path d=\"M3 9.5h3.5L11 5.5v13l-4.5-4H3z\"/><path d=\"M14.5 12h6M17.5 9v6\"/>'),\n // Büyüyen kare (dışa oklar)\n largeControls: svg('<path d=\"M9 4H4v5M15 4h5v5M9 20H4v-5M15 20h5v-5\"/><rect x=\"8.5\" y=\"8.5\" width=\"7\" height=\"7\" rx=\"1.2\"/>'),\n};\ninterface AudioGraph {\n ctx: AudioContext;\n gain: GainNode;\n}\n\n/**\n * Erişilebilirlik alt menüsü: yakınlaştırma (sürükle / Shift+ok / iki parmak), görüntü filtreleri, mono ses, ses\n * güçlendirme (Web Audio), büyük kontroller ve klavye kısayolları paneli (`?`). Seçimler tarayıcıda hatırlanır.\n */\nexport class Accessibility {\n private readonly state: AccessibilityState = { zoom: 1, filter: 'none', mono: false, boost: 1, largeControls: false };\n private readonly zoomLevels: number[];\n private readonly boostLevels: number[];\n private readonly filters: AccessibilityFilter[];\n /** Kaydırma — her eksende -1…1 (yakınlaştırılmış görüntünün kenarına kadar). */\n private panX = 0;\n private panY = 0;\n private graph: AudioGraph | null = null;\n private shortcutsEl: HTMLDivElement | null = null;\n private drag: { id: number; x: number; y: number; panX: number; panY: number } | null = null;\n private readonly touches = new Map<number, { x: number; y: number }>();\n private pinch: { dist: number; zoom: number } | null = null;\n private readonly quickButtons = new Map<QuickId, HTMLButtonElement>();\n\n constructor(\n private readonly ctx: AccessibilityPlayerContext,\n private readonly options: AccessibilityOptions\n ) {\n this.zoomLevels = options.zoom === false ? [] : normalizeLevels(Array.isArray(options.zoom) ? options.zoom : DEFAULT_ZOOM);\n this.boostLevels = options.audio === false ? [] : normalizeLevels(options.boostLevels ?? DEFAULT_BOOST);\n this.filters = options.filters === false ? [] : Array.isArray(options.filters) ? ['none', ...options.filters.filter((f) => f !== 'none' && f in CSS_FILTERS)] : ALL_FILTERS;\n\n this.restore();\n ctx.registerSubmenu(this.menu());\n ctx.hostEl.addEventListener('keydown', this.onKeyDown, true);\n if (this.zoomLevels.length > 1) {\n // Video alanının tamamı (oynat butonu / altyazı katmanı videonun üstünde) — kontrollerden başlayan sürükleme hariç.\n const area = ctx.videoAreaEl;\n area.addEventListener('pointerdown', this.onPointerDown);\n area.addEventListener('pointermove', this.onPointerMove);\n area.addEventListener('pointerup', this.onPointerUp);\n area.addEventListener('pointercancel', this.onPointerUp);\n window.addEventListener('resize', this.applyZoom);\n }\n ctx.videoEl.addEventListener('play', this.resumeAudio);\n this.applyAll();\n }\n\n destroy(): void {\n const v = this.ctx.videoEl;\n this.ctx.unregisterSubmenu(SUBMENU_KEY);\n this.ctx.hostEl.removeEventListener('keydown', this.onKeyDown, true);\n const area = this.ctx.videoAreaEl;\n area.removeEventListener('pointerdown', this.onPointerDown);\n area.removeEventListener('pointermove', this.onPointerMove);\n area.removeEventListener('pointerup', this.onPointerUp);\n area.removeEventListener('pointercancel', this.onPointerUp);\n v.removeEventListener('play', this.resumeAudio);\n window.removeEventListener('resize', this.applyZoom);\n this.closeShortcuts();\n for (const btn of this.quickButtons.values()) btn.remove();\n this.quickButtons.clear();\n Object.assign(v.style, { transform: '', transformOrigin: '', filter: '', touchAction: '' });\n this.ctx.hostEl.removeAttribute('data-large-controls');\n this.ctx.hostEl.removeAttribute('data-zoomed');\n // Web Audio grafiği geri alınamaz (createMediaElementSource kalıcı) — nötr değerlere çekilir.\n if (this.graph) {\n this.state.mono = false;\n this.state.boost = 1;\n this.applyAudio();\n }\n }\n\n /** Dil değişince alt menü yeni etiketlerle yeniden kaydedilir. */\n refreshLabels(): void {\n this.ctx.registerSubmenu(this.menu());\n this.syncQuickButtons();\n if (this.shortcutsEl) {\n this.closeShortcuts();\n this.openShortcuts();\n }\n }\n\n // ── Menü ──\n\n private menu(): SettingsSubmenuDef {\n const t = this.ctx.i18n;\n return {\n key: SUBMENU_KEY,\n title: t.a11yMenu,\n getValueLabel: () => '',\n getItems: () => {\n const items: SettingsSubmenuItem[] = [];\n const sub = (label: string, value: string, children: () => SettingsSubmenuDef): SettingsSubmenuItem => ({ label, value, active: false, onSelect: () => {}, children });\n if (this.zoomLevels.length > 1) items.push(sub(t.a11yZoom, pct(this.state.zoom), () => this.zoomDef()));\n if (this.filters.length > 1) items.push(sub(t.a11yFilter, this.filterLabel(this.state.filter), () => this.filterDef()));\n if (this.boostLevels.length) {\n const ok = this.audioAllowed();\n items.push({\n label: t.a11yMono,\n value: ok ? (this.state.mono ? t.a11yOn : t.a11yOff) : t.a11yUnavailable,\n active: this.state.mono,\n keepOpen: true,\n onSelect: () => {\n if (ok) this.set('mono', !this.state.mono);\n },\n });\n if (this.boostLevels.length > 1) items.push(sub(t.a11yBoost, ok ? pct(this.state.boost) : t.a11yUnavailable, () => this.boostDef()));\n }\n if (this.options.largeControls !== false)\n items.push({\n label: t.a11yLargeControls,\n value: this.state.largeControls ? t.a11yOn : t.a11yOff,\n active: this.state.largeControls,\n keepOpen: true,\n onSelect: () => this.set('largeControls', !this.state.largeControls),\n });\n if (this.options.shortcuts !== false)\n items.push({ label: t.a11yShortcuts, value: '?', active: false, onSelect: () => queueMicrotask(() => this.openShortcuts()) });\n return items;\n },\n };\n }\n\n // Özelliklerin kendi alt menüleri — hem Erişilebilirlik menüsünden hem hızlı erişim butonlarından açılır.\n\n private zoomDef(): SettingsSubmenuDef {\n return {\n key: 'a11y-zoom',\n title: this.ctx.i18n.a11yZoom,\n getValueLabel: () => '',\n getItems: () => this.zoomLevels.map((z) => ({ label: pct(z), active: Math.abs(this.state.zoom - z) < 0.001, onSelect: () => this.setZoom(z) })),\n };\n }\n\n private filterDef(): SettingsSubmenuDef {\n return {\n key: 'a11y-filter',\n title: this.ctx.i18n.a11yFilter,\n getValueLabel: () => '',\n getItems: () => this.filters.map((f) => ({ label: this.filterLabel(f), active: this.state.filter === f, onSelect: () => this.set('filter', f) })),\n };\n }\n\n private boostDef(): SettingsSubmenuDef {\n return {\n key: 'a11y-boost',\n title: this.ctx.i18n.a11yBoost,\n getValueLabel: () => '',\n getItems: () => (this.audioAllowed() ? this.boostLevels.map((b) => ({ label: pct(b), active: this.state.boost === b, onSelect: () => this.set('boost', b) })) : []),\n };\n }\n\n /** Aç / kapa özellikleri (mono, büyük kontroller) için hızlı butonun açtığı iki satırlık menü. */\n private toggleDef(key: 'mono' | 'largeControls', title: string): SettingsSubmenuDef {\n const t = this.ctx.i18n;\n return {\n key: `a11y-${key}`,\n title,\n getValueLabel: () => '',\n getItems: () => [\n { label: t.a11yOn, active: this.state[key], onSelect: () => this.set(key, true) },\n { label: t.a11yOff, active: !this.state[key], onSelect: () => this.set(key, false) },\n ],\n };\n }\n\n // ── Hızlı erişim butonları ──\n\n /**\n * Açık olan her özelliğin ayarlar butonunun sağında kendi butonu olur; basınca doğrudan o özelliğin ayarları açılır\n * (yakınlaştırma seviyeleri, filtre listesi…). Özellik kapanınca buton kalkar. \"Geri\" Erişilebilirlik menüsüne döner.\n */\n private syncQuickButtons(): void {\n const t = this.ctx.i18n;\n const s = this.state;\n const specs: { id: QuickId; on: boolean; label: string; def: () => SettingsSubmenuDef }[] = [\n { id: 'zoom', on: s.zoom > 1.001, label: `${t.a11yZoom}: ${pct(s.zoom)}`, def: () => this.zoomDef() },\n { id: 'filter', on: s.filter !== 'none', label: `${t.a11yFilter}: ${this.filterLabel(s.filter)}`, def: () => this.filterDef() },\n { id: 'mono', on: s.mono, label: `${t.a11yMono}: ${t.a11yOn}`, def: () => this.toggleDef('mono', t.a11yMono) },\n { id: 'boost', on: s.boost !== 1, label: `${t.a11yBoost}: ${pct(s.boost)}`, def: () => this.boostDef() },\n { id: 'largeControls', on: s.largeControls, label: `${t.a11yLargeControls}: ${t.a11yOn}`, def: () => this.toggleDef('largeControls', t.a11yLargeControls) },\n ];\n for (const spec of specs) {\n let btn = this.quickButtons.get(spec.id);\n if (!spec.on) {\n btn?.remove();\n this.quickButtons.delete(spec.id);\n continue;\n }\n if (!btn) {\n btn = document.createElement('button');\n btn.type = 'button';\n btn.className =\n 'hp-chip hp-a11y-quick hp:flex hp:items-center hp:justify-center hp:w-[var(--hp-ctrl-btn-size)] hp:h-[var(--hp-ctrl-btn-size)] hp:cursor-pointer';\n btn.setAttribute('part', `a11y-quick a11y-quick-${spec.id}`);\n btn.setAttribute('data-a11y', spec.id);\n btn.innerHTML = QUICK_ICONS[spec.id];\n this.ctx.addQuickButton(btn, spec.def, () => [this.menu()]);\n this.quickButtons.set(spec.id, btn);\n }\n // Tooltip ve ekran okuyucu: özelliğin adı + değeri (\"Yakınlaştırma: 200%\").\n btn.setAttribute('aria-label', spec.label);\n }\n }\n private filterLabel(f: AccessibilityFilter): string {\n const t = this.ctx.i18n;\n const labels: Record<AccessibilityFilter, string> = {\n none: t.a11yFilterNone,\n grayscale: t.a11yFilterGrayscale,\n daylight: t.a11yFilterDaylight,\n night: t.a11yFilterNight,\n contrast: t.a11yFilterContrast,\n protanopia: t.a11yFilterProtanopia,\n deuteranopia: t.a11yFilterDeuteranopia,\n tritanopia: t.a11yFilterTritanopia,\n };\n return labels[f];\n }\n\n // ── Durum ──\n\n private set<K extends keyof AccessibilityState>(key: K, value: AccessibilityState[K]): void {\n if (this.state[key] === value) return;\n this.state[key] = value;\n this.applyAll();\n this.save();\n this.ctx.hostEl.dispatchEvent(new CustomEvent('hp:accessibility', { detail: { ...this.state, changed: key } }));\n }\n\n private setZoom(z: number): void {\n if (z <= 1) {\n this.panX = 0;\n this.panY = 0;\n }\n this.set('zoom', z);\n }\n\n private applyAll(): void {\n this.applyZoom();\n this.applyFilter();\n this.applyAudio();\n this.ctx.hostEl.toggleAttribute('data-large-controls', this.state.largeControls);\n this.syncQuickButtons();\n }\n\n private readonly applyZoom = (): void => {\n const v = this.ctx.videoEl;\n const z = this.state.zoom;\n this.ctx.hostEl.toggleAttribute('data-zoomed', z > 1);\n if (this.zoomLevels.length > 1) {\n // Yakınlaştırılmamışken sayfa kaydırması serbest, tarayıcının kendi iki parmak büyütmesi kapalı (bizimki çalışsın);\n // yakınlaştırılmışken sürükleme görüntüyü kaydırır.\n v.style.touchAction = z > 1 ? 'none' : 'pan-x pan-y';\n }\n if (z <= 1) {\n v.style.transform = '';\n return;\n }\n // Kenar dışına kaydırılamaz: en fazla (z-1)/2 genişlik kadar.\n const maxX = ((z - 1) * v.clientWidth) / 2;\n const maxY = ((z - 1) * v.clientHeight) / 2;\n v.style.transformOrigin = 'center center';\n v.style.transform = `translate(${(-this.panX * maxX).toFixed(1)}px, ${(-this.panY * maxY).toFixed(1)}px) scale(${z})`;\n };\n\n private applyFilter(): void {\n const f = this.state.filter;\n this.ctx.videoEl.style.filter = f === 'protanopia' || f === 'deuteranopia' || f === 'tritanopia' ? colorBlindFilterUrl(f) : CSS_FILTERS[f];\n }\n\n // ── Ses (Web Audio) ──\n\n /**\n * Web Audio kaynağı başka alan adındaysa ve CORS'la yüklenmediyse tarayıcı sesi sıfırlar — o zaman kapalı kalır.\n * blob: (hls.js / MSE; hls.js zaten CORS'la indirir) ve aynı origin güvenli.\n */\n private audioAllowed(): boolean {\n if (typeof AudioContext === 'undefined') return false;\n const src = this.ctx.videoEl.currentSrc;\n if (!src || src.startsWith('blob:') || src.startsWith('data:')) return true;\n try {\n if (new URL(src, location.href).origin === location.origin) return true;\n } catch {\n return false;\n }\n return this.ctx.videoEl.crossOrigin !== null;\n }\n\n private applyAudio(): void {\n const needed = this.state.mono || this.state.boost !== 1;\n if (!needed && !this.graph) return;\n if (!this.graph) {\n if (!this.audioAllowed()) return;\n try {\n const ctx = new AudioContext();\n const source = ctx.createMediaElementSource(this.ctx.videoEl);\n const gain = ctx.createGain();\n source.connect(gain).connect(ctx.destination);\n this.graph = { ctx, gain };\n } catch {\n return;\n }\n }\n const { gain, ctx } = this.graph;\n gain.gain.value = this.state.boost;\n // Mono: kanalları 'speakers' kuralıyla tek kanala indir ((L+R)/2); çıkış iki hoparlöre aynı gider.\n gain.channelCountMode = this.state.mono ? 'explicit' : 'max';\n gain.channelCount = this.state.mono ? 1 : 2;\n gain.channelInterpretation = 'speakers';\n if (ctx.state === 'suspended') void ctx.resume().catch(() => {});\n }\n\n private readonly resumeAudio = (): void => {\n if (this.graph?.ctx.state === 'suspended') void this.graph.ctx.resume().catch(() => {});\n };\n\n // ── Kalıcılık ──\n\n private restore(): void {\n if (this.options.remember === false) return;\n try {\n const saved = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? 'null') as Partial<AccessibilityState> | null;\n if (!saved) return;\n if (saved.filter && this.filters.includes(saved.filter)) this.state.filter = saved.filter;\n if (typeof saved.mono === 'boolean' && this.boostLevels.length) this.state.mono = saved.mono;\n if (typeof saved.boost === 'number' && this.boostLevels.includes(saved.boost)) this.state.boost = saved.boost;\n if (typeof saved.largeControls === 'boolean' && this.options.largeControls !== false) this.state.largeControls = saved.largeControls;\n // Yakınlaştırma bilerek hatırlanmaz — bir sonraki videoda kadrajı kaçırmasın.\n } catch {\n /* gizli sekme / bozuk kayıt — varsayılanlar */\n }\n }\n\n private save(): void {\n if (this.options.remember === false) return;\n try {\n const { filter, mono, boost, largeControls } = this.state;\n localStorage.setItem(STORAGE_KEY, JSON.stringify({ filter, mono, boost, largeControls }));\n } catch {\n /* depolama yok — yalnızca bu oturum */\n }\n }\n\n // ── Yakınlaştırma: sürükle, iki parmak ──\n\n private readonly onPointerDown = (e: PointerEvent): void => {\n const target = e.composedPath()[0];\n if (target instanceof Element && target.closest(CONTROL_SELECTOR)) return;\n if (e.pointerType === 'touch') {\n this.touches.set(e.pointerId, { x: e.clientX, y: e.clientY });\n if (this.touches.size === 2) {\n this.pinch = { dist: this.touchDistance(), zoom: this.state.zoom };\n this.drag = null;\n return;\n }\n }\n if (this.state.zoom <= 1 || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this.drag = { id: e.pointerId, x: e.clientX, y: e.clientY, panX: this.panX, panY: this.panY };\n };\n\n private readonly onPointerMove = (e: PointerEvent): void => {\n if (e.pointerType === 'touch' && this.touches.has(e.pointerId)) this.touches.set(e.pointerId, { x: e.clientX, y: e.clientY });\n if (this.pinch && this.touches.size === 2) {\n const max = this.zoomLevels[this.zoomLevels.length - 1]!;\n const z = Math.min(max, Math.max(1, (this.pinch.zoom * this.touchDistance()) / this.pinch.dist));\n this.state.zoom = Math.round(z * 100) / 100;\n if (this.state.zoom <= 1) this.panX = this.panY = 0;\n this.applyZoom();\n return;\n }\n if (!this.drag || this.drag.id !== e.pointerId) return;\n const v = this.ctx.videoEl;\n const z = this.state.zoom;\n const maxX = ((z - 1) * v.clientWidth) / 2 || 1;\n const maxY = ((z - 1) * v.clientHeight) / 2 || 1;\n // Görüntü parmağı / imleci takip eder (sağa sürükle → görüntü sağa → sol taraf görünür).\n this.panX = clamp(this.drag.panX - (e.clientX - this.drag.x) / maxX);\n this.panY = clamp(this.drag.panY - (e.clientY - this.drag.y) / maxY);\n this.applyZoom();\n };\n\n private readonly onPointerUp = (e: PointerEvent): void => {\n this.touches.delete(e.pointerId);\n if (this.pinch && this.touches.size < 2) {\n this.pinch = null;\n this.syncQuickButtons();\n // İki parmakla serbest büyütme bitince olay / kayıt bir kez.\n this.ctx.hostEl.dispatchEvent(new CustomEvent('hp:accessibility', { detail: { ...this.state, changed: 'zoom' } }));\n }\n if (this.drag?.id === e.pointerId) {\n // Gerçekten sürüklendiyse ardından gelen tık oynat / duraklat sayılmasın (oynat butonu bütün alanı kaplayabiliyor).\n if (Math.hypot(e.clientX - this.drag.x, e.clientY - this.drag.y) > DRAG_THRESHOLD_PX) this.swallowNextClick();\n this.drag = null;\n }\n };\n\n private swallowNextClick(): void {\n const area = this.ctx.videoAreaEl;\n const swallow = (ev: Event): void => {\n ev.stopPropagation();\n ev.preventDefault();\n };\n area.addEventListener('click', swallow, { capture: true, once: true });\n // Tık hiç gelmezse (ör. dokunmatik) sonraki gerçek tık yutulmasın.\n setTimeout(() => area.removeEventListener('click', swallow, { capture: true }), 400);\n }\n\n private touchDistance(): number {\n const [a, b] = [...this.touches.values()];\n return a && b ? Math.hypot(a.x - b.x, a.y - b.y) || 1 : 1;\n }\n\n // ── Klavye ──\n\n private readonly onKeyDown = (e: KeyboardEvent): void => {\n if (e.defaultPrevented || e.ctrlKey || e.metaKey || e.altKey) return;\n if (this.shortcutsEl && e.key === 'Escape') {\n e.preventDefault();\n this.closeShortcuts();\n return;\n }\n if (e.key === '?' && this.options.shortcuts !== false) {\n e.preventDefault();\n if (this.shortcutsEl) this.closeShortcuts();\n else this.openShortcuts();\n return;\n }\n if (this.zoomLevels.length < 2) return;\n if (e.key === '+' || e.key === '=') {\n e.preventDefault();\n this.setZoom(this.zoomLevels.find((z) => z > this.state.zoom + 0.001) ?? this.state.zoom);\n } else if (e.key === '-' || e.key === '_') {\n e.preventDefault();\n this.setZoom([...this.zoomLevels].reverse().find((z) => z < this.state.zoom - 0.001) ?? 1);\n } else if (e.key === '0' && this.state.zoom > 1) {\n e.preventDefault();\n this.setZoom(1);\n } else if (e.shiftKey && this.state.zoom > 1 && e.key.startsWith('Arrow')) {\n // Shift + ok: yakınlaştırılmış görüntüde gezin (oklar tek başına sarma / ses olarak kalır).\n e.preventDefault();\n if (e.key === 'ArrowLeft') this.panX = clamp(this.panX - PAN_STEP);\n if (e.key === 'ArrowRight') this.panX = clamp(this.panX + PAN_STEP);\n if (e.key === 'ArrowUp') this.panY = clamp(this.panY - PAN_STEP);\n if (e.key === 'ArrowDown') this.panY = clamp(this.panY + PAN_STEP);\n this.applyZoom();\n }\n };\n\n // ── Kısayol paneli ──\n\n private openShortcuts(): void {\n if (this.shortcutsEl) return;\n const t = this.ctx.i18n;\n const el = document.createElement('div');\n el.className = 'hp-shortcuts';\n el.setAttribute('part', 'shortcuts');\n el.setAttribute('role', 'dialog');\n el.setAttribute('aria-modal', 'true');\n el.setAttribute('aria-labelledby', 'hp-shortcuts-title');\n\n const box = document.createElement('div');\n box.className = 'hp-shortcuts-box';\n const head = document.createElement('div');\n head.className = 'hp-shortcuts-head';\n const title = document.createElement('h2');\n title.id = 'hp-shortcuts-title';\n title.textContent = t.a11yShortcuts;\n const close = document.createElement('button');\n close.type = 'button';\n close.className = 'hp-shortcuts-close';\n close.setAttribute('aria-label', t.a11yClose);\n close.textContent = '✕';\n close.addEventListener('click', () => this.closeShortcuts());\n head.append(title, close);\n\n const rows: [string[], string][] = [\n [['Space', 'K'], t.a11yKeyPlay],\n [['←', '→', 'J', 'L'], t.a11yKeySeek(this.ctx.seekStep())],\n [['↑', '↓'], t.a11yKeyVolume],\n [['M'], t.a11yKeyMute],\n [['F'], t.a11yKeyFullscreen],\n ];\n if (this.zoomLevels.length > 1) {\n rows.push([['+', '−', '0'], t.a11yKeyZoom]);\n rows.push([['Shift', '+', '←↑↓→'], t.a11yKeyPan]);\n }\n rows.push([['?'], t.a11yKeyShortcuts]);\n\n const list = document.createElement('dl');\n list.className = 'hp-shortcuts-list';\n for (const [keys, desc] of rows) {\n const dt = document.createElement('dt');\n for (const k of keys) {\n if (k === '+' && keys[0] === 'Shift') {\n dt.append(' + ');\n continue;\n }\n const kbd = document.createElement('kbd');\n kbd.textContent = k;\n dt.appendChild(kbd);\n }\n const dd = document.createElement('dd');\n dd.textContent = desc;\n list.append(dt, dd);\n }\n box.append(head, list);\n el.appendChild(box);\n // Arka plana tıklama kapatır; panelin içindeki tıklama oynat/duraklat'a geçmez.\n el.addEventListener('click', (e) => {\n e.stopPropagation();\n if (e.target === el) this.closeShortcuts();\n });\n for (const ev of ['pointerdown', 'mousedown', 'mouseup', 'touchstart', 'touchend', 'dblclick'] as const) el.addEventListener(ev, (e) => e.stopPropagation());\n // Odak paneli terk etmesin (Tab tek butonda kalır).\n el.addEventListener('keydown', (e) => {\n if (e.key === 'Tab') {\n e.preventDefault();\n close.focus();\n }\n });\n this.ctx.videoAreaEl.appendChild(el);\n this.shortcutsEl = el;\n close.focus({ preventScroll: true });\n }\n\n private closeShortcuts(): void {\n if (!this.shortcutsEl) return;\n const hadFocus = this.shortcutsEl.contains((this.ctx.hostEl.shadowRoot ?? document).activeElement);\n this.shortcutsEl.remove();\n this.shortcutsEl = null;\n if (hadFocus) this.ctx.hostEl.focus({ preventScroll: true });\n }\n}\n\nfunction normalizeLevels(levels: number[]): number[] {\n const valid = levels.filter((n) => Number.isFinite(n) && n >= 1 && n <= 8);\n return [...new Set([1, ...valid])].sort((a, b) => a - b);\n}\n\nconst clamp = (n: number): number => Math.min(1, Math.max(-1, n));\nconst pct = (n: number): string => `${Math.round(n * 100)}%`;\n","import { Accessibility, type AccessibilityPlayerContext } from './Accessibility';\nimport type { AccessibilityOptions } from '../../types';\n\nexport function installAccessibility(ctx: AccessibilityPlayerContext, options: AccessibilityOptions): Accessibility {\n return new Accessibility(ctx, options);\n}\n\nexport { Accessibility };\nexport type { AccessibilityPlayerContext };\n"],"names":["SIMULATE","SHIFT","I","mul","a","b","r","i","j","daltonizeMatrix","kind","s","err","v","shifted","cache","colorBlindFilterUrl","url","m","n","svg","DEFAULT_ZOOM","DEFAULT_BOOST","ALL_FILTERS","STORAGE_KEY","PAN_STEP","SUBMENU_KEY","DRAG_THRESHOLD_PX","CONTROL_SELECTOR","CSS_FILTERS","body","QUICK_ICONS","Accessibility","ctx","options","__publicField","z","maxX","maxY","_a","e","target","max","clamp","normalizeLevels","f","area","btn","items","sub","label","value","children","pct","ok","key","title","t","specs","spec","src","source","gain","saved","filter","mono","boost","largeControls","swallow","ev","el","box","head","close","rows","list","keys","desc","dt","k","kbd","dd","hadFocus","levels","valid","installAccessibility"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  var P = Object.defineProperty;
2
2
  var k = (d, e, t) => e in d ? P(d, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[e] = t;
3
3
  var r = (d, e, t) => k(d, typeof e != "symbol" ? e + "" : e, t);
4
- import { t as E, g as M, m as L } from "./player-DW5iWvPs.js";
4
+ import { t as E, g as M, m as L } from "./player-808ZzJ0g.js";
5
5
  const x = 8e3;
6
6
  class C {
7
7
  constructor(e) {
@@ -819,4 +819,4 @@ export {
819
819
  _ as AdsController,
820
820
  G as installAds
821
821
  };
822
- //# sourceMappingURL=ads-MCG5a6eK.js.map
822
+ //# sourceMappingURL=ads-CktoJVGs.js.map