stormcloud-video-player 0.7.9 → 0.7.10

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.
@@ -7053,10 +7053,13 @@ function hexToRgb(hex) {
7053
7053
  var num = parseInt(clean.length === 3 ? clean.replace(/./g, "$&$&") : clean, 16);
7054
7054
  return "".concat(num >> 16 & 255, ",").concat(num >> 8 & 255, ",").concat(num & 255);
7055
7055
  }
7056
+ var FADE_DURATION_MS = 1e3;
7056
7057
  var OverlayRenderer = function OverlayRenderer(param) {
7057
7058
  var overlays = param.overlays, currentTime = param.currentTime, videoRef = param.videoRef, coordinateSpace = param.coordinateSpace;
7058
7059
  var _ref = _sliced_to_array((0, import_react.useState)(null), 2), dims = _ref[0], setDims = _ref[1];
7059
7060
  var rafRef = (0, import_react.useRef)(null);
7061
+ var _ref1 = _sliced_to_array((0, import_react.useState)(/* @__PURE__ */ new Map()), 2), fadeMap = _ref1[0], setFadeMap = _ref1[1];
7062
+ var removeTimers = (0, import_react.useRef)(/* @__PURE__ */ new Map());
7060
7063
  var updateDims = (0, import_react.useCallback)(function() {
7061
7064
  var video = videoRef.current;
7062
7065
  if (video) {
@@ -7087,10 +7090,181 @@ var OverlayRenderer = function OverlayRenderer(param) {
7087
7090
  }, [
7088
7091
  updateDims
7089
7092
  ]);
7090
- var activeOverlays = overlays.filter(function(o) {
7091
- return isOverlayActive(o, currentTime);
7092
- });
7093
- if (!dims || activeOverlays.length === 0) return null;
7093
+ var activeOverlays = (0, import_react.useMemo)(function() {
7094
+ return overlays.filter(function(o) {
7095
+ return isOverlayActive(o, currentTime);
7096
+ });
7097
+ }, [
7098
+ overlays,
7099
+ currentTime
7100
+ ]);
7101
+ (0, import_react.useEffect)(function() {
7102
+ var activeIds = new Set(activeOverlays.map(function(o) {
7103
+ return o.id;
7104
+ }));
7105
+ setFadeMap(function(prev) {
7106
+ var next = new Map(prev);
7107
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7108
+ try {
7109
+ for(var _iterator = activeOverlays[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7110
+ var overlay = _step.value;
7111
+ if (!next.has(overlay.id)) {
7112
+ next.set(overlay.id, {
7113
+ overlay: overlay,
7114
+ visible: false
7115
+ });
7116
+ } else {
7117
+ var existing = next.get(overlay.id);
7118
+ next.set(overlay.id, _object_spread_props(_object_spread({}, existing), {
7119
+ overlay: overlay
7120
+ }));
7121
+ }
7122
+ }
7123
+ } catch (err) {
7124
+ _didIteratorError = true;
7125
+ _iteratorError = err;
7126
+ } finally{
7127
+ try {
7128
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7129
+ _iterator.return();
7130
+ }
7131
+ } finally{
7132
+ if (_didIteratorError) {
7133
+ throw _iteratorError;
7134
+ }
7135
+ }
7136
+ }
7137
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
7138
+ try {
7139
+ var _loop = function() {
7140
+ var _step_value = _sliced_to_array(_step1.value, 2), id = _step_value[0], state = _step_value[1];
7141
+ if (!activeIds.has(id) && state.visible) {
7142
+ next.set(id, _object_spread_props(_object_spread({}, state), {
7143
+ visible: false
7144
+ }));
7145
+ if (!removeTimers.current.has(id)) {
7146
+ var timer = setTimeout(function() {
7147
+ setFadeMap(function(m) {
7148
+ var updated = new Map(m);
7149
+ updated.delete(id);
7150
+ return updated;
7151
+ });
7152
+ removeTimers.current.delete(id);
7153
+ }, FADE_DURATION_MS);
7154
+ removeTimers.current.set(id, timer);
7155
+ }
7156
+ } else if (!activeIds.has(id) && !state.visible) {}
7157
+ };
7158
+ for(var _iterator1 = next[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true)_loop();
7159
+ } catch (err) {
7160
+ _didIteratorError1 = true;
7161
+ _iteratorError1 = err;
7162
+ } finally{
7163
+ try {
7164
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
7165
+ _iterator1.return();
7166
+ }
7167
+ } finally{
7168
+ if (_didIteratorError1) {
7169
+ throw _iteratorError1;
7170
+ }
7171
+ }
7172
+ }
7173
+ return next;
7174
+ });
7175
+ }, [
7176
+ activeOverlays
7177
+ ]);
7178
+ (0, import_react.useEffect)(function() {
7179
+ var toFadeIn = [];
7180
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7181
+ try {
7182
+ var _loop = function() {
7183
+ var _step_value = _sliced_to_array(_step.value, 2), id = _step_value[0], state = _step_value[1];
7184
+ if (!state.visible) {
7185
+ var isActive = activeOverlays.some(function(o) {
7186
+ return o.id === id;
7187
+ });
7188
+ if (isActive) toFadeIn.push(id);
7189
+ }
7190
+ };
7191
+ for(var _iterator = fadeMap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
7192
+ } catch (err) {
7193
+ _didIteratorError = true;
7194
+ _iteratorError = err;
7195
+ } finally{
7196
+ try {
7197
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7198
+ _iterator.return();
7199
+ }
7200
+ } finally{
7201
+ if (_didIteratorError) {
7202
+ throw _iteratorError;
7203
+ }
7204
+ }
7205
+ }
7206
+ if (toFadeIn.length === 0) return;
7207
+ var raf = requestAnimationFrame(function() {
7208
+ setFadeMap(function(prev) {
7209
+ var next = new Map(prev);
7210
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7211
+ try {
7212
+ for(var _iterator = toFadeIn[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7213
+ var id = _step.value;
7214
+ var state = next.get(id);
7215
+ if (state) next.set(id, _object_spread_props(_object_spread({}, state), {
7216
+ visible: true
7217
+ }));
7218
+ }
7219
+ } catch (err) {
7220
+ _didIteratorError = true;
7221
+ _iteratorError = err;
7222
+ } finally{
7223
+ try {
7224
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7225
+ _iterator.return();
7226
+ }
7227
+ } finally{
7228
+ if (_didIteratorError) {
7229
+ throw _iteratorError;
7230
+ }
7231
+ }
7232
+ }
7233
+ return next;
7234
+ });
7235
+ });
7236
+ return function() {
7237
+ return cancelAnimationFrame(raf);
7238
+ };
7239
+ }, [
7240
+ fadeMap,
7241
+ activeOverlays
7242
+ ]);
7243
+ (0, import_react.useEffect)(function() {
7244
+ return function() {
7245
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7246
+ try {
7247
+ for(var _iterator = removeTimers.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7248
+ var timer = _step.value;
7249
+ clearTimeout(timer);
7250
+ }
7251
+ } catch (err) {
7252
+ _didIteratorError = true;
7253
+ _iteratorError = err;
7254
+ } finally{
7255
+ try {
7256
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7257
+ _iterator.return();
7258
+ }
7259
+ } finally{
7260
+ if (_didIteratorError) {
7261
+ throw _iteratorError;
7262
+ }
7263
+ }
7264
+ }
7265
+ };
7266
+ }, []);
7267
+ if (!dims || fadeMap.size === 0) return null;
7094
7268
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
7095
7269
  "aria-hidden": "true",
7096
7270
  style: {
@@ -7103,14 +7277,16 @@ var OverlayRenderer = function OverlayRenderer(param) {
7103
7277
  overflow: "hidden",
7104
7278
  zIndex: 8
7105
7279
  },
7106
- children: activeOverlays.map(function(overlay) {
7280
+ children: _to_consumable_array(fadeMap.values()).map(function(param) {
7281
+ var overlay = param.overlay, visible = param.visible;
7107
7282
  var scaleX = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.width) ? dims.displayWidth / coordinateSpace.width : dims.scaleX;
7108
7283
  var scaleY = (coordinateSpace === null || coordinateSpace === void 0 ? void 0 : coordinateSpace.height) ? dims.displayHeight / coordinateSpace.height : dims.scaleY;
7109
7284
  var left = overlay.x * scaleX;
7110
7285
  var top = overlay.y * scaleY;
7111
7286
  var width = overlay.width * scaleX;
7112
7287
  var height = overlay.height * scaleY;
7113
- var opacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
7288
+ var baseOpacity = Math.max(0, Math.min(100, overlay.opacity)) / 100;
7289
+ var opacity = visible ? baseOpacity : 0;
7114
7290
  var sz = {
7115
7291
  w: width,
7116
7292
  h: height
@@ -7123,6 +7299,7 @@ var OverlayRenderer = function OverlayRenderer(param) {
7123
7299
  width: "".concat(width, "px"),
7124
7300
  height: "".concat(height, "px"),
7125
7301
  opacity: opacity,
7302
+ transition: "opacity ".concat(FADE_DURATION_MS, "ms ease"),
7126
7303
  zIndex: overlay.z_index,
7127
7304
  overflow: "hidden"
7128
7305
  },