stormcloud-video-player 0.7.48 → 0.7.50

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.js CHANGED
@@ -6333,11 +6333,62 @@ function parseConfig(content) {
6333
6333
  return null;
6334
6334
  }
6335
6335
  }
6336
+ function parseClockMMSS(clock) {
6337
+ if (!clock) return null;
6338
+ var m = /^\s*(\d{1,3}):([0-5]?\d)\s*$/.exec(clock);
6339
+ if (!m) return null;
6340
+ return parseInt(m[1], 10) * 60 + parseInt(m[2], 10);
6341
+ }
6342
+ function formatClockMMSS(totalSec) {
6343
+ var s = Math.max(0, Math.floor(totalSec));
6344
+ var mm = Math.floor(s / 60);
6345
+ var ss = s % 60;
6346
+ return "".concat(mm, ":").concat(ss.toString().padStart(2, "0"));
6347
+ }
6348
+ function useScoreBugClock(overlayId, sourceClock) {
6349
+ var initialSec = parseClockMMSS(sourceClock);
6350
+ var _useState = _sliced_to_array(useState(function() {
6351
+ return Date.now();
6352
+ }), 2), now = _useState[0], setNow = _useState[1];
6353
+ var startRef = useRef(null);
6354
+ useEffect(function() {
6355
+ if (initialSec === null) {
6356
+ startRef.current = null;
6357
+ return;
6358
+ }
6359
+ startRef.current = {
6360
+ id: overlayId,
6361
+ source: sourceClock || "",
6362
+ at: Date.now(),
6363
+ seconds: initialSec
6364
+ };
6365
+ setNow(Date.now());
6366
+ var tick = window.setInterval(function() {
6367
+ return setNow(Date.now());
6368
+ }, 500);
6369
+ return function() {
6370
+ return clearInterval(tick);
6371
+ };
6372
+ }, [
6373
+ overlayId,
6374
+ sourceClock,
6375
+ initialSec
6376
+ ]);
6377
+ if (initialSec === null || !startRef.current) return null;
6378
+ var elapsed = Math.floor((now - startRef.current.at) / 1e3);
6379
+ var remaining = Math.max(0, startRef.current.seconds - elapsed);
6380
+ return formatClockMMSS(remaining);
6381
+ }
6336
6382
  function ScoreBugOverlay(param) {
6337
6383
  var overlay = param.overlay, size = param.size;
6384
+ var _ref, _cfg_period;
6338
6385
  var cfg = parseConfig(overlay.content);
6386
+ var liveClock = useScoreBugClock(overlay.id, cfg === null || cfg === void 0 ? void 0 : cfg.clock);
6339
6387
  if (!cfg) return null;
6340
6388
  var f = Math.max(6, size.w * 0.052);
6389
+ var displayClock = (_ref = liveClock !== null && liveClock !== void 0 ? liveClock : cfg.clock) !== null && _ref !== void 0 ? _ref : "";
6390
+ var displayPeriod = (_cfg_period = cfg.period) !== null && _cfg_period !== void 0 ? _cfg_period : "";
6391
+ var showMiddleCol = Boolean(displayPeriod || displayClock);
6341
6392
  return /* @__PURE__ */ jsxs("div", {
6342
6393
  style: {
6343
6394
  width: "100%",
@@ -6395,7 +6446,7 @@ function ScoreBugOverlay(param) {
6395
6446
  })
6396
6447
  ]
6397
6448
  }),
