@hopeplayer/core 1.0.12 → 1.0.14

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 (48) hide show
  1. package/dist/HopePlayerElement.d.ts +5 -0
  2. package/dist/HopePlayerElement.d.ts.map +1 -1
  3. package/dist/chunks/ScratchSound-0XKHUcJK.js +174 -0
  4. package/dist/chunks/ScratchSound-0XKHUcJK.js.map +1 -0
  5. package/dist/chunks/{index-Br_RybXV.js → index-BCMVXNL0.js} +71 -61
  6. package/dist/chunks/index-BCMVXNL0.js.map +1 -0
  7. package/dist/chunks/{index-DBwvWiuK.js → index-BTBAxNjr.js} +2 -2
  8. package/dist/chunks/{index-DBwvWiuK.js.map → index-BTBAxNjr.js.map} +1 -1
  9. package/dist/chunks/index-BeJNpAyx.js +326 -0
  10. package/dist/chunks/index-BeJNpAyx.js.map +1 -0
  11. package/dist/chunks/{index-nvfNBIM_.js → index-C2c71cGP.js} +2 -2
  12. package/dist/chunks/{index-nvfNBIM_.js.map → index-C2c71cGP.js.map} +1 -1
  13. package/dist/chunks/{index-adiWYyto.js → index-DcVUXkXo.js} +2 -2
  14. package/dist/chunks/{index-adiWYyto.js.map → index-DcVUXkXo.js.map} +1 -1
  15. package/dist/chunks/{index-C3s21eZa.js → index-DtqNHU7Y.js} +2 -2
  16. package/dist/chunks/{index-C3s21eZa.js.map → index-DtqNHU7Y.js.map} +1 -1
  17. package/dist/chunks/{index-_-pYIxvh.js → index-Dy0Th0is.js} +2 -2
  18. package/dist/chunks/{index-_-pYIxvh.js.map → index-Dy0Th0is.js.map} +1 -1
  19. package/dist/chunks/{index-D2aXO0eh.js → index-Dz0E1YPE.js} +610 -486
  20. package/dist/chunks/index-Dz0E1YPE.js.map +1 -0
  21. package/dist/controls/ControlBar.d.ts +17 -0
  22. package/dist/controls/ControlBar.d.ts.map +1 -1
  23. package/dist/controls/SeekBar.d.ts +8 -0
  24. package/dist/controls/SeekBar.d.ts.map +1 -1
  25. package/dist/controls/SettingsMenu.d.ts +4 -0
  26. package/dist/controls/SettingsMenu.d.ts.map +1 -1
  27. package/dist/hls/SourceManager.d.ts +2 -0
  28. package/dist/hls/SourceManager.d.ts.map +1 -1
  29. package/dist/hope-player.js +1 -1
  30. package/dist/i18n/locales/en.d.ts.map +1 -1
  31. package/dist/i18n/locales/tr.d.ts.map +1 -1
  32. package/dist/i18n/types.d.ts +2 -0
  33. package/dist/i18n/types.d.ts.map +1 -1
  34. package/dist/plugins/ads/AdsController.d.ts +2 -0
  35. package/dist/plugins/ads/AdsController.d.ts.map +1 -1
  36. package/dist/plugins/audio/AudioStage.d.ts +89 -0
  37. package/dist/plugins/audio/AudioStage.d.ts.map +1 -0
  38. package/dist/plugins/audio/ScratchSound.d.ts +48 -0
  39. package/dist/plugins/audio/ScratchSound.d.ts.map +1 -0
  40. package/dist/plugins/audio/index.d.ts +7 -0
  41. package/dist/plugins/audio/index.d.ts.map +1 -0
  42. package/dist/plugins/audio/vinylSvg.d.ts +12 -0
  43. package/dist/plugins/audio/vinylSvg.d.ts.map +1 -0
  44. package/dist/types/index.d.ts +63 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunks/index-Br_RybXV.js.map +0 -1
  48. package/dist/chunks/index-D2aXO0eh.js.map +0 -1
