@micromag/viewer 0.3.762 → 0.3.763

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 (2) hide show
  1. package/es/index.js +115 -47
  2. package/package.json +10 -10
package/es/index.js CHANGED
@@ -2738,6 +2738,8 @@ var propTypes$2 = {
2738
2738
  renderContext: PropTypes$1.renderContext,
2739
2739
  onScreenChange: PropTypes.func,
2740
2740
  tapNextScreenWidthPercent: PropTypes.number,
2741
+ tapMaximumDuration: PropTypes.number,
2742
+ longPressPauseDelay: PropTypes.number,
2741
2743
  storyIsParsed: PropTypes.bool,
2742
2744
  neighborScreensActive: PropTypes.number,
2743
2745
  neighborScreenOffset: PropTypes.number,
@@ -2795,6 +2797,8 @@ var defaultProps$2 = {
2795
2797
  renderContext: 'view',
2796
2798
  onScreenChange: null,
2797
2799
  tapNextScreenWidthPercent: 0.8,
2800
+ tapMaximumDuration: 1500,
2801
+ longPressPauseDelay: 300,
2798
2802
  storyIsParsed: false,
2799
2803
  neighborScreensActive: 1,
2800
2804
  neighborScreenOffset: 105,
@@ -2847,6 +2851,8 @@ var Viewer = function Viewer(_ref) {
2847
2851
  deviceScreens = _ref.deviceScreens,
2848
2852
  renderContext = _ref.renderContext,
2849
2853
  tapNextScreenWidthPercent = _ref.tapNextScreenWidthPercent,
2854
+ tapMaximumDuration = _ref.tapMaximumDuration,
2855
+ longPressPauseDelay = _ref.longPressPauseDelay,
2850
2856
  storyIsParsed = _ref.storyIsParsed,
2851
2857
  neighborScreensActive = _ref.neighborScreensActive,
2852
2858
  neighborScreenOffset = _ref.neighborScreenOffset,
@@ -2973,6 +2979,7 @@ var Viewer = function Viewer(_ref) {
2973
2979
  var withoutScreensTransforms = isStatic || isCapture;
2974
2980
  var _usePlaybackContext = usePlaybackContext(),
2975
2981
  playing = _usePlaybackContext.playing,
2982
+ setPlaying = _usePlaybackContext.setPlaying,
2976
2983
  _usePlaybackContext$c = _usePlaybackContext.controls,
2977
2984
  playbackControls = _usePlaybackContext$c === void 0 ? false : _usePlaybackContext$c,
2978
2985
  _usePlaybackContext$c2 = _usePlaybackContext.controlsVisible,
@@ -3111,13 +3118,59 @@ var Viewer = function Viewer(_ref) {
3111
3118
  currentScreenInteractionEnabled = _useScreenInteraction.currentScreenInteractionEnabled,
3112
3119
  enableInteraction = _useScreenInteraction.enableInteraction,
3113
3120
  disableInteraction = _useScreenInteraction.disableInteraction;
3121
+
3122
+ // Long press to pause playback
3123
+ var _useState5 = useState(null),
3124
+ _useState6 = _slicedToArray(_useState5, 2),
3125
+ pointerDownTime = _useState6[0],
3126
+ setPointerDownTime = _useState6[1];
3127
+ var _useState7 = useState(false),
3128
+ _useState8 = _slicedToArray(_useState7, 2),
3129
+ longPressPaused = _useState8[0],
3130
+ setLongPressPaused = _useState8[1];
3131
+ useEffect(function () {
3132
+ setLongPressPaused(false);
3133
+ setPointerDownTime(null);
3134
+ }, [screenIndex]);
3135
+ useEffect(function () {
3136
+ if (pointerDownTime === null || !playing) {
3137
+ return function () {};
3138
+ }
3139
+ var interval = setTimeout(function () {
3140
+ setPlaying(false);
3141
+ setLongPressPaused(true);
3142
+ }, longPressPauseDelay);
3143
+ return function () {
3144
+ return clearInterval(interval);
3145
+ };
3146
+ }, [playing, pointerDownTime, longPressPauseDelay]);
3147
+ var onPointerDown = useCallback(function () {
3148
+ setPointerDownTime(Date.now());
3149
+ }, []);
3114
3150
  var onTap = useCallback(function (_ref1) {
3115
3151
  var currentTarget = _ref1.currentTarget,
3116
3152
  event = _ref1.event,
3117
3153
  target = _ref1.target,
3118
3154
  _ref1$xy = _slicedToArray(_ref1.xy, 2),
3119
3155
  x = _ref1$xy[0],
3120
- y = _ref1$xy[1];
3156
+ y = _ref1$xy[1],
3157
+ elapsedTime = _ref1.elapsedTime,
3158
+ _ref1$args = _slicedToArray(_ref1.args, 1),
3159
+ bindState = _ref1$args[0];
3160
+ setPointerDownTime(null);
3161
+ var _ref10 = bindState || {},
3162
+ _ref10$playing = _ref10.playing,
3163
+ currentPlaying = _ref10$playing === void 0 ? false : _ref10$playing,
3164
+ _ref10$longPressPause = _ref10.longPressPaused,
3165
+ currentLongPressPaused = _ref10$longPressPause === void 0 ? false : _ref10$longPressPause;
3166
+ if (!currentPlaying && currentLongPressPaused) {
3167
+ setPlaying(true);
3168
+ setLongPressPaused(false);
3169
+ return;
3170
+ }
3171
+ if (tapMaximumDuration !== null && elapsedTime > tapMaximumDuration) {
3172
+ return;
3173
+ }
3121
3174
  // if (event) {
3122
3175
  // event.stopPropagation();
3123
3176
  // }
@@ -3129,13 +3182,13 @@ var Viewer = function Viewer(_ref) {
3129
3182
  x: x,
3130
3183
  y: y
3131
3184
  });
3132
- }, [interactWithScreen, screenIndex]);
3133
- var computeScreenProgress = useCallback(function (_ref10) {
3134
- var active = _ref10.active,
3135
- _ref10$movement = _slicedToArray(_ref10.movement, 1),
3136
- mx = _ref10$movement[0],
3137
- _ref10$velocity = _slicedToArray(_ref10.velocity, 1),
3138
- vx = _ref10$velocity[0];
3185
+ }, [interactWithScreen, screenIndex, tapMaximumDuration]);
3186
+ var computeScreenProgress = useCallback(function (_ref11) {
3187
+ var active = _ref11.active,
3188
+ _ref11$movement = _slicedToArray(_ref11.movement, 1),
3189
+ mx = _ref11$movement[0],
3190
+ _ref11$velocity = _slicedToArray(_ref11.velocity, 1),
3191
+ vx = _ref11$velocity[0];
3139
3192
  var p = mx / screenContainerWidth; // drag "ratio": how much of the screen width has been swiped?
3140
3193
  var forwards = mx < 0; // true if swiping to left (to navigate forwards)
3141
3194
  var newIndex = !forwards ? screenIndex - 1 : screenIndex + 1; // which item index are we moving towards?
@@ -3148,8 +3201,19 @@ var Viewer = function Viewer(_ref) {
3148
3201
  }
3149
3202
  return screenIndex - progress;
3150
3203
  }, [screenContainerWidth, screenIndex]);
3151
- var onScreenProgress = useCallback(function (progress, _ref11) {
3152
- var active = _ref11.active;
3204
+ var onScreenProgress = useCallback(function (progress, _ref12) {
3205
+ var active = _ref12.active,
3206
+ _ref12$args = _slicedToArray(_ref12.args, 1),
3207
+ bindState = _ref12$args[0];
3208
+ var _ref13 = bindState || {},
3209
+ _ref13$playing = _ref13.playing,
3210
+ currentPlaying = _ref13$playing === void 0 ? false : _ref13$playing,
3211
+ _ref13$longPressPause = _ref13.longPressPaused,
3212
+ currentLongPressPaused = _ref13$longPressPause === void 0 ? false : _ref13$longPressPause;
3213
+ if (!active && !currentPlaying && currentLongPressPaused) {
3214
+ setPlaying(true);
3215
+ setLongPressPaused(false);
3216
+ }
3153
3217
  var delta = Math.abs(progress - screenIndex);
3154
3218
  var reachedBounds = progress < 0 || progress >= screensCount; // have we reached the end of the stack?
3155
3219
  if (!active && delta === 1 && !reachedBounds) {
@@ -3159,10 +3223,10 @@ var Viewer = function Viewer(_ref) {
3159
3223
  });
3160
3224
  }
3161
3225
  }, [onScreenNavigate, screenIndex]);
3162
- var _useState5 = useState(true),
3163
- _useState6 = _slicedToArray(_useState5, 2),
3164
- transitioned = _useState6[0],
3165
- setTransitioned = _useState6[1];
3226
+ var _useState9 = useState(true),
3227
+ _useState0 = _slicedToArray(_useState9, 2),
3228
+ transitioned = _useState0[0],
3229
+ setTransitioned = _useState0[1];
3166
3230
  var onTransitionStart = useCallback(function () {
3167
3231
  setTransitioned(false);
3168
3232
  }, [setTransitioned]);
@@ -3191,6 +3255,7 @@ var Viewer = function Viewer(_ref) {
3191
3255
  dragDisabled: withoutGestures || !currentScreenInteractionEnabled,
3192
3256
  computeProgress: computeScreenProgress,
3193
3257
  onProgress: onScreenProgress,
3258
+ onPointerDown: onPointerDown,
3194
3259
  onTap: onTap,
3195
3260
  springParams: springParams,
3196
3261
  dragOptions: {
@@ -3260,11 +3325,11 @@ var Viewer = function Viewer(_ref) {
3260
3325
  menuDotsContainerRef = _useDimensionObserver3.ref,
3261
3326
  _useDimensionObserver4 = _useDimensionObserver3.height,
3262
3327
  menuDotsContainerHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
3263
- var onClickScreen = useCallback(function (_ref12) {
3264
- var itemScreenId = _ref12.screenId;
3328
+ var onClickScreen = useCallback(function (_ref14) {
3329
+ var itemScreenId = _ref14.screenId;
3265
3330
  onInteractionPrivate();
3266
- var index = screens.findIndex(function (_ref13) {
3267
- var id = _ref13.id;
3331
+ var index = screens.findIndex(function (_ref15) {
3332
+ var id = _ref15.id;
3268
3333
  return id === itemScreenId;
3269
3334
  });
3270
3335
  changeIndex(index);
@@ -3327,34 +3392,34 @@ var Viewer = function Viewer(_ref) {
3327
3392
  }
3328
3393
  }
3329
3394
  }, []);
3330
- var _useState7 = useState(null),
3331
- _useState8 = _slicedToArray(_useState7, 2),
3332
- currentShareIncentive = _useState8[0],
3333
- setCurrentShareIncentive = _useState8[1];
3334
- var _useState9 = useState(false),
3335
- _useState0 = _slicedToArray(_useState9, 2),
3336
- shareIncentiveVisible = _useState0[0],
3337
- setShareIncentiveVisible = _useState0[1];
3338
- var _ref14 = currentScreen || {},
3339
- _ref14$header = _ref14.header,
3340
- header = _ref14$header === void 0 ? null : _ref14$header;
3341
- var _ref15 = header || {},
3342
- _ref15$shareIncentive = _ref15.shareIncentive,
3343
- shareIncentive = _ref15$shareIncentive === void 0 ? null : _ref15$shareIncentive;
3344
- var _ref16 = shareIncentive || {},
3345
- _ref16$active = _ref16.active,
3346
- hasShareIncentive = _ref16$active === void 0 ? false : _ref16$active,
3347
- _ref16$label = _ref16.label,
3348
- shareIncentiveLabel = _ref16$label === void 0 ? null : _ref16$label;
3349
- var _ref17 = currentShareIncentive || {},
3350
- _ref17$label = _ref17.label,
3351
- currentShareIncentiveLabel = _ref17$label === void 0 ? null : _ref17$label;
3352
- var _ref18 = shareIncentiveLabel || {},
3353
- _ref18$body = _ref18.body,
3354
- incentiveLabel = _ref18$body === void 0 ? null : _ref18$body;
3355
- var _ref19 = currentShareIncentiveLabel || {},
3356
- _ref19$body = _ref19.body,
3357
- currentIncentiveLabel = _ref19$body === void 0 ? null : _ref19$body;
3395
+ var _useState1 = useState(null),
3396
+ _useState10 = _slicedToArray(_useState1, 2),
3397
+ currentShareIncentive = _useState10[0],
3398
+ setCurrentShareIncentive = _useState10[1];
3399
+ var _useState11 = useState(false),
3400
+ _useState12 = _slicedToArray(_useState11, 2),
3401
+ shareIncentiveVisible = _useState12[0],
3402
+ setShareIncentiveVisible = _useState12[1];
3403
+ var _ref16 = currentScreen || {},
3404
+ _ref16$header = _ref16.header,
3405
+ header = _ref16$header === void 0 ? null : _ref16$header;
3406
+ var _ref17 = header || {},
3407
+ _ref17$shareIncentive = _ref17.shareIncentive,
3408
+ shareIncentive = _ref17$shareIncentive === void 0 ? null : _ref17$shareIncentive;
3409
+ var _ref18 = shareIncentive || {},
3410
+ _ref18$active = _ref18.active,
3411
+ hasShareIncentive = _ref18$active === void 0 ? false : _ref18$active,
3412
+ _ref18$label = _ref18.label,
3413
+ shareIncentiveLabel = _ref18$label === void 0 ? null : _ref18$label;
3414
+ var _ref19 = currentShareIncentive || {},
3415
+ _ref19$label = _ref19.label,
3416
+ currentShareIncentiveLabel = _ref19$label === void 0 ? null : _ref19$label;
3417
+ var _ref20 = shareIncentiveLabel || {},
3418
+ _ref20$body = _ref20.body,
3419
+ incentiveLabel = _ref20$body === void 0 ? null : _ref20$body;
3420
+ var _ref21 = currentShareIncentiveLabel || {},
3421
+ _ref21$body = _ref21.body,
3422
+ currentIncentiveLabel = _ref21$body === void 0 ? null : _ref21$body;
3358
3423
  useEffect(function () {
3359
3424
  setShareIncentiveVisible(true);
3360
3425
  if (hasShareIncentive && shareIncentiveLabel !== currentShareIncentiveLabel) {
@@ -3512,7 +3577,10 @@ var Viewer = function Viewer(_ref) {
3512
3577
  refDots: menuDotsContainerRef
3513
3578
  }) : null, ready || withoutScreensTransforms ? /*#__PURE__*/React.createElement("div", Object.assign({
3514
3579
  className: styles$7.content
3515
- }, dragContentBind()), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React.createElement(NavigationButton, {
3580
+ }, dragContentBind({
3581
+ playing: playing,
3582
+ longPressPaused: longPressPaused
3583
+ })), !withoutNavigationArrow && !withNeighborScreens && !navigationDisabled && screenIndex > 0 && screens.length > 1 ? /*#__PURE__*/React.createElement(NavigationButton, {
3516
3584
  direction: "previous",
3517
3585
  className: classNames([styles$7.navButton, styles$7.previous]),
3518
3586
  onClick: gotoPreviousScreen,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/viewer",
3
- "version": "0.3.762",
3
+ "version": "0.3.763",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -64,14 +64,14 @@
64
64
  "dependencies": {
65
65
  "@babel/runtime": "^7.13.10",
66
66
  "@folklore/routes": "^0.2.36",
67
- "@micromag/core": "^0.3.757",
68
- "@micromag/element-badge": "^0.3.757",
69
- "@micromag/element-scroll": "^0.3.762",
70
- "@micromag/element-share-options": "^0.3.757",
71
- "@micromag/element-webview": "^0.3.757",
72
- "@micromag/elements": "^0.3.762",
73
- "@micromag/intl": "^0.3.757",
74
- "@micromag/screens": "^0.3.762",
67
+ "@micromag/core": "^0.3.763",
68
+ "@micromag/element-badge": "^0.3.763",
69
+ "@micromag/element-scroll": "^0.3.763",
70
+ "@micromag/element-share-options": "^0.3.763",
71
+ "@micromag/element-webview": "^0.3.763",
72
+ "@micromag/elements": "^0.3.763",
73
+ "@micromag/intl": "^0.3.763",
74
+ "@micromag/screens": "^0.3.763",
75
75
  "@react-spring/core": "^9.6.1",
76
76
  "@react-spring/web": "^9.6.1",
77
77
  "@use-gesture/react": "^10.3.0",
@@ -91,5 +91,5 @@
91
91
  "access": "public",
92
92
  "registry": "https://registry.npmjs.org/"
93
93
  },
94
- "gitHead": "cb061071018260522046a4c3112f39058c1289ea"
94
+ "gitHead": "843084e78ba9bf2de883b2c958bd38853cdc20e6"
95
95
  }