6398
- /* @__PURE__ */ jsxs("div", {
6449
+ showMiddleCol && /* @__PURE__ */ jsxs("div", {
6399
6450
  style: {
6400
6451
  fontSize: "0.88em",
6401
6452
  textAlign: "center",
@@ -6409,15 +6460,15 @@ function ScoreBugOverlay(param) {
6409
6460
  letterSpacing: "0.04em"
6410
6461
  },
6411
6462
  children: [
6412
- /* @__PURE__ */ jsx("div", {
6413
- children: cfg.period
6463
+ displayPeriod && /* @__PURE__ */ jsx("div", {
6464
+ children: displayPeriod
6414
6465
  }),
6415
- /* @__PURE__ */ jsx("div", {
6466
+ displayClock && /* @__PURE__ */ jsx("div", {
6416
6467
  style: {
6417
6468
  fontWeight: 700,
6418
6469
  opacity: 1
6419
6470
  },
6420
- children: cfg.clock
6471
+ children: displayClock
6421
6472
  })
6422
6473
  ]
6423
6474
  }),
@@ -7200,6 +7251,49 @@ function hexToRgb(hex) {
7200
7251
  return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
7201
7252
  }
7202
7253
  var FADE_DURATION_MS = 1e3;
7254
+ var ENTER_ANIMATION_ALIASES = {
7255
+ fade: "fade",
7256
+ slide_from_left: "slide_from_left",
7257
+ slide_from_right: "slide_from_right",
7258
+ slide_from_top: "slide_from_top",
7259
+ slide_from_bottom: "slide_from_bottom",
7260
+ slide_left: "slide_from_left",
7261
+ slide_right: "slide_from_right",
7262
+ slide_up: "slide_from_top",
7263
+ slide_down: "slide_from_bottom"
7264
+ };
7265
+ function normalizeEnterAnimation(v) {
7266
+ var _ENTER_ANIMATION_ALIASES_v;
7267
+ if (typeof v !== "string") return null;
7268
+ return (_ENTER_ANIMATION_ALIASES_v = ENTER_ANIMATION_ALIASES[v]) !== null && _ENTER_ANIMATION_ALIASES_v !== void 0 ? _ENTER_ANIMATION_ALIASES_v : null;
7269
+ }
7270
+ function getEnterAnimation(overlay) {
7271
+ var flat = overlay.enter_animation;
7272
+ var fromFlat = normalizeEnterAnimation(flat);
7273
+ if (fromFlat) return fromFlat;
7274
+ if (overlay.content) {
7275
+ try {
7276
+ var parsed = JSON.parse(overlay.content);
7277
+ var fromContent = normalizeEnterAnimation(parsed === null || parsed === void 0 ? void 0 : parsed.enterAnimation);
7278
+ if (fromContent) return fromContent;
7279
+ } catch (unused) {}
7280
+ }
7281
+ return "fade";
7282
+ }
7283
+ function enterHiddenTransform(anim) {
7284
+ switch(anim){
7285
+ case "slide_from_left":
7286
+ return "translateX(-120%)";
7287
+ case "slide_from_right":
7288
+ return "translateX(120%)";
7289
+ case "slide_from_top":
7290
+ return "translateY(-120%)";
7291
+ case "slide_from_bottom":
7292
+ return "translateY(120%)";
7293
+ default:
7294
+ return "";
7295
+ }
7296
+ }
7203
7297
  var SHOWCASE_CYCLE_MS_DEFAULT = 36e3;
7204
7298
  var SHOWCASE_MIN_BEAT_MS = 6e3;
7205
7299
  var BEAT_POP_IN_MS = 520;
@@ -7622,6 +7716,14 @@ var OverlayRenderer = function OverlayRenderer(param) {
7622
7716
  w: width,
7623
7717
  h: height
7624
7718
  };
7719
+ var enterAnim = getEnterAnimation(overlay);
7720
+ var hasSlide = enterAnim !== "fade" && !useShowcasePop;
7721
+ var slideTransform = hasSlide && !visible ? enterHiddenTransform(enterAnim) : "";
7722
+ var popTransform = showcaseMode && useShowcasePop ? "scale(".concat(popScale, ")") : "";
7723
+ var combinedTransform = [
7724
+ slideTransform,
7725
+ popTransform
7726
+ ].filter(Boolean).join(" ");
7625
7727
  return /* @__PURE__ */ jsxs("div", {
7626
7728
  style: {
7627
7729
  position: "absolute",
@@ -7630,8 +7732,8 @@ var OverlayRenderer = function OverlayRenderer(param) {
7630
7732
  width: "".concat(width, "px"),
7631
7733
  height: "".concat(height, "px"),
7632
7734
  opacity: opacity,
7633
- transition: useShowcasePop ? "none" : "opacity ".concat(FADE_DURATION_MS, "ms ease"),
7634
- transform: showcaseMode && useShowcasePop ? "scale(".concat(popScale, ")") : void 0,
7735
+ transition: useShowcasePop ? "none" : hasSlide ? "opacity ".concat(FADE_DURATION_MS, "ms ease, transform ").concat(FADE_DURATION_MS, "ms cubic-bezier(0.22, 1, 0.36, 1)") : "opacity ".concat(FADE_DURATION_MS, "ms ease"),
7736
+ transform: combinedTransform || void 0,
7635
7737
  transformOrigin: showcaseMode && useShowcasePop ? "center center" : void 0,
7636
7738
  zIndex: overlay.z_index,
7637
7739
  overflow: "hidden"