stormcloud-video-player 0.7.4 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -682,8 +682,8 @@ var UNSUPPORTED_VIDEO_EXTENSIONS = [
682
682
  var REQUEST_TIMEOUT_MS = 5e3;
683
683
  var REQUEST_MAX_RETRIES = 3;
684
684
  var REQUEST_RETRY_BACKOFF_MS = 1500;
685
- var AD_LAYER_Z_INDEX = "2147483646";
686
- var COUNTDOWN_Z_INDEX = "2147483647";
685
+ var AD_LAYER_Z_INDEX = "30";
686
+ var COUNTDOWN_Z_INDEX = "31";
687
687
  var STALL_TIMEOUT_MS = 8e3;
688
688
  function getFileExtension(url) {
689
689
  try {
@@ -1387,7 +1387,7 @@ function createAdStormPlayer(contentVideo, options) {
1387
1387
  container.style.isolation = "isolate";
1388
1388
  var countdown = document.createElement("div");
1389
1389
  countdown.style.position = "absolute";
1390
- countdown.style.right = "12px";
1390
+ countdown.style.left = "12px";
1391
1391
  countdown.style.top = "12px";
1392
1392
  countdown.style.padding = "4px 8px";
1393
1393
  countdown.style.borderRadius = "4px";
@@ -1838,7 +1838,7 @@ function createAdStormPlayer(contentVideo, options) {
1838
1838
  container.style.isolation = "isolate";
1839
1839
  var countdown = document.createElement("div");
1840
1840
  countdown.style.position = "absolute";
1841
- countdown.style.right = "12px";
1841
+ countdown.style.left = "12px";
1842
1842
  countdown.style.top = "12px";
1843
1843
  countdown.style.padding = "4px 8px";
1844
1844
  countdown.style.borderRadius = "4px";
@@ -2959,6 +2959,7 @@ function supportsFeature(feature) {
2959
2959
  }
2960
2960
  }
2961
2961
  // src/player/StormcloudVideoPlayer.ts
2962
+ var DEBUG_HISTORY_LIMIT = 120;
2962
2963
  var StormcloudVideoPlayer = /*#__PURE__*/ function() {
2963
2964
  function StormcloudVideoPlayer(config) {
2964
2965
  _class_call_check(this, StormcloudVideoPlayer);
@@ -3001,6 +3002,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3001
3002
  this.adRequestMaxRetries = 3;
3002
3003
  this.adRequestRetryBackoffMs = 1500;
3003
3004
  this.preloadedTokens = [];
3005
+ this.debugLogEntries = [];
3006
+ this.scteMarkerHistory = [];
3004
3007
  initializePolyfills();
3005
3008
  var browserOverrides = getBrowserConfigOverrides();
3006
3009
  this.config = _object_spread({}, browserOverrides, config);
@@ -3507,6 +3510,9 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3507
3510
  errorMessage += ". Caused by: ".concat(causeMessage);
3508
3511
  }
3509
3512
  }
3513
+ _this.pushDebugLog("error", "ad", errorMessage, _object_spread({}, errorPayload ? {
3514
+ payload: errorPayload
3515
+ } : {}));
3510
3516
  console.error("[AD-ERROR]", errorMessage, errorPayload || "");
3511
3517
  _this.adLayer.stop().catch(function() {});
3512
3518
  _this.handleAdFailure();
@@ -3948,6 +3954,13 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
3948
3954
  value: function onScte35Marker(marker) {
3949
3955
  var _this = this;
3950
3956
  if (this.config.disableAds) return;
3957
+ this.pushScteMarker(marker);
3958
+ this.pushDebugLog("info", "scte35", "SCTE-35 marker detected", {
3959
+ type: marker.type,
3960
+ ptsSeconds: marker.ptsSeconds,
3961
+ durationSeconds: marker.durationSeconds,
3962
+ currentTime: this.video.currentTime
3963
+ });
3951
3964
  if (this.config.debugAdTiming) {
3952
3965
  console.log("[StormcloudVideoPlayer] SCTE-35 marker detected:", {
3953
3966
  type: marker.type,
@@ -5816,6 +5829,7 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
5816
5829
  if (!this.config.debugAdTiming) {
5817
5830
  return;
5818
5831
  }
5832
+ this.pushDebugLog("info", "ad-state", event, extra);
5819
5833
  console.log("[StormcloudVideoPlayer][AdState]", _object_spread({
5820
5834
  event: event,
5821
5835
  timestamp: /* @__PURE__ */ new Date().toISOString(),
@@ -5835,6 +5849,59 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
5835
5849
  return Math.max(0, this.expectedAdBreakDurationMs - elapsed);
5836
5850
  }
5837
5851
  },
5852
+ {
5853
+ key: "pushScteMarker",
5854
+ value: function pushScteMarker(marker) {
5855
+ if (!this.config.debugAdTiming) return;
5856
+ this.scteMarkerHistory.push({
5857
+ timestampMs: Date.now(),
5858
+ marker: marker
5859
+ });
5860
+ if (this.scteMarkerHistory.length > DEBUG_HISTORY_LIMIT) {
5861
+ this.scteMarkerHistory = this.scteMarkerHistory.slice(-DEBUG_HISTORY_LIMIT);
5862
+ }
5863
+ }
5864
+ },
5865
+ {
5866
+ key: "pushDebugLog",
5867
+ value: function pushDebugLog(level, category, message, details) {
5868
+ if (!this.config.debugAdTiming) return;
5869
+ this.debugLogEntries.push(_object_spread({
5870
+ timestampMs: Date.now(),
5871
+ level: level,
5872
+ category: category,
5873
+ message: message
5874
+ }, details ? {
5875
+ details: details
5876
+ } : {}));
5877
+ if (this.debugLogEntries.length > DEBUG_HISTORY_LIMIT) {
5878
+ this.debugLogEntries = this.debugLogEntries.slice(-DEBUG_HISTORY_LIMIT);
5879
+ }
5880
+ }
5881
+ },
5882
+ {
5883
+ key: "getRecentScteMarkers",
5884
+ value: function getRecentScteMarkers() {
5885
+ return this.scteMarkerHistory.map(function(entry) {
5886
+ return _object_spread({
5887
+ timestampMs: entry.timestampMs,
5888
+ type: entry.marker.type
5889
+ }, entry.marker.ptsSeconds !== void 0 ? {
5890
+ ptsSeconds: entry.marker.ptsSeconds
5891
+ } : {}, entry.marker.durationSeconds !== void 0 ? {
5892
+ durationSeconds: entry.marker.durationSeconds
5893
+ } : {}, entry.marker.raw !== void 0 ? {
5894
+ raw: entry.marker.raw
5895
+ } : {});
5896
+ });
5897
+ }
5898
+ },
5899
+ {
5900
+ key: "getDebugLogs",
5901
+ value: function getDebugLogs() {
5902
+ return this.debugLogEntries.slice();
5903
+ }
5904
+ },
5838
5905
  {
5839
5906
  key: "toggleMute",
5840
5907
  value: function toggleMute() {
@@ -6080,6 +6147,8 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
6080
6147
  (_this_hls = this.hls) === null || _this_hls === void 0 ? void 0 : _this_hls.destroy();
6081
6148
  (_this_adLayer = this.adLayer) === null || _this_adLayer === void 0 ? void 0 : _this_adLayer.destroy();
6082
6149
  this.consecutiveFailures = 0;
6150
+ this.debugLogEntries = [];
6151
+ this.scteMarkerHistory = [];
6083
6152
  }
6084
6153
  }
6085
6154
  ]);
@@ -7193,10 +7262,12 @@ var CRITICAL_PROPS = [
7193
7262
  "allowNativeHls",
7194
7263
  "licenseKey",
7195
7264
  "lowLatencyMode",
7196
- "driftToleranceMs"
7265
+ "driftToleranceMs",
7266
+ "debugAdTiming"
7197
7267
  ];
7198
7268
  var CONTROLS_HIDE_DELAY = 3e3;
7199
7269
  var DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;
7270
+ var DEBUG_PANEL_MARKER_LIMIT = 12;
7200
7271
  var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props) {
7201
7272
  var src = props.src, autoplay = props.autoplay, muted = props.muted, lowLatencyMode = props.lowLatencyMode, allowNativeHls = props.allowNativeHls, driftToleranceMs = props.driftToleranceMs, immediateManifestAds = props.immediateManifestAds, debugAdTiming = props.debugAdTiming, showCustomControls = props.showCustomControls, hideLoadingIndicator = props.hideLoadingIndicator, onVolumeToggle = props.onVolumeToggle, onFullscreenToggle = props.onFullscreenToggle, onControlClick = props.onControlClick, onReady = props.onReady, wrapperClassName = props.wrapperClassName, wrapperStyle = props.wrapperStyle, className = props.className, style = props.style, controls = props.controls, playsInline = props.playsInline, preload = props.preload, poster = props.poster, children = props.children, licenseKey = props.licenseKey, minSegmentsBeforePlay = props.minSegmentsBeforePlay, disableAds = props.disableAds, disableFiller = props.disableFiller, swirlProjectId = props.swirlProjectId, restVideoAttrs = _object_without_properties(props, [
7202
7273
  "src",
@@ -7259,6 +7330,8 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
7259
7330
  var _import_react2_default_useState18 = _sliced_to_array(import_react2.default.useState(typeof window !== "undefined" ? window.innerWidth : 1920), 2), viewportWidth = _import_react2_default_useState18[0], setViewportWidth = _import_react2_default_useState18[1];
7260
7331
  var _import_react2_default_useState19 = _sliced_to_array(import_react2.default.useState(typeof window !== "undefined" ? window.innerHeight > window.innerWidth : false), 2), isPortrait = _import_react2_default_useState19[0], setIsPortrait = _import_react2_default_useState19[1];
7261
7332
  var _import_react2_default_useState20 = _sliced_to_array(import_react2.default.useState(DEFAULT_PLAYER_ASPECT_RATIO), 2), playerAspectRatio = _import_react2_default_useState20[0], setPlayerAspectRatio = _import_react2_default_useState20[1];
7333
+ var _import_react2_default_useState21 = _sliced_to_array(import_react2.default.useState(false), 2), showDebugPanel = _import_react2_default_useState21[0], setShowDebugPanel = _import_react2_default_useState21[1];
7334
+ var _import_react2_default_useState22 = _sliced_to_array(import_react2.default.useState([]), 2), debugMarkers = _import_react2_default_useState22[0], setDebugMarkers = _import_react2_default_useState22[1];
7262
7335
  var getResponsiveScale = function getResponsiveScale() {
7263
7336
  if (viewportWidth < 480) return 0.7;
7264
7337
  if (viewportWidth < 768) return 0.8;
@@ -7266,6 +7339,28 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
7266
7339
  return 1;
7267
7340
  };
7268
7341
  var responsiveScale = getResponsiveScale();
7342
+ var formatDebugClock = function formatDebugClock(timestampMs) {
7343
+ try {
7344
+ var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
7345
+ return new Date(timestampMs).toLocaleTimeString("en-GB", {
7346
+ hour12: false,
7347
+ hour: "2-digit",
7348
+ minute: "2-digit",
7349
+ second: "2-digit",
7350
+ timeZone: localTimeZone
7351
+ });
7352
+ } catch (unused) {
7353
+ return "--:--:--";
7354
+ }
7355
+ };
7356
+ var formatDebugRaw = function formatDebugRaw(raw) {
7357
+ if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object") return "";
7358
+ var obj = raw;
7359
+ if (typeof obj.tag === "string") return obj.tag;
7360
+ if (typeof obj.id3 === "string") return "ID3";
7361
+ if (typeof obj.splice_command_type === "number") return "binary splice";
7362
+ return "marker";
7363
+ };
7269
7364
  var resetControlsTimer = (0, import_react2.useCallback)(function() {
7270
7365
  if (controlsTimerRef.current) {
7271
7366
  clearTimeout(controlsTimerRef.current);
@@ -7648,6 +7743,26 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
7648
7743
  }
7649
7744
  };
7650
7745
  }, []);
7746
+ (0, import_react2.useEffect)(function() {
7747
+ if (!debugAdTiming) {
7748
+ setShowDebugPanel(false);
7749
+ setDebugMarkers([]);
7750
+ return;
7751
+ }
7752
+ var updateDebugData = function updateDebugData() {
7753
+ var player = playerRef.current;
7754
+ if (!player) return;
7755
+ setDebugMarkers(player.getRecentScteMarkers().slice(-DEBUG_PANEL_MARKER_LIMIT).reverse());
7756
+ };
7757
+ updateDebugData();
7758
+ var interval = window.setInterval(updateDebugData, 500);
7759
+ return function() {
7760
+ return clearInterval(interval);
7761
+ };
7762
+ }, [
7763
+ debugAdTiming,
7764
+ criticalPropsKey
7765
+ ]);
7651
7766
  var handleWrapperMouseMove = (0, import_react2.useCallback)(function() {
7652
7767
  resetControlsTimer();
7653
7768
  }, [
@@ -7666,7 +7781,7 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
7666
7781
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, {
7667
7782
  children: [
7668
7783
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("style", {
7669
- children: "\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n "
7784
+ children: "\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n .sc-debug-scroll::-webkit-scrollbar {\n width: 8px;\n }\n .sc-debug-scroll::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.22);\n border-radius: 4px;\n }\n .sc-debug-scroll {\n overflow-x: hidden !important;\n }\n "
7670
7785
  }),
7671
7786
  /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
7672
7787
  ref: wrapperRef,
@@ -7908,6 +8023,181 @@ var StormcloudVideoPlayerComponent = import_react2.default.memo(function(props)
7908
8023
  })
7909
8024
  ]
7910
8025
  }),
8026
+ debugAdTiming && !showLicenseWarning && !showDebugPanel && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
8027
+ className: "sc-ctrl-btn",
8028
+ onClick: function onClick() {
8029
+ setShowDebugPanel(function(prev) {
8030
+ return !prev;
8031
+ });
8032
+ resetControlsTimer();
8033
+ },
8034
+ style: {
8035
+ position: "absolute",
8036
+ top: "".concat(12 * responsiveScale, "px"),
8037
+ right: "".concat(12 * responsiveScale, "px"),
8038
+ zIndex: 61,
8039
+ width: "".concat(34 * responsiveScale, "px"),
8040
+ height: "".concat(34 * responsiveScale, "px"),
8041
+ borderRadius: "50%",
8042
+ background: showDebugPanel ? "rgba(255, 255, 255, 0.2)" : "rgba(0, 0, 0, 0.55)",
8043
+ border: "1px solid rgba(255, 255, 255, 0.2)",
8044
+ backdropFilter: "blur(12px)",
8045
+ WebkitBackdropFilter: "blur(12px)"
8046
+ },
8047
+ title: showDebugPanel ? "Hide debug panel" : "Show debug panel",
8048
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaCog, {
8049
+ size: Math.max(12, 15 * responsiveScale)
8050
+ })
8051
+ }),
8052
+ debugAdTiming && showDebugPanel && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
8053
+ style: {
8054
+ position: "absolute",
8055
+ top: "".concat(12 * responsiveScale, "px"),
8056
+ right: "".concat(12 * responsiveScale, "px"),
8057
+ width: "".concat(Math.min(440, Math.max(320, viewportWidth * 0.42)), "px"),
8058
+ maxWidth: "92vw",
8059
+ height: isPortrait ? "52vh" : "420px",
8060
+ maxHeight: "58vh",
8061
+ zIndex: 60,
8062
+ background: "rgba(10, 10, 10, 0.74)",
8063
+ border: "1px solid rgba(255, 255, 255, 0.14)",
8064
+ borderRadius: "12px",
8065
+ boxShadow: "0 16px 48px rgba(0, 0, 0, 0.45)",
8066
+ backdropFilter: "blur(16px)",
8067
+ WebkitBackdropFilter: "blur(16px)",
8068
+ color: "rgba(255,255,255,0.94)",
8069
+ overflow: "hidden"
8070
+ },
8071
+ children: [
8072
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
8073
+ style: {
8074
+ display: "flex",
8075
+ alignItems: "center",
8076
+ justifyContent: "space-between",
8077
+ padding: "10px 12px",
8078
+ borderBottom: "1px solid rgba(255,255,255,0.1)"
8079
+ },
8080
+ children: [
8081
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
8082
+ style: {
8083
+ fontSize: "13px",
8084
+ fontWeight: 700,
8085
+ letterSpacing: "0.02em"
8086
+ },
8087
+ children: "Debug Ad Timing"
8088
+ }),
8089
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("button", {
8090
+ className: "sc-ctrl-btn",
8091
+ onClick: function onClick() {
8092
+ return setShowDebugPanel(false);
8093
+ },
8094
+ style: {
8095
+ padding: "4px",
8096
+ borderRadius: "6px",
8097
+ minWidth: "26px",
8098
+ minHeight: "26px"
8099
+ },
8100
+ title: "Close panel",
8101
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_fa.FaTimes, {
8102
+ size: 12
8103
+ })
8104
+ })
8105
+ ]
8106
+ }),
8107
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
8108
+ className: "sc-debug-scroll",
8109
+ style: {
8110
+ padding: "10px 12px 12px",
8111
+ overflowY: "auto",
8112
+ overflowX: "hidden",
8113
+ height: "calc(100% - 46px)",
8114
+ display: "grid",
8115
+ gap: "12px"
8116
+ },
8117
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
8118
+ children: [
8119
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
8120
+ style: {
8121
+ fontSize: "11px",
8122
+ fontWeight: 700,
8123
+ textTransform: "uppercase",
8124
+ letterSpacing: "0.08em",
8125
+ color: "rgba(255,255,255,0.68)",
8126
+ marginBottom: "8px"
8127
+ },
8128
+ children: "SCTE-35 markers"
8129
+ }),
8130
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
8131
+ style: {
8132
+ display: "grid",
8133
+ gap: "6px"
8134
+ },
8135
+ children: debugMarkers.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", {
8136
+ style: {
8137
+ fontSize: "12px",
8138
+ color: "rgba(255,255,255,0.55)"
8139
+ },
8140
+ children: "No markers detected yet."
8141
+ }) : debugMarkers.map(function(entry, idx) {
8142
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
8143
+ style: {
8144
+ display: "grid",
8145
+ gridTemplateColumns: "56px 52px 1fr",
8146
+ gap: "8px",
8147
+ alignItems: "center",
8148
+ fontFamily: "'SF Mono', 'Cascadia Code', monospace",
8149
+ fontSize: "11px",
8150
+ background: "rgba(255,255,255,0.05)",
8151
+ border: "1px solid rgba(255,255,255,0.08)",
8152
+ borderRadius: "8px",
8153
+ padding: "6px 8px"
8154
+ },
8155
+ children: [
8156
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", {
8157
+ style: {
8158
+ color: "rgba(255,255,255,0.68)"
8159
+ },
8160
+ children: formatDebugClock(entry.timestampMs)
8161
+ }),
8162
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", {
8163
+ style: {
8164
+ textTransform: "uppercase",
8165
+ fontWeight: 700,
8166
+ color: entry.type === "start" ? "#34d399" : entry.type === "end" ? "#f87171" : "#fbbf24"
8167
+ },
8168
+ children: entry.type
8169
+ }),
8170
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", {
8171
+ style: {
8172
+ color: "rgba(255,255,255,0.88)"
8173
+ },
8174
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", {
8175
+ style: {
8176
+ display: "inline-block",
8177
+ maxWidth: "100%",
8178
+ verticalAlign: "bottom",
8179
+ overflow: "hidden",
8180
+ textOverflow: "ellipsis",
8181
+ whiteSpace: "nowrap"
8182
+ },
8183
+ children: [
8184
+ entry.durationSeconds != null ? "dur:".concat(entry.durationSeconds.toFixed(2), "s") : "dur:-",
8185
+ " ",
8186
+ entry.ptsSeconds != null ? "pts:".concat(entry.ptsSeconds.toFixed(2)) : "pts:-",
8187
+ " ",
8188
+ formatDebugRaw(entry.raw)
8189
+ ]
8190
+ })
8191
+ })
8192
+ ]
8193
+ }, "".concat(entry.timestampMs, "-").concat(idx));
8194
+ })
8195
+ })
8196
+ ]
8197
+ })
8198
+ })
8199
+ ]
8200
+ }),
7911
8201
  shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", {
7912
8202
  className: "sc-controls-bar",
7913
8203
  style: {