stormcloud-video-player 0.8.39 → 0.8.41

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.
@@ -1968,10 +1968,19 @@ function openConnection() {
1968
1968
  password: mqttConfig.password,
1969
1969
  keepalive: KEEPALIVE_SECONDS,
1970
1970
  clean: true,
1971
+ // Disable MQTT.js internal reconnect; we manage reconnection ourselves.
1971
1972
  reconnectPeriod: 0,
1972
1973
  connectTimeout: CONNECT_TIMEOUT_MS,
1973
1974
  queueQoSZero: false,
1974
- reschedulePings: true
1975
+ reschedulePings: true,
1976
+ // Root-cause fix for the Tizen 4.0 "Keepalive timeout" loop: MQTT.js's
1977
+ // default timerVariant "auto" runs the keepalive interval inside a
1978
+ // Blob-URL Web Worker (via worker-timers). On Samsung Tizen 4.0 (old
1979
+ // WebKit) served from a file:// origin that worker can't tick reliably,
1980
+ // so the keepalive counter trips onKeepaliveTimeout almost immediately
1981
+ // after connect. Force the native setInterval timer instead; the main
1982
+ // thread is free because video is decoded by the native AVPlay pipeline.
1983
+ timerVariant: "native"
1975
1984
  });
1976
1985
  } catch (err) {
1977
1986
  status = "error";
@@ -8766,12 +8775,10 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
8766
8775
  ];
8767
8776
  case 3:
8768
8777
  error = _state.sent();
8769
- this.adBreak.adPodQueue = [];
8770
- this.adBreak.inAdBreak = false;
8771
- this.adBreak.showAds = false;
8772
8778
  if (this.debug) {
8773
8779
  console.warn("[StormcloudVideoPlayer] VMAP ad request failed:", error);
8774
8780
  }
8781
+ this.adBreak.handleAdPodComplete();
8775
8782
  return [
8776
8783
  3,
8777
8784
  4
@@ -8941,6 +8948,64 @@ var StormcloudVideoPlayer = /*#__PURE__*/ function() {
8941
8948
  // src/ui/StormcloudVideoPlayer.tsx
8942
8949
  var import_fa = require("react-icons/fa");
8943
8950
  var import_jsx_runtime = require("react/jsx-runtime");
8951
+ var ExpandIcon = function ExpandIcon(param) {
8952
+ var _param_size = param.size, size = _param_size === void 0 ? 18 : _param_size;
8953
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
8954
+ width: size,
8955
+ height: size,
8956
+ viewBox: "0 0 24 24",
8957
+ fill: "none",
8958
+ stroke: "currentColor",
8959
+ strokeWidth: 2,
8960
+ strokeLinecap: "round",
8961
+ strokeLinejoin: "round",
8962
+ "aria-hidden": "true",
8963
+ focusable: "false",
8964
+ children: [
8965
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
8966
+ d: "M9 4H4v5"
8967
+ }),
8968
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
8969
+ d: "M20 9V4h-5"
8970
+ }),
8971
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
8972
+ d: "M15 20h5v-5"
8973
+ }),
8974
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
8975
+ d: "M4 15v5h5"
8976
+ })
8977
+ ]
8978
+ });
8979
+ };
8980
+ var CompressIcon = function CompressIcon(param) {
8981
+ var _param_size = param.size, size = _param_size === void 0 ? 18 : _param_size;
8982
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
8983
+ width: size,
8984
+ height: size,
8985
+ viewBox: "0 0 24 24",
8986
+ fill: "none",
8987
+ stroke: "currentColor",
8988
+ strokeWidth: 2,
8989
+ strokeLinecap: "round",
8990
+ strokeLinejoin: "round",
8991
+ "aria-hidden": "true",
8992
+ focusable: "false",
8993
+ children: [
8994
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
8995
+ d: "M4 9h5V4"
8996
+ }),
8997
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
8998
+ d: "M15 4v5h5"
8999
+ }),
9000
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
9001
+ d: "M20 15h-5v5"
9002
+ }),
9003
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
9004
+ d: "M9 20v-5H4"
9005
+ })
9006
+ ]
9007
+ });
9008
+ };
8944
9009
  var CRITICAL_PROPS = [
8945
9010
  "src",
8946
9011
  "allowNativeHls",
@@ -9978,9 +10043,9 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
9978
10043
  minHeight: "".concat(36 * responsiveScale, "px")
9979
10044
  },
9980
10045
  title: isFullscreen2 ? "Exit Fullscreen" : "Enter Fullscreen",
9981
- children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaCompress, {
10046
+ children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, {
9982
10047
  size: Math.max(14, 18 * responsiveScale)
9983
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaExpand, {
10048
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, {
9984
10049
  size: Math.max(14, 18 * responsiveScale)
9985
10050
  })
9986
10051
  })
@@ -10179,9 +10244,9 @@ var StormcloudVideoPlayerComponent = import_react.default.memo(function(props) {
10179
10244
  background: "rgba(0, 0, 0, 0.6)"
10180
10245
  },
10181
10246
  title: isFullscreen2 ? "Exit Fullscreen" : "Enter Fullscreen",
10182
- children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaCompress, {
10247
+ children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, {
10183
10248
  size: Math.max(14, 18 * responsiveScale)
10184
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaExpand, {
10249
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, {
10185
10250
  size: Math.max(14, 18 * responsiveScale)
10186
10251
  })
10187
10252
  })