@@ -56,6 +56,9 @@ export declare class HopePlayerElement extends HTMLElement {
56
56
  private adsController;
57
57
  private gestureControls;
58
58
  private loopSection;
59
+ private audioStage;
60
+ /** options.audio — kapak + plak sahnesi, kontroller hep görünür, tam ekran yok. */
61
+ private audioMode;
59
62
  private inViewAutoplay;
60
63
  private unregisterSticky;
61
64
  private playlistRunner;
@@ -244,6 +247,8 @@ export declare class HopePlayerElement extends HTMLElement {
244
247
  /** Fare kıpırdadı: imleci göster, hareketsiz kalırsa gizlemek için sayacı yeniden kur (tailwind.css `:host([data-cursor-hidden])`). */
245
248
  private scheduleCursorHide;
246
249
  private showCursor;
250
+ /** options.audio: sahneyi kurar, günceller (konum / boyut / devir canlı değişebilir) ya da kaldırır. */
251
+ private applyAudioMode;
247
252
  /** Ads plugin'ini bir kez kurar; erken (paralel) başlatılan kurulum varsa onu bekler. */
248
253
  private installAdsOnce;
249
254
  /** Preroll beklemesi başladı / bitti: halka döner, toolbar görünür kalır, oynat butonu "duraklat" görünür. */
@@ -1 +1 @@
1
- {"version":3,"file":"HopePlayerElement.d.ts","sourceRoot":"","sources":["../src/HopePlayerElement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAuC,KAAK,kBAAkB,EAA+C,MAAM,qBAAqB,CAAC;AAuBhJ,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA0C5C,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AAWpD,gHAAgH;AAChH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,4CAA4C;IAC5C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAAQ;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,0GAA0G;IAC1G,OAAO,CAAC,UAAU,CAA8B;IAChD,2GAA2G;IAC3G,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,oFAAoF;IACpF,OAAO,CAAC,iBAAiB,CAA+C;IACxE,6CAA6C;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAS;IAC7B,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,2GAA2G;IAC3G,OAAO,CAAC,eAAe,CAAW;IAClC,4DAA4D;IAC5D,OAAO,CAAC,WAAW,CAA4B;IAC/C,oGAAoG;IACpG,OAAO,CAAC,cAAc,CAAK;IAC3B,kFAAkF;IAClF,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,cAAc,CAAuB;IAC7C,2FAA2F;IAC3F,OAAO,CAAC,aAAa,CAAiD;IACtE,6HAA6H;IAC7H,OAAO,CAAC,kBAAkB,CAAS;IACnC,kCAAkC;IAClC,OAAO,CAAC,YAAY,CAAuB;IAC3C,kHAAkH;IAClH,OAAO,CAAC,YAAY,CAA0C;IAC9D,qFAAqF;IACrF,OAAO,CAAC,aAAa,CAAqC;IAC1D,oEAAoE;IACpE,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,WAAW,CAA8E;IACjG;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAAkC;IAChE,OAAO,CAAC,sBAAsB,CAAS;IACvC;;;OAGG;IACH,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAA8C;IACpE;;;OAGG;IACH,OAAO,CAAC,UAAU,CAA8D;IAChF;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,WAAW,CAA8C;IACjE,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAA+C;IACxE,gIAAgI;IAChI,OAAO,CAAC,mBAAmB,CAAS;IACpC,uFAAuF;IACvF,OAAO,CAAC,iBAAiB,CAAS;IAClC,mEAAmE;IACnE,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IACtB,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgD;IACrE,6HAA6H;IAC7H,OAAO,CAAC,UAAU,CAAQ;;IA8I1B,iBAAiB,IAAI,IAAI;IAwDzB,oBAAoB,IAAI,IAAI;IAiE5B,4FAA4F;IAC5F,WAAW,IAAI,OAAO;IAItB,wBAAwB,IAAI,IAAI;IAIhC,IAAI,OAAO,IAAI,iBAAiB,CAE/B;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAWnC;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,KAAK,IAAI,IAAI;IAIb,gHAAgH;IAChH,IAAI,cAAc,IAAI,kBAAkB,CAEvC;IAED,kCAAkC;IAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,SAAuB;IAE9C,oGAAoG;IACpG,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,mFAAmF;IAC7E,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW3B;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,6HAA6H;IACvH,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAEjC;IAEF,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAY5B;IAEF,8GAA8G;IAC9G,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,CAEpB;IAED,kNAAkN;IAClN,YAAY,IAAI,IAAI;IAIpB,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAEnC;IAED,iBAAiB,IAAI,IAAI;IAIzB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,gBAAgB;YAoBV,YAAY;IAuE1B,6FAA6F;YAC/E,uBAAuB;YAkDvB,YAAY;IAqQ1B,oGAAoG;IACpG,OAAO,CAAC,eAAe;IAkCvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAYxB,2FAA2F;IAC3F,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAkBjC;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW3B;IAEF,sGAAsG;IACtG,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAexC;IAEF,+GAA+G;IAC/G,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAelC;IAEF,qJAAqJ;IACrJ,OAAO,CAAC,sBAAsB;IAgD9B,6HAA6H;IAC7H,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,yBAAyB;IAQjC,uEAAuE;YACzD,mBAAmB;IASjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAoBjC;IAIF,mHAAmH;IACnH,OAAO,KAAK,QAAQ,GAMnB;IAED,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAIjC;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,KAAK,eAAe,GAE1B;IACD,OAAO,KAAK,mBAAmB,GAG9B;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CASrB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAUtB;IAEF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAIjC;IAEF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAMhC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CA4B9B;IAEF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAgCxB,qGAAqG;IACrG,OAAO,CAAC,cAAc;IAMtB,uGAAuG;IACvG,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAEjC;IAEF,OAAO,CAAC,UAAU;IAIlB,+GAA+G;IAC/G,OAAO,CAAC,gBAAgB;IAQxB,iHAAiH;IACjH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,QAAQ,GAAG,SAAoB,GAAG,IAAI;IAgBrE,gGAAgG;IAChG,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA0BhC,yIAAyI;IACzI,cAAc,IAAI,IAAI;IAMtB,aAAa,IAAI,IAAI;IAMrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAY5B;IAEF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;IAEF,uIAAuI;IACvI,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,UAAU;IAMlB,yFAAyF;IACzF,OAAO,CAAC,cAAc;IAgDtB,8GAA8G;IAC9G,OAAO,CAAC,mBAAmB;IAU3B,wFAAwF;IACxF,OAAO,CAAC,iBAAiB;IAMzB,+GAA+G;IAC/G,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAS/B;CACL"}
1
+ {"version":3,"file":"HopePlayerElement.d.ts","sourceRoot":"","sources":["../src/HopePlayerElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ var c = Object.defineProperty;
2
+ var u = (a, t, e) => t in a ? c(a, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[t] = e;
3
+ var n = (a, t, e) => u(a, typeof t != "symbol" ? t + "" : t, e);
4
+ const g = 900;
5
+ const d = `
6
+ class HopeScratchProcessor extends AudioWorkletProcessor {
7
+ constructor() {
8
+ super();
9
+ this.channels = null;
10
+ this.length = 0;
11
+ this.ratio = 1;
12
+ this.pos = 0;
13
+ this.target = 0;
14
+ this.rate = 0;
15
+ this.active = false;
16
+ this.blocks = 0;
17
+ this.port.onmessage = (e) => {
18
+ const d = e.data;
19
+ if (d.type === 'buffer') {
20
+ this.channels = d.channels;
21
+ this.length = d.channels[0].length;
22
+ this.ratio = d.sampleRate / sampleRate;
23
+ } else if (d.type === 'start') {
24
+ this.pos = this.target = d.position * (this.ratio * sampleRate);
25
+ this.rate = 0;
26
+ this.active = true;
27
+ } else if (d.type === 'target') {
28
+ this.target = Math.max(0, Math.min(this.length - 1, d.position * (this.ratio * sampleRate)));
29
+ } else if (d.type === 'stop') {
30
+ this.active = false;
31
+ }
32
+ };
33
+ }
34
+ process(inputs, outputs) {
35
+ const out = outputs[0];
36
+ const frames = out[0].length;
37
+ if (!this.active || !this.channels) {
38
+ for (const ch of out) ch.fill(0);
39
+ return true;
40
+ }
41
+ const src = this.channels;
42
+ const last = this.length - 1;
43
+ // Okuma kafası hedefe ~25 ms'lik bir gecikmeyle yaklaşır; hız değişimi ~5 ms'de yumuşatılır.
44
+ const lag = 0.025 * sampleRate;
45
+ const smooth = 1 / (0.005 * sampleRate);
46
+ const maxRate = 8 * this.ratio;
47
+ for (let i = 0; i < frames; i++) {
48
+ let want = (this.target - this.pos) / lag;
49
+ if (want > maxRate) want = maxRate;
50
+ else if (want < -maxRate) want = -maxRate;
51
+ this.rate += (want - this.rate) * smooth;
52
+ const p = this.pos;
53
+ const i0 = p | 0;
54
+ const f = p - i0;
55
+ const i1 = i0 < last ? i0 + 1 : last;
56
+ for (let c = 0; c < out.length; c++) {
57
+ const ch = src[c < src.length ? c : src.length - 1];
58
+ out[c][i] = ch[i0] + (ch[i1] - ch[i0]) * f;
59
+ }
60
+ let next = p + this.rate;
61
+ if (next < 0) next = 0;
62
+ else if (next > last) next = last;
63
+ this.pos = next;
64
+ }
65
+ if (++this.blocks % 8 === 0) this.port.postMessage({ type: 'position', position: this.pos / (this.ratio * sampleRate) });
66
+ return true;
67
+ }
68
+ }
69
+ registerProcessor('hope-scratch', HopeScratchProcessor);
70
+ `;
71
+ class l {
72
+ constructor(t) {
73
+ n(this, "ctx", null);
74
+ n(this, "node", null);
75
+ n(this, "gain", null);
76
+ n(this, "loadedSrc", "");
77
+ n(this, "loading", null);
78
+ n(this, "unsupportedSrc", "");
79
+ n(this, "playing", !1);
80
+ /** İşlemcinin bildirdiği son okuma konumu (sn) — teşhis / test için. */
81
+ n(this, "lastPosition", 0);
82
+ n(this, "onStateChange", null);
83
+ this.video = t;
84
+ }
85
+ static isSupported() {
86
+ return typeof AudioContext < "u" && typeof AudioWorkletNode < "u" && "audioWorklet" in AudioContext.prototype;
87
+ }
88
+ /** Şu anki kaynak hazır mı (çözüldü + işlemci kuruldu)? */
89
+ get ready() {
90
+ return !!this.node && this.loadedSrc === this.currentSrc();
91
+ }
92
+ currentSrc() {
93
+ return this.video.currentSrc || "";
94
+ }
95
+ /**
96
+ * Kaynağı çözer ve işlemciyi kurar (kaynak başına bir kez). Kullanıcı etkileşimi gerektirmez — çalma başlayınca
97
+ * boşta çağrılır ki ilk scratch'te gecikme olmasın.
98
+ */
99
+ prepare() {
100
+ var e;
101
+ const t = this.currentSrc();
102
+ return this.ready ? Promise.resolve(!0) : !t || t === this.unsupportedSrc ? Promise.resolve(!1) : this.loading ? this.loading : (this.loading = this.load(t).then((s) => {
103
+ var o;
104
+ return s || (this.unsupportedSrc = t), (o = this.onStateChange) == null || o.call(this, s ? "ready" : "unsupported"), s;
105
+ }).finally(() => {
106
+ this.loading = null;
107
+ }), (e = this.onStateChange) == null || e.call(this, "loading"), this.loading);
108
+ }
109
+ async load(t) {
110
+ if (!l.isSupported() || t.startsWith("blob:") || /\.m3u8(\?|#|$)/i.test(t)) return !1;
111
+ const e = this.video.duration;
112
+ if (!Number.isFinite(e) || e <= 0 || e > 900) return !1;
113
+ try {
114
+ this.ctx ?? (this.ctx = new AudioContext({ latencyHint: "interactive" }));
115
+ const s = this.ctx;
116
+ if (!this.node) {
117
+ const i = URL.createObjectURL(new Blob([d], { type: "application/javascript" }));
118
+ try {
119
+ await s.audioWorklet.addModule(i);
120
+ } finally {
121
+ URL.revokeObjectURL(i);
122
+ }
123
+ }
124
+ const o = await fetch(t, { credentials: "same-origin" });
125
+ if (!o.ok) return !1;
126
+ const r = await s.decodeAudioData(await o.arrayBuffer());
127
+ if (t !== this.currentSrc()) return !1;
128
+ this.node || (this.gain = s.createGain(), this.gain.gain.value = 0, this.gain.connect(s.destination), this.node = new AudioWorkletNode(s, "hope-scratch", { numberOfInputs: 0, outputChannelCount: [Math.min(2, r.numberOfChannels)] }), this.node.port.onmessage = (i) => {
129
+ i.data.type === "position" && (this.lastPosition = i.data.position);
130
+ }, this.node.connect(this.gain));
131
+ const h = [];
132
+ for (let i = 0; i < Math.min(2, r.numberOfChannels); i++) h.push(r.getChannelData(i).slice());
133
+ return this.node.port.postMessage({ type: "buffer", channels: h, sampleRate: r.sampleRate }, h.map((i) => i.buffer)), this.loadedSrc = t, !0;
134
+ } catch {
135
+ return !1;
136
+ }
137
+ }
138
+ /** Plak tutuldu. Kullanıcı etkileşimi (pointerdown) içinde çağrılmalı — AudioContext'i başlatır. */
139
+ start(t) {
140
+ if (!this.ready || !this.ctx || !this.node || !this.gain) return;
141
+ this.ctx.resume().catch(() => {
142
+ });
143
+ const e = this.video.muted ? 0 : this.video.volume, s = this.ctx.currentTime;
144
+ this.gain.gain.cancelScheduledValues(s), this.gain.gain.setValueAtTime(0, s), this.gain.gain.linearRampToValueAtTime(e, s + 0.015), this.node.port.postMessage({ type: "start", position: t }), this.lastPosition = t, this.playing = !0;
145
+ }
146
+ /** Parmağın gösterdiği konum (sn). */
147
+ setTarget(t) {
148
+ !this.playing || !this.node || this.node.port.postMessage({ type: "target", position: t });
149
+ }
150
+ /** Plak bırakıldı: kısa bir sönümle sus (çıtırtı olmasın). */
151
+ stop() {
152
+ if (!this.playing || !this.ctx || !this.node || !this.gain) return;
153
+ this.playing = !1;
154
+ const t = this.ctx.currentTime;
155
+ this.gain.gain.cancelScheduledValues(t), this.gain.gain.setValueAtTime(this.gain.gain.value, t), this.gain.gain.linearRampToValueAtTime(0, t + 0.015);
156
+ const e = this.node;
157
+ setTimeout(() => {
158
+ this.playing || e.port.postMessage({ type: "stop" });
159
+ }, 0.015 * 1e3 + 10);
160
+ }
161
+ get active() {
162
+ return this.playing;
163
+ }
164
+ destroy() {
165
+ var t, e, s;
166
+ this.playing = !1, (t = this.node) == null || t.disconnect(), (e = this.gain) == null || e.disconnect(), this.node = null, this.gain = null, (s = this.ctx) == null || s.close().catch(() => {
167
+ }), this.ctx = null;
168
+ }
169
+ }
170
+ export {
171
+ g as SCRATCH_SOUND_MAX_SECONDS,
172
+ l as ScratchSound
173
+ };
174
+ //# sourceMappingURL=ScratchSound-0XKHUcJK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScratchSound-0XKHUcJK.js","sources":["../../src/plugins/audio/ScratchSound.ts"],"sourcesContent":["/**\n * Plak scratch sesi (options.audio.vinyl.scratchSound). `<audio>/<video>` geriye çalamaz ve sarma sırasında ses vermez;\n * bu yüzden scratch boyunca ses Web Audio ile üretilir: dosya bir kez ham sese çözülür, bir AudioWorklet bu sesi\n * parmağın gösterdiği konuma doğru (ileri / geri, yavaş / hızlı) okur — parmak durunca okuma da durur, ses kesilir.\n *\n * Konum güdümlü: işlemciye hız değil hedef konum verilir; okuma kafası hedefe kısa bir gecikmeyle (yay gibi) yaklaşır.\n * Böylece ses ile plağın açısı hiçbir zaman birbirinden kaymaz ve hız değişimleri yumuşak duyulur.\n *\n * Desteklenmeyen durumlarda (HLS / MediaSource, çok uzun dosya, CORS izni yok, AudioWorklet yok) `prepare()` false\n * döner ve scratch eskisi gibi sessiz çalışır.\n */\n\n/** Bundan uzun dosyalar çözülmez — çözülmüş ses dakikada ~10 MB yer kaplar. */\nexport const SCRATCH_SOUND_MAX_SECONDS = 15 * 60;\nconst FADE_SECONDS = 0.015;\n\nconst WORKLET_SOURCE = `\nclass HopeScratchProcessor extends AudioWorkletProcessor {\n constructor() {\n super();\n this.channels = null;\n this.length = 0;\n this.ratio = 1;\n this.pos = 0;\n this.target = 0;\n this.rate = 0;\n this.active = false;\n this.blocks = 0;\n this.port.onmessage = (e) => {\n const d = e.data;\n if (d.type === 'buffer') {\n this.channels = d.channels;\n this.length = d.channels[0].length;\n this.ratio = d.sampleRate / sampleRate;\n } else if (d.type === 'start') {\n this.pos = this.target = d.position * (this.ratio * sampleRate);\n this.rate = 0;\n this.active = true;\n } else if (d.type === 'target') {\n this.target = Math.max(0, Math.min(this.length - 1, d.position * (this.ratio * sampleRate)));\n } else if (d.type === 'stop') {\n this.active = false;\n }\n };\n }\n process(inputs, outputs) {\n const out = outputs[0];\n const frames = out[0].length;\n if (!this.active || !this.channels) {\n for (const ch of out) ch.fill(0);\n return true;\n }\n const src = this.channels;\n const last = this.length - 1;\n // Okuma kafası hedefe ~25 ms'lik bir gecikmeyle yaklaşır; hız değişimi ~5 ms'de yumuşatılır.\n const lag = 0.025 * sampleRate;\n const smooth = 1 / (0.005 * sampleRate);\n const maxRate = 8 * this.ratio;\n for (let i = 0; i < frames; i++) {\n let want = (this.target - this.pos) / lag;\n if (want > maxRate) want = maxRate;\n else if (want < -maxRate) want = -maxRate;\n this.rate += (want - this.rate) * smooth;\n const p = this.pos;\n const i0 = p | 0;\n const f = p - i0;\n const i1 = i0 < last ? i0 + 1 : last;\n for (let c = 0; c < out.length; c++) {\n const ch = src[c < src.length ? c : src.length - 1];\n out[c][i] = ch[i0] + (ch[i1] - ch[i0]) * f;\n }\n let next = p + this.rate;\n if (next < 0) next = 0;\n else if (next > last) next = last;\n this.pos = next;\n }\n if (++this.blocks % 8 === 0) this.port.postMessage({ type: 'position', position: this.pos / (this.ratio * sampleRate) });\n return true;\n }\n}\nregisterProcessor('hope-scratch', HopeScratchProcessor);\n`;\n\ntype State = 'idle' | 'loading' | 'ready' | 'unsupported';\n\nexport class ScratchSound {\n private ctx: AudioContext | null = null;\n private node: AudioWorkletNode | null = null;\n private gain: GainNode | null = null;\n private loadedSrc = '';\n private loading: Promise<boolean> | null = null;\n private unsupportedSrc = '';\n private playing = false;\n /** İşlemcinin bildirdiği son okuma konumu (sn) — teşhis / test için. */\n lastPosition = 0;\n onStateChange: ((state: State) => void) | null = null;\n\n constructor(private readonly video: HTMLMediaElement) {}\n\n static isSupported(): boolean {\n return typeof AudioContext !== 'undefined' && typeof AudioWorkletNode !== 'undefined' && 'audioWorklet' in AudioContext.prototype;\n }\n\n /** Şu anki kaynak hazır mı (çözüldü + işlemci kuruldu)? */\n get ready(): boolean {\n return !!this.node && this.loadedSrc === this.currentSrc();\n }\n\n private currentSrc(): string {\n return this.video.currentSrc || '';\n }\n\n /**\n * Kaynağı çözer ve işlemciyi kurar (kaynak başına bir kez). Kullanıcı etkileşimi gerektirmez — çalma başlayınca\n * boşta çağrılır ki ilk scratch'te gecikme olmasın.\n */\n prepare(): Promise<boolean> {\n const src = this.currentSrc();\n if (this.ready) return Promise.resolve(true);\n if (!src || src === this.unsupportedSrc) return Promise.resolve(false);\n if (this.loading) return this.loading;\n this.loading = this.load(src)\n .then((ok) => {\n if (!ok) this.unsupportedSrc = src;\n this.onStateChange?.(ok ? 'ready' : 'unsupported');\n return ok;\n })\n .finally(() => {\n this.loading = null;\n });\n this.onStateChange?.('loading');\n return this.loading;\n }\n\n private async load(src: string): Promise<boolean> {\n // HLS (MediaSource / blob:) parça parça gelir — tek dosya olarak çözülemez.\n if (!ScratchSound.isSupported() || src.startsWith('blob:') || /\\.m3u8(\\?|#|$)/i.test(src)) return false;\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration <= 0 || duration > SCRATCH_SOUND_MAX_SECONDS) return false;\n try {\n this.ctx ??= new AudioContext({ latencyHint: 'interactive' });\n const ctx = this.ctx;\n if (!this.node) {\n const url = URL.createObjectURL(new Blob([WORKLET_SOURCE], { type: 'application/javascript' }));\n try {\n await ctx.audioWorklet.addModule(url);\n } finally {\n URL.revokeObjectURL(url);\n }\n }\n // Başka sunucudaki dosya için o sunucunun CORS izni gerekir; yoksa fetch reddedilir.\n const res = await fetch(src, { credentials: 'same-origin' });\n if (!res.ok) return false;\n const buffer = await ctx.decodeAudioData(await res.arrayBuffer());\n if (src !== this.currentSrc()) return false; // çözülürken kaynak değişti\n if (!this.node) {\n this.gain = ctx.createGain();\n this.gain.gain.value = 0;\n this.gain.connect(ctx.destination);\n this.node = new AudioWorkletNode(ctx, 'hope-scratch', { numberOfInputs: 0, outputChannelCount: [Math.min(2, buffer.numberOfChannels)] });\n this.node.port.onmessage = (e: MessageEvent<{ type: string; position: number }>) => {\n if (e.data.type === 'position') this.lastPosition = e.data.position;\n };\n this.node.connect(this.gain);\n }\n const channels: Float32Array[] = [];\n for (let c = 0; c < Math.min(2, buffer.numberOfChannels); c++) channels.push(buffer.getChannelData(c).slice());\n this.node.port.postMessage({ type: 'buffer', channels, sampleRate: buffer.sampleRate }, channels.map((ch) => ch.buffer));\n this.loadedSrc = src;\n return true;\n } catch {\n return false;\n }\n }\n\n /** Plak tutuldu. Kullanıcı etkileşimi (pointerdown) içinde çağrılmalı — AudioContext'i başlatır. */\n start(position: number): void {\n if (!this.ready || !this.ctx || !this.node || !this.gain) return;\n void this.ctx.resume().catch(() => {});\n const volume = this.video.muted ? 0 : this.video.volume;\n const now = this.ctx.currentTime;\n this.gain.gain.cancelScheduledValues(now);\n this.gain.gain.setValueAtTime(0, now);\n this.gain.gain.linearRampToValueAtTime(volume, now + FADE_SECONDS);\n this.node.port.postMessage({ type: 'start', position });\n this.lastPosition = position;\n this.playing = true;\n }\n\n /** Parmağın gösterdiği konum (sn). */\n setTarget(position: number): void {\n if (!this.playing || !this.node) return;\n this.node.port.postMessage({ type: 'target', position });\n }\n\n /** Plak bırakıldı: kısa bir sönümle sus (çıtırtı olmasın). */\n stop(): void {\n if (!this.playing || !this.ctx || !this.node || !this.gain) return;\n this.playing = false;\n const now = this.ctx.currentTime;\n this.gain.gain.cancelScheduledValues(now);\n this.gain.gain.setValueAtTime(this.gain.gain.value, now);\n this.gain.gain.linearRampToValueAtTime(0, now + FADE_SECONDS);\n const node = this.node;\n // Sönüm bitince işlemciyi durdur — o arada plak yeniden tutulduysa (hızlı tut-bırak-tut) yeni scratch'i kesme.\n setTimeout(() => {\n if (!this.playing) node.port.postMessage({ type: 'stop' });\n }, FADE_SECONDS * 1000 + 10);\n }\n\n get active(): boolean {\n return this.playing;\n }\n\n destroy(): void {\n this.playing = false;\n this.node?.disconnect();\n this.gain?.disconnect();\n this.node = null;\n this.gain = null;\n void this.ctx?.close().catch(() => {});\n this.ctx = null;\n }\n}\n"],"names":["SCRATCH_SOUND_MAX_SECONDS","WORKLET_SOURCE","ScratchSound","video","__publicField","_a","src","ok","duration","ctx","url","res","buffer","e","channels","c","ch","position","volume","now","node","_b","_c"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  var T = Object.defineProperty;
2
- var P = (l, e, t) => e in l ? T(l, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[e] = t;
3
- var r = (l, e, t) => P(l, typeof e != "symbol" ? e + "" : e, t);
2
+ var P = (d, e, t) => e in d ? T(d, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[e] = t;
3
+ var r = (d, e, t) => P(d, typeof e != "symbol" ? e + "" : e, t);
4
4
  class k {
5
5
  constructor(e) {
6
6
  /** Reklam yüzünden çıkılan yüzey — reklam bitince geri dönüş butonu için. */
@@ -60,8 +60,8 @@ class k {
60
60
  const M = "https://imasdk.googleapis.com/js/sdkloader/ima3.js";
61
61
  let g = null;
62
62
  function L() {
63
- var l;
64
- return (l = window.google) != null && l.ima ? Promise.resolve(window.google.ima) : g || (g = new Promise((e, t) => {
63
+ var d;
64
+ return (d = window.google) != null && d.ima ? Promise.resolve(window.google.ima) : g || (g = new Promise((e, t) => {
65
65
  const i = document.createElement("script");
66
66
  i.src = M, i.async = !0, i.onload = () => {
67
67
  var s;
@@ -69,7 +69,7 @@ function L() {
69
69
  }, i.onerror = () => t(new Error("IMA SDK yüklenemedi (reklam engelleyici olabilir)")), document.head.appendChild(i);
70
70
  }), g);
71
71
  }
72
- function C() {
72
+ function x() {
73
73
  var i;
74
74
  const e = (i = window.adTaxonomy) == null ? void 0 : i.keyValues;
75
75
  if (!e || typeof e != "object") return "";
@@ -78,9 +78,9 @@ function C() {
78
78
  a == null || a === "" || t.push(`${s}=${a}`);
79
79
  return t.join("&");
80
80
  }
81
- function x(l, e = {}) {
81
+ function C(d, e = {}) {
82
82
  const t = encodeURIComponent(document.referrer || window.location.href), i = encodeURIComponent(window.location.href), s = Date.now();
83
- let a = l;
83
+ let a = d;
84
84
  const o = {
85
85
  referrer_url: t,
86
86
  description_url: i,
@@ -91,17 +91,17 @@ function x(l, e = {}) {
91
91
  if (a.includes(h))
92
92
  a = a.replace(h, String(c));
93
93
  else if (!new URLSearchParams(a.split("?")[1]).has(n)) {
94
- const d = a.includes("?") ? "&" : "?";
95
- a += `${d}${n}=${c}`;
94
+ const l = a.includes("?") ? "&" : "?";
95
+ a += `${l}${n}=${c}`;
96
96
  }
97
97
  }
98
98
  try {
99
99
  const n = new URL(a);
100
- if (n.pathname.includes("/vmap/")) return l;
100
+ if (n.pathname.includes("/vmap/")) return d;
101
101
  const h = [];
102
102
  e.includeRefreshCount && h.push(`adrefreshCount=${e.adRefreshCount ?? 0}`);
103
- const d = C();
104
- if (d && h.push(d), h.length) {
103
+ const l = x();
104
+ if (l && h.push(l), h.length) {
105
105
  const u = n.searchParams.get("cust_params");
106
106
  n.searchParams.set("cust_params", u ? `${u}&${h.join("&")}` : h.join("&"));
107
107
  }
@@ -146,9 +146,9 @@ class b {
146
146
  n.attemptsOnCurrent++;
147
147
  const c = this.config.maxAttemptsPerTag ?? 1 / 0;
148
148
  n.attemptsOnCurrent > c && n.index < n.tags.length - 1 && (n.index++, n.attemptsOnCurrent = 1);
149
- const h = n.tags[n.index], d = this.adRetryCount;
149
+ const h = n.tags[n.index], l = this.adRetryCount;
150
150
  this.retryTimer = setTimeout(() => {
151
- this.retryTimer = null, i(h, d);
151
+ this.retryTimer = null, i(h, l);
152
152
  }, this.applyJitter(this.resolveRetryDelay()));
153
153
  }
154
154
  getChainState(e, t) {
@@ -180,16 +180,16 @@ class b {
180
180
  return Math.max(0, Math.round(e * i));
181
181
  }
182
182
  }
183
- function E(l, e) {
183
+ function E(d, e) {
184
184
  var t;
185
185
  try {
186
- (t = l == null ? void 0 : l.settings) != null && t.setPrivacySettings && (l.settings.setPrivacySettings({ nonPersonalizedAds: !0 }), console.warn(`[HopePlayer consent] non-personalized ads zorlandı (${e})`));
186
+ (t = d == null ? void 0 : d.settings) != null && t.setPrivacySettings && (d.settings.setPrivacySettings({ nonPersonalizedAds: !0 }), console.warn(`[HopePlayer consent] non-personalized ads zorlandı (${e})`));
187
187
  } catch (i) {
188
188
  console.warn("[HopePlayer consent] setPrivacySettings hatası:", i);
189
189
  }
190
190
  }
191
- function S(l, e) {
192
- if (l.consentAware) {
191
+ function S(d, e) {
192
+ if (d.consentAware) {
193
193
  try {
194
194
  typeof window.__uspapi == "function" && window.__uspapi("getUSPData", 1, (t, i) => {
195
195
  !i || !(t != null && t.uspString) || t.uspString.charAt(2) === "Y" && E(e, "USP/CCPA opt-out");
@@ -209,20 +209,20 @@ function S(l, e) {
209
209
  }
210
210
  }
211
211
  }
212
- function R(l) {
212
+ function R(d) {
213
213
  try {
214
- const e = atob(l), t = new Uint8Array(e.length);
215
- for (let d = 0; d < e.length; d++) t[d] = e.charCodeAt(d);
214
+ const e = atob(d), t = new Uint8Array(e.length);
215
+ for (let l = 0; l < e.length; l++) t[l] = e.charCodeAt(l);
216
216
  if (t[0] !== 252 || t[13] !== 5) return null;
217
217
  const s = (t[14] << 24 | t[15] << 16 | t[16] << 8 | t[17]) >>> 0;
218
218
  if (t[18] >> 7 & 1) return { type: "cancel", spliceEventId: s };
219
219
  const o = t[19] >> 7 & 1, n = t[19] >> 6 & 1, c = t[19] >> 5 & 1;
220
220
  let h = null;
221
221
  if (n) {
222
- let d = 20;
223
- const u = t[d] >> 7 & 1;
224
- if (d += u ? 5 : 1, c) {
225
- const p = t[d] >> 7 & 1, f = (t[d] & 1) * Math.pow(2, 32) + t[d + 1] * Math.pow(2, 24) + t[d + 2] * Math.pow(2, 16) + t[d + 3] * Math.pow(2, 8) + t[d + 4];
222
+ let l = 20;
223
+ const u = t[l] >> 7 & 1;
224
+ if (l += u ? 5 : 1, c) {
225
+ const p = t[l] >> 7 & 1, f = (t[l] & 1) * Math.pow(2, 32) + t[l + 1] * Math.pow(2, 24) + t[l + 2] * Math.pow(2, 16) + t[l + 3] * Math.pow(2, 8) + t[l + 4];
226
226
  h = { autoReturn: p, seconds: f / 9e4 };
227
227
  }
228
228
  }
@@ -231,18 +231,18 @@ function R(l) {
231
231
  return null;
232
232
  }
233
233
  }
234
- function w(l, e) {
235
- if (l === "EXT-X-CUE-OUT")
234
+ function w(d, e) {
235
+ if (d === "EXT-X-CUE-OUT")
236
236
  return { type: "out", duration: parseFloat(e) || null };
237
- if (l === "EXT-X-CUE-IN")
237
+ if (d === "EXT-X-CUE-IN")
238
238
  return { type: "in" };
239
- if (l === "EXT-X-DATERANGE") {
239
+ if (d === "EXT-X-DATERANGE") {
240
240
  const t = e.match(/SCTE35-OUT=0x([0-9A-Fa-f]+)/), i = e.match(/SCTE35-IN=0x([0-9A-Fa-f]+)/), s = e.match(/PLANNED-DURATION=([\d.]+)/), a = e.match(/CLASS="([^"]+)"/);
241
241
  if (t)
242
242
  return { type: "out", duration: s ? parseFloat(s[1]) : null, class: a ? a[1] : null, raw: t[1] };
243
243
  if (i) return { type: "in", raw: i[1] };
244
244
  }
245
- return l === "EXT-OATCLS-SCTE35" ? R(e) : null;
245
+ return d === "EXT-OATCLS-SCTE35" ? R(e) : null;
246
246
  }
247
247
  class B {
248
248
  constructor(e, t) {
@@ -310,8 +310,8 @@ class B {
310
310
  }
311
311
  }
312
312
  const I = 250, O = 300 * 1e3, q = "100% 0px 100% 0px";
313
- function V(l, e) {
314
- return e === "Preroll" ? l.adTagPreroll : e === "Midroll" ? l.adTagMidroll : l.adTagPostroll;
313
+ function V(d, e) {
314
+ return e === "Preroll" ? d.adTagPreroll : e === "Midroll" ? d.adTagMidroll : d.adTagPostroll;
315
315
  }
316
316
  class U {
317
317
  constructor(e, t) {
@@ -515,17 +515,22 @@ class U {
515
515
  });
516
516
  /** Lineer reklam başladı: pod bilgisi + kalan süre toolbar'a (geri sayım). */
517
517
  r(this, "onAdStarted", (e) => {
518
- var i;
519
- const t = (i = e == null ? void 0 : e.getAd) == null ? void 0 : i.call(e);
520
- if (!(!t || typeof t.isLinear == "function" && !t.isLinear())) {
521
- try {
522
- const s = t.getAdPodInfo();
523
- this.podPosition = s.getAdPosition() || 1, this.podTotal = s.getTotalAds() || 1;
524
- } catch {
525
- this.podPosition = 1, this.podTotal = 1;
526
- }
527
- this.stopAdProgress(), this.reportAdProgress(), this.progressTimer = setInterval(this.reportAdProgress, I);
518
+ var s, a;
519
+ const t = (s = e == null ? void 0 : e.getAd) == null ? void 0 : s.call(e);
520
+ if (!t || typeof t.isLinear == "function" && !t.isLinear()) return;
521
+ try {
522
+ const o = t.getAdPodInfo();
523
+ this.podPosition = o.getAdPosition() || 1, this.podTotal = o.getTotalAds() || 1;
524
+ } catch {
525
+ this.podPosition = 1, this.podTotal = 1;
528
526
  }
527
+ this.stopAdProgress(), this.reportAdProgress(), this.progressTimer = setInterval(this.reportAdProgress, I);
528
+ let i = "";
529
+ try {
530
+ i = ((a = t.getContentType) == null ? void 0 : a.call(t)) ?? "";
531
+ } catch {
532
+ }
533
+ this.ctx.adLayerEl.toggleAttribute("data-audio-ad", i.startsWith("audio/"));
529
534
  });
530
535
  r(this, "reportAdProgress", () => {
531
536
  var t, i, s;
@@ -539,14 +544,14 @@ class U {
539
544
  this.ctx = e, this.options = t, this.retry = new b(t.retry ?? {}), this.prebidIdSuffix = e.hostEl.id || Math.random().toString(36).slice(2, 8), this.surfaceGuard = e.surface ? new k(e.surface) : null;
540
545
  }
541
546
  async install() {
542
- var s, a, o, n;
547
+ var s, a, o, n, c, h;
543
548
  let e;
544
549
  const t = this.ctx.prerollGate;
545
550
  t && (t.onPlayIntent = this.onPrerollPlayIntent, t.onTimeout = this.onPrerollTimeout);
546
551
  try {
547
552
  e = await L();
548
- } catch (c) {
549
- t == null || t.release(!0), (a = (s = this.ctx).log) == null || a.call(s, { message: `IMA SDK failed to load: ${String(c)}`, details: { hint: "ad blocker / network" } }), this.ctx.hostEl.dispatchEvent(new CustomEvent("hp:aderror", { detail: { message: String(c), errorType: "sdkLoadError" } }));
553
+ } catch (l) {
554
+ t == null || t.release(!0), (a = (s = this.ctx).log) == null || a.call(s, { message: `IMA SDK failed to load: ${String(l)}`, details: { hint: "ad blocker / network" } }), this.ctx.hostEl.dispatchEvent(new CustomEvent("hp:aderror", { detail: { message: String(l), errorType: "sdkLoadError" } }));
550
555
  return;
551
556
  }
552
557
  this.ima = e;
@@ -566,10 +571,15 @@ class U {
566
571
  (o = e.ImaSdkSettings) != null && o.VpaidMode && e.settings.setVpaidMode(e.ImaSdkSettings.VpaidMode.INSECURE);
567
572
  } catch {
568
573
  }
569
- S(this.options, this.ima), this.adDisplayContainer = new e.AdDisplayContainer(this.ctx.adLayerEl, this.ctx.videoEl), typeof ResizeObserver < "u" && (this.resizeObserver = new ResizeObserver(this.scheduleResize), this.resizeObserver.observe(this.ctx.videoEl)), this.adsLoader = new e.AdsLoader(this.adDisplayContainer), this.adsLoader.addEventListener(e.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, this.onAdsManagerLoaded), this.adsLoader.addEventListener(e.AdErrorEvent.Type.AD_ERROR, this.onAdsLoaderError), this.ctx.videoEl.addEventListener("play", this.initializeDisplayContainerOnce);
574
+ if (S(this.options, this.ima), this.ctx.audioPoster)
575
+ try {
576
+ (c = (n = e.settings).setFeatureFlags) == null || c.call(n, { audioPosterImageEnabled: !0, audioPosterImageDefaultUrl: this.ctx.audioPoster });
577
+ } catch {
578
+ }
579
+ this.adDisplayContainer = new e.AdDisplayContainer(this.ctx.adLayerEl, this.ctx.videoEl), typeof ResizeObserver < "u" && (this.resizeObserver = new ResizeObserver(this.scheduleResize), this.resizeObserver.observe(this.ctx.videoEl)), this.adsLoader = new e.AdsLoader(this.adDisplayContainer), this.adsLoader.addEventListener(e.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, this.onAdsManagerLoaded), this.adsLoader.addEventListener(e.AdErrorEvent.Type.AD_ERROR, this.onAdsLoaderError), this.ctx.videoEl.addEventListener("play", this.initializeDisplayContainerOnce);
570
580
  const i = typeof navigator < "u" && "userActivation" in navigator && navigator.userActivation.hasBeenActive;
571
- (!this.ctx.videoEl.paused || i || t != null && t.hasPlayIntent) && this.initializeDisplayContainerOnce(), this.ctx.videoEl.addEventListener("ended", this.onContentEnded), this.options.adTagMidroll && !this.options.adTagVmap && this.options.midrollIntervalSeconds && this.ctx.videoEl.addEventListener("timeupdate", this.onTimeUpdateForMidroll), this.requestInitialPrerollOrVmap(), (n = this.options.live) != null && n.scte35 && this.options.live.adTagLive && (this.scte35Manager = new B(this.ctx.videoEl, {
572
- onAdBreakStart: (c) => this.onScte35AdBreakStart(c),
581
+ (!this.ctx.videoEl.paused || i || t != null && t.hasPlayIntent) && this.initializeDisplayContainerOnce(), this.ctx.videoEl.addEventListener("ended", this.onContentEnded), this.options.adTagMidroll && !this.options.adTagVmap && this.options.midrollIntervalSeconds && this.ctx.videoEl.addEventListener("timeupdate", this.onTimeUpdateForMidroll), this.requestInitialPrerollOrVmap(), (h = this.options.live) != null && h.scte35 && this.options.live.adTagLive && (this.scte35Manager = new B(this.ctx.videoEl, {
582
+ onAdBreakStart: (l) => this.onScte35AdBreakStart(l),
573
583
  onAdBreakEnd: () => this.onScte35AdBreakEnd()
574
584
  }));
575
585
  }
@@ -651,11 +661,11 @@ class U {
651
661
  return this.prebidInstances[e] = o, o;
652
662
  }
653
663
  async requestAd(e, t, i = 0, s = !1) {
654
- var h, d, u, p, y, f, A;
664
+ var h, l, u, p, y, f, A;
655
665
  if (!this.adsLoader || !this.ima) return;
656
666
  this.currentBreakType = e, this.lastRequestIsVmap = s;
657
667
  const a = Array.isArray(t) ? t[0] : t;
658
- let o = s ? a : x(a, { includeRefreshCount: !!((h = this.options.retry) != null && h.enabled), adRefreshCount: i });
668
+ let o = s ? a : C(a, { includeRefreshCount: !!((h = this.options.retry) != null && h.enabled), adRefreshCount: i });
659
669
  if (!s && i === 0) {
660
670
  const m = this.getPrebidConfigFor(e);
661
671
  if (m) {
@@ -667,7 +677,7 @@ class U {
667
677
  const n = new this.ima.AdsRequest();
668
678
  n.adTagUrl = o, n.linearAdSlotWidth = this.ctx.videoEl.clientWidth || 640, n.linearAdSlotHeight = this.ctx.videoEl.clientHeight || 360, n.nonLinearAdSlotWidth = this.ctx.videoEl.clientWidth || 640, n.nonLinearAdSlotHeight = Math.round((this.ctx.videoEl.clientHeight || 360) / 3), n.vastLoadTimeout = this.options.vastLoadTimeoutMs ?? 1e4;
669
679
  try {
670
- (u = n.setAdWillAutoPlay) == null || u.call(n, this.ctx.videoEl.autoplay || !!((d = this.ctx.prerollGate) != null && d.hasPlayIntent) || !this.ctx.videoEl.paused), (p = n.setAdWillPlayMuted) == null || p.call(n, this.ctx.videoEl.muted), (A = n.setContinuousPlayback) == null || A.call(n, !!((f = (y = this.ctx).isContinuousPlayback) != null && f.call(y)));
680
+ (u = n.setAdWillAutoPlay) == null || u.call(n, this.ctx.videoEl.autoplay || !!((l = this.ctx.prerollGate) != null && l.hasPlayIntent) || !this.ctx.videoEl.paused), (p = n.setAdWillPlayMuted) == null || p.call(n, this.ctx.videoEl.muted), (A = n.setContinuousPlayback) == null || A.call(n, !!((f = (y = this.ctx).isContinuousPlayback) != null && f.call(y)));
671
681
  } catch {
672
682
  }
673
683
  const c = this.omidRules();
@@ -686,9 +696,9 @@ class U {
686
696
  var c, h;
687
697
  const e = (c = this.ima) == null ? void 0 : c.OmidVerificationVendor, t = (h = this.ima) == null ? void 0 : h.OmidAccessMode;
688
698
  if (!e || !t) return null;
689
- const i = this.options.omidAccessMode ?? "full", s = (d) => d === "full" ? t.FULL : d === "domain" ? t.DOMAIN : d === "limited" ? t.LIMITED : void 0, a = typeof i == "string" ? {} : i, o = s(typeof i == "string" ? i : i.default ?? "full") ?? t.FULL, n = {};
690
- for (const [d, u] of Object.entries(e))
691
- typeof u == "number" && (n[u] = s(a[d]) ?? o);
699
+ const i = this.options.omidAccessMode ?? "full", s = (l) => l === "full" ? t.FULL : l === "domain" ? t.DOMAIN : l === "limited" ? t.LIMITED : void 0, a = typeof i == "string" ? {} : i, o = s(typeof i == "string" ? i : i.default ?? "full") ?? t.FULL, n = {};
700
+ for (const [l, u] of Object.entries(e))
701
+ typeof u == "number" && (n[u] = s(a[l]) ?? o);
692
702
  return n;
693
703
  }
694
704
  startAdsManager() {
@@ -746,14 +756,14 @@ class U {
746
756
  }
747
757
  /** IMA hatasının kodlarını çıkarır, hata kaydına yazar (yeniden denenecek olsa da) ve mesajı döndürür. */
748
758
  recordAdError(e) {
749
- var s, a, o, n, c, h, d;
759
+ var s, a, o, n, c, h, l;
750
760
  const t = (s = e.getError) == null ? void 0 : s.call(e), i = {
751
761
  message: ((a = t == null ? void 0 : t.getMessage) == null ? void 0 : a.call(t)) ?? "ad-error",
752
762
  code: (o = t == null ? void 0 : t.getErrorCode) == null ? void 0 : o.call(t),
753
763
  vastCode: (n = t == null ? void 0 : t.getVastErrorCode) == null ? void 0 : n.call(t),
754
764
  errorType: (c = t == null ? void 0 : t.getType) == null ? void 0 : c.call(t)
755
765
  };
756
- return i.vastCode !== void 0 && i.vastCode <= 0 && (i.vastCode = void 0), this.lastAdError = i, (d = (h = this.ctx).log) == null || d.call(h, {
766
+ return i.vastCode !== void 0 && i.vastCode <= 0 && (i.vastCode = void 0), this.lastAdError = i, (l = (h = this.ctx).log) == null || l.call(h, {
757
767
  message: i.message,
758
768
  details: { code: i.code, vastCode: i.vastCode, errorType: i.errorType, break: this.breakTypeLower() }
759
769
  }), i.message;
@@ -803,7 +813,7 @@ class U {
803
813
  this.vmapRequested || !this.options.adTagVmap || (this.vmapRequested = !0, this.requestAd("Midroll", this.options.adTagVmap, 0, !0));
804
814
  }
805
815
  hideAdLayer() {
806
- this.nonLinearActive || (this.ctx.adLayerEl.classList.add("hp:hidden"), this.ctx.adLayerEl.classList.remove("hp:block")), this.ctx.showChrome();
816
+ this.ctx.adLayerEl.removeAttribute("data-audio-ad"), this.nonLinearActive || (this.ctx.adLayerEl.classList.add("hp:hidden"), this.ctx.adLayerEl.classList.remove("hp:block")), this.ctx.showChrome();
807
817
  }
808
818
  /**
809
819
  * Başlayan aranın gerçek tipi. VMAP tek istekle preroll + midroll + postroll getirir; isteğin tipi (currentBreakType)
@@ -824,12 +834,12 @@ class U {
824
834
  return this.currentBreakType.toLowerCase();
825
835
  }
826
836
  }
827
- async function D(l, e) {
828
- const t = new U(l, e);
837
+ async function _(d, e) {
838
+ const t = new U(d, e);
829
839
  return await t.install(), t;
830
840
  }
831
841
  export {
832
842
  U as AdsController,
833
- D as installAds
843
+ _ as installAds
834
844
  };
835
- //# sourceMappingURL=index-Br_RybXV.js.map
845
+ //# sourceMappingURL=index-BCMVXNL0.js.map