@ndla/ui 3.3.7 → 3.3.12

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 (115) hide show
  1. package/es/Article/Article.js +23 -1
  2. package/es/Article/ArticleNotions.js +80 -32
  3. package/es/Breadcrumb/Breadcrumb.js +2 -1
  4. package/es/Breadcrumblist/Breadcrumblist.js +14 -10
  5. package/es/CloseButton/CloseButton.js +62 -0
  6. package/es/CloseButton/index.js +9 -0
  7. package/es/Frontpage/FrontpageAllSubjects.js +7 -7
  8. package/es/Frontpage/FrontpageProgramMenu.js +10 -10
  9. package/es/MediaList/MediaList.js +22 -73
  10. package/es/MessageBox/MessageBox.js +146 -78
  11. package/es/MessageBox/MessageBoxTag.js +37 -0
  12. package/es/MessageBox/index.js +3 -1
  13. package/es/NDLAFilm/FilmSlideshow.js +214 -247
  14. package/es/NDLAFilm/NavigationArrow.js +13 -60
  15. package/es/NDLAFilm/SlideshowIndicator.js +16 -63
  16. package/es/NDLAFilm/interfaces.js +0 -0
  17. package/es/Programme/Programme.js +15 -8
  18. package/es/SearchTypeResult/SearchFieldHeader.js +5 -5
  19. package/es/SearchTypeResult/SearchHeader.js +9 -9
  20. package/es/SearchTypeResult/SearchItem.js +19 -19
  21. package/es/SearchTypeResult/SearchNotionItem.js +12 -12
  22. package/es/SearchTypeResult/SearchNotionsResult.js +9 -14
  23. package/es/Spinner/Spinner.js +3 -3
  24. package/es/index.js +2 -1
  25. package/es/locale/messages-en.js +10 -0
  26. package/es/locale/messages-nb.js +10 -0
  27. package/es/locale/messages-nn.js +10 -0
  28. package/lib/Article/Article.d.ts +3 -1
  29. package/lib/Article/Article.js +25 -3
  30. package/lib/Article/ArticleNotions.js +79 -30
  31. package/lib/Breadcrumb/Breadcrumb.js +2 -1
  32. package/lib/Breadcrumblist/Breadcrumblist.d.ts +2 -1
  33. package/lib/Breadcrumblist/Breadcrumblist.js +15 -10
  34. package/lib/CloseButton/CloseButton.d.ts +6 -0
  35. package/lib/CloseButton/CloseButton.js +69 -0
  36. package/lib/CloseButton/index.d.ts +9 -0
  37. package/lib/CloseButton/index.js +15 -0
  38. package/lib/Frontpage/FrontpageAllSubjects.d.ts +1 -1
  39. package/lib/Frontpage/FrontpageAllSubjects.js +7 -7
  40. package/lib/Frontpage/FrontpageProgramMenu.js +10 -10
  41. package/lib/MediaList/MediaList.d.ts +48 -0
  42. package/lib/MediaList/MediaList.js +24 -78
  43. package/lib/MediaList/index.d.ts +8 -0
  44. package/lib/MessageBox/MessageBox.d.ts +22 -6
  45. package/lib/MessageBox/MessageBox.js +146 -77
  46. package/lib/MessageBox/MessageBoxTag.d.ts +12 -0
  47. package/lib/MessageBox/MessageBoxTag.js +44 -0
  48. package/lib/MessageBox/index.d.ts +3 -1
  49. package/lib/MessageBox/index.js +22 -2
  50. package/lib/NDLAFilm/FilmSlideshow.d.ts +16 -0
  51. package/lib/NDLAFilm/FilmSlideshow.js +214 -248
  52. package/lib/NDLAFilm/NavigationArrow.d.ts +15 -0
  53. package/lib/NDLAFilm/NavigationArrow.js +20 -65
  54. package/lib/NDLAFilm/SlideshowIndicator.d.ts +15 -0
  55. package/lib/NDLAFilm/SlideshowIndicator.js +16 -69
  56. package/lib/NDLAFilm/interfaces.d.ts +10 -0
  57. package/lib/NDLAFilm/interfaces.js +1 -0
  58. package/lib/NDLAFilm/shapes.d.ts +15 -0
  59. package/lib/Programme/Programme.d.ts +2 -1
  60. package/lib/Programme/Programme.js +18 -9
  61. package/lib/SearchTypeResult/SearchFieldHeader.d.ts +3 -3
  62. package/lib/SearchTypeResult/SearchFieldHeader.js +5 -5
  63. package/lib/SearchTypeResult/SearchHeader.d.ts +3 -3
  64. package/lib/SearchTypeResult/SearchHeader.js +9 -9
  65. package/lib/SearchTypeResult/SearchItem.d.ts +2 -3
  66. package/lib/SearchTypeResult/SearchItem.js +19 -19
  67. package/lib/SearchTypeResult/SearchNotionItem.d.ts +1 -1
  68. package/lib/SearchTypeResult/SearchNotionItem.js +12 -12
  69. package/lib/SearchTypeResult/SearchNotionsResult.js +8 -13
  70. package/lib/SearchTypeResult/index.d.ts +1 -0
  71. package/lib/Spinner/Spinner.d.ts +3 -3
  72. package/lib/Spinner/Spinner.js +2 -2
  73. package/lib/index.d.ts +2 -1
  74. package/lib/index.js +23 -0
  75. package/lib/locale/messages-en.d.ts +10 -0
  76. package/lib/locale/messages-en.js +10 -0
  77. package/lib/locale/messages-nb.d.ts +10 -0
  78. package/lib/locale/messages-nb.js +10 -0
  79. package/lib/locale/messages-nn.d.ts +10 -0
  80. package/lib/locale/messages-nn.js +10 -0
  81. package/package.json +10 -10
  82. package/src/Article/Article.tsx +17 -0
  83. package/src/Article/ArticleNotions.tsx +10 -7
  84. package/src/Breadcrumb/Breadcrumb.tsx +1 -1
  85. package/src/Breadcrumblist/Breadcrumblist.tsx +5 -3
  86. package/src/CloseButton/CloseButton.tsx +40 -0
  87. package/src/CloseButton/index.ts +11 -0
  88. package/src/Frontpage/FrontpageAllSubjects.tsx +2 -2
  89. package/src/Frontpage/FrontpageProgramMenu.tsx +1 -0
  90. package/src/MediaList/MediaList.tsx +158 -0
  91. package/src/MediaList/{index.js → index.ts} +0 -0
  92. package/src/MessageBox/MessageBox.tsx +117 -96
  93. package/src/MessageBox/MessageBoxTag.tsx +35 -0
  94. package/src/MessageBox/index.ts +3 -1
  95. package/src/NDLAFilm/FilmSlideshow.tsx +265 -0
  96. package/src/NDLAFilm/NavigationArrow.tsx +42 -0
  97. package/src/NDLAFilm/SlideshowIndicator.tsx +40 -0
  98. package/src/NDLAFilm/interfaces.ts +10 -0
  99. package/src/NDLAFilm/{shapes.js → shapes.ts} +0 -0
  100. package/src/Programme/Programme.tsx +7 -3
  101. package/src/SearchTypeResult/SearchFieldHeader.tsx +3 -3
  102. package/src/SearchTypeResult/SearchHeader.tsx +3 -3
  103. package/src/SearchTypeResult/SearchItem.tsx +4 -5
  104. package/src/SearchTypeResult/SearchNotionItem.tsx +1 -2
  105. package/src/SearchTypeResult/SearchNotionsResult.tsx +3 -8
  106. package/src/SearchTypeResult/index.ts +2 -0
  107. package/src/Spinner/Spinner.tsx +9 -5
  108. package/src/index.ts +2 -1
  109. package/src/locale/messages-en.ts +14 -0
  110. package/src/locale/messages-nb.ts +14 -0
  111. package/src/locale/messages-nn.ts +14 -0
  112. package/src/MediaList/MediaList.jsx +0 -182
  113. package/src/NDLAFilm/FilmSlideshow.jsx +0 -277
  114. package/src/NDLAFilm/NavigationArrow.jsx +0 -46
  115. package/src/NDLAFilm/SlideshowIndicator.jsx +0 -43
@@ -0,0 +1,37 @@
1
+ import _styled from "@emotion/styled-base";
2
+
3
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
4
+
5
+ /**
6
+ * Copyright (c) 2022-present, NDLA.
7
+ *
8
+ * This source code is licensed under the GPLv3 license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ *
11
+ */
12
+ import React from 'react';
13
+ import { useTranslation } from 'react-i18next';
14
+ import { jsx as ___EmotionJSX } from "@emotion/core";
15
+
16
+ var MiniMesssage = _styled("div", {
17
+ target: "ew8lqb00",
18
+ label: "MiniMesssage"
19
+ })(process.env.NODE_ENV === "production" ? {
20
+ name: "2fjqvn",
21
+ styles: "background-color:#f9f4c8;text-align:center;display:inline-block;padding:5px;text-transform:uppercase;font-weight:600;font-size:14px;margin-left:10px;margin-bottom:10px;border-radius:5px;"
22
+ } : {
23
+ name: "2fjqvn",
24
+ styles: "background-color:#f9f4c8;text-align:center;display:inline-block;padding:5px;text-transform:uppercase;font-weight:600;font-size:14px;margin-left:10px;margin-bottom:10px;border-radius:5px;",
25
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1lc3NhZ2VCb3hUYWcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWErQiIsImZpbGUiOiJNZXNzYWdlQm94VGFnLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuY29uc3QgTWluaU1lc3NzYWdlID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjRjODtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDVweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuYDtcblxudHlwZSBQcm9wcyA9IHtcbiAgdGFnTWVzc2FnZTogc3RyaW5nO1xufTtcbmV4cG9ydCBjb25zdCBNZXNzYWdlQm94VGFnID0gKHsgdGFnTWVzc2FnZSB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiA8TWluaU1lc3NzYWdlPnt0KHRhZ01lc3NhZ2UpfTwvTWluaU1lc3NzYWdlPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VCb3hUYWc7XG4iXX0= */",
26
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
27
+ });
28
+
29
+ export var MessageBoxTag = function MessageBoxTag(_ref) {
30
+ var tagMessage = _ref.tagMessage;
31
+
32
+ var _useTranslation = useTranslation(),
33
+ t = _useTranslation.t;
34
+
35
+ return ___EmotionJSX(MiniMesssage, null, t(tagMessage));
36
+ };
37
+ export default MessageBoxTag;
@@ -6,4 +6,6 @@
6
6
  *
7
7
  */
8
8
  import MessageBox from './MessageBox';
9
- export { MessageBox };
9
+ import MessageBoxTag from './MessageBoxTag';
10
+ import { MessageBoxType } from './MessageBox';
11
+ export { MessageBox, MessageBoxTag, MessageBoxType };
@@ -1,24 +1,14 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
2
 
3
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
4
 
5
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
6
 
7
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
8
 
9
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
9
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
10
 
11
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
-
13
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
14
-
15
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
16
-
17
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
18
-
19
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
20
-
21
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
12
 
23
13
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
24
14
 
@@ -29,14 +19,13 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
29
19
  * LICENSE file in the root directory of this source tree.
30
20
  *
31
21
  */
32
- import React, { Component } from 'react';
33
- import PropTypes from 'prop-types';
34
- import { Swipeable } from 'react-swipeable';
22
+ import React, { useCallback, useEffect, useRef, useState } from 'react'; // @ts-ignore
23
+
24
+ import { useSwipeable } from 'react-swipeable';
35
25
  import BEMHelper from 'react-bem-helper';
36
- import { OneColumn } from '@ndla/ui';
37
26
  import SafeLink from '@ndla/safelink';
27
+ import { OneColumn } from '../Layout';
38
28
  import Spinner from '../Spinner';
39
- import { movieShape } from './shapes';
40
29
  import NavigationArrow from './NavigationArrow';
41
30
  import SlideshowIndicator from './SlideshowIndicator';
42
31
  import { jsx as ___EmotionJSX } from "@emotion/core";
@@ -58,253 +47,231 @@ var renderSlideItem = function renderSlideItem(slide) {
58
47
  }));
59
48
  };
60
49
 
61
- var FilmSlideshow = /*#__PURE__*/function (_Component) {
62
- _inherits(FilmSlideshow, _Component);
63
-
64
- var _super = _createSuper(FilmSlideshow);
65
-
66
- function FilmSlideshow(props) {
67
- var _this;
68
-
69
- _classCallCheck(this, FilmSlideshow);
70
-
71
- _this = _super.call(this, props);
72
- var startIndex = _this.props.randomStart ? Math.floor(Math.random() * _this.props.slideshow.length) : 0;
73
- _this.state = {
74
- slideIndex: startIndex,
75
- slideIndexTarget: startIndex,
76
- animationComplete: true
77
- };
78
- _this.swipeDistance = 0;
79
- _this.slideRef = /*#__PURE__*/React.createRef();
80
- _this.slideText = /*#__PURE__*/React.createRef();
81
- _this.onSwipeEnd = _this.onSwipeEnd.bind(_assertThisInitialized(_this));
82
- _this.onSwipe = _this.onSwipe.bind(_assertThisInitialized(_this));
83
- _this.gotoSlide = _this.gotoSlide.bind(_assertThisInitialized(_this));
84
- _this.onChangedSlide = _this.onChangedSlide.bind(_assertThisInitialized(_this));
85
- _this.onTransitionEnd = _this.onTransitionEnd.bind(_assertThisInitialized(_this));
86
- _this.timer = null;
87
- _this.onChangedSlideBlock = false;
88
- return _this;
89
- }
90
-
91
- _createClass(FilmSlideshow, [{
92
- key: "componentDidMount",
93
- value: function componentDidMount() {
94
- this.initTimer();
50
+ var FilmSlideshow = function FilmSlideshow(_ref) {
51
+ var _ref$autoSlide = _ref.autoSlide,
52
+ autoSlide = _ref$autoSlide === void 0 ? false : _ref$autoSlide,
53
+ _ref$slideshow = _ref.slideshow,
54
+ slideshow = _ref$slideshow === void 0 ? [] : _ref$slideshow,
55
+ _ref$slideInterval = _ref.slideInterval,
56
+ slideInterval = _ref$slideInterval === void 0 ? 5000 : _ref$slideInterval;
57
+
58
+ var _useState = useState(0),
59
+ _useState2 = _slicedToArray(_useState, 2),
60
+ swipeDistance = _useState2[0],
61
+ setSwipeDistance = _useState2[1];
62
+
63
+ var _useState3 = useState(0),
64
+ _useState4 = _slicedToArray(_useState3, 2),
65
+ slideIndex = _useState4[0],
66
+ setSlideIndex = _useState4[1];
67
+
68
+ var _useState5 = useState(0),
69
+ _useState6 = _slicedToArray(_useState5, 2),
70
+ slideIndexTarget = _useState6[0],
71
+ setSlideIndexTarget = _useState6[1];
72
+
73
+ var _useState7 = useState(true),
74
+ _useState8 = _slicedToArray(_useState7, 2),
75
+ animationComplete = _useState8[0],
76
+ setAnimationComplete = _useState8[1];
77
+
78
+ var slideRef = useRef(null);
79
+ var slideText = useRef(null);
80
+ var timer = useRef(null);
81
+ var gotoSlide = useCallback(function (indexTarget) {
82
+ var useAnimation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
83
+ setSwipeDistance(0);
84
+
85
+ if (timer.current) {
86
+ clearTimeout(timer.current);
95
87
  }
96
- }, {
97
- key: "onChangedSlide",
98
- value: function onChangedSlide() {
99
- if (!this.state.animationComplete) {
100
- this.slideRef.current.style.transition = 'none';
101
- this.slideRef.current.style.transform = "translateX(".concat(this.state.slideIndexTarget * 100, "vw))");
102
- this.setState(function (prevState) {
103
- return {
104
- animationComplete: true,
105
- slideIndex: prevState.slideIndexTarget
106
- };
107
- });
108
- } else if (this.state.slideIndexTarget === -1) {
88
+
89
+ setSlideIndexTarget(indexTarget);
90
+ setAnimationComplete(!useAnimation);
91
+ }, []);
92
+
93
+ var onChangedSlide = function onChangedSlide() {
94
+ if (!animationComplete) {
95
+ if (slideRef.current) {
96
+ slideRef.current.style.transition = 'none';
97
+ slideRef.current.style.transform = "translateX(".concat(slideIndexTarget * 100, "vw))");
98
+ }
99
+
100
+ setAnimationComplete(true);
101
+ setSlideIndex(slideIndexTarget);
102
+ } else if (slideIndexTarget === -1) {
103
+ if (slideRef.current) {
109
104
  // Go to last slide for continuous loop
110
- this.slideRef.current.style.transition = 'none';
111
- this.slideRef.current.style.transform = "translateX(".concat(this.props.slideshow.length * 100, "vw))");
112
- this.setState({
113
- slideIndex: this.props.slideshow.length - 1,
114
- slideIndexTarget: this.props.slideshow.length - 1,
115
- animationComplete: true
116
- });
117
- } else if (this.state.slideIndexTarget === this.props.slideshow.length) {
105
+ slideRef.current.style.transition = 'none';
106
+ slideRef.current.style.transform = "translateX(".concat(slideshow.length * 100, "vw))");
107
+ }
108
+
109
+ setSlideIndex(slideshow.length - 1);
110
+ setSlideIndexTarget(slideshow.length - 1);
111
+ setAnimationComplete(true);
112
+ } else if (slideIndexTarget === slideshow.length) {
113
+ if (slideRef.current) {
118
114
  // Go to first slide for continuous loop
119
- this.slideRef.current.style.transition = 'none';
120
- this.slideRef.current.style.transform = "translateX(100vw))";
121
- this.setState({
122
- slideIndex: 0,
123
- slideIndexTarget: 0,
124
- animationComplete: true
125
- });
126
- } else {
127
- this.setState(function (prevState) {
128
- return {
129
- animationComplete: true,
130
- slideIndex: prevState.slideIndexTarget
131
- };
132
- });
115
+ slideRef.current.style.transition = 'none';
116
+ slideRef.current.style.transform = "translateX(100vw))";
133
117
  }
118
+
119
+ setSlideIndex(0);
120
+ setSlideIndexTarget(0);
121
+ setAnimationComplete(true);
122
+ } else {
123
+ setAnimationComplete(true);
124
+ setSlideIndex(slideIndexTarget);
134
125
  }
135
- }, {
136
- key: "onSwipeEnd",
137
- value: function onSwipeEnd() {
138
- var slide;
139
-
140
- if (this.swipeDistance > 40) {
141
- slide = -1;
142
- } else if (this.swipeDistance < -40) {
143
- slide = 1;
144
- } else {
145
- slide = 0;
146
- }
126
+ };
147
127
 
148
- this.slideRef.current.style.transition = defaultTransitionSwipeEnd;
149
- this.slideText.current.style.transition = defaultTransitionText;
150
- this.slideText.current.style.opacity = 1;
151
- this.swipeDistance = 0;
152
- this.initTimer();
153
-
154
- if (slide !== 0) {
155
- this.setState(function (prevState) {
156
- return {
157
- slideIndex: prevState.slideIndex + slide,
158
- slideIndexTarget: prevState.slideIndex + slide
159
- };
160
- });
161
- } else {
162
- // Reset transfrom
163
- this.slideRef.current.style.transform = this.getSlidePosition(this.state.slideIndex + slide);
164
- }
128
+ var onSwipeEnd = function onSwipeEnd() {
129
+ var slide;
130
+
131
+ if (swipeDistance > 40) {
132
+ slide = -1;
133
+ } else if (swipeDistance < -40) {
134
+ slide = 1;
135
+ } else {
136
+ slide = 0;
165
137
  }
166
- }, {
167
- key: "onSwipe",
168
- value: function onSwipe(eventData) {
169
- if (eventData.dir === 'Up' || eventData.dir === 'Down') {
170
- return;
171
- }
172
138
 
173
- clearTimeout(this.timer);
174
- this.swipeDistance = -eventData.deltaX;
175
- this.slideRef.current.style.transition = 'none';
176
- this.slideRef.current.style.transform = this.getSlidePosition(this.state.slideIndexTarget);
177
- var opacityText = 1 - Math.min(100, Math.abs(this.swipeDistance)) / 100;
178
- this.slideText.current.style.transition = 'none';
179
- this.slideText.current.style.opacity = opacityText;
139
+ if (slideRef.current && slideText.current) {
140
+ slideRef.current.style.transition = defaultTransitionSwipeEnd;
141
+ slideText.current.style.transition = defaultTransitionText;
142
+ slideText.current.style.opacity = '1';
180
143
  }
181
- }, {
182
- key: "onTransitionEnd",
183
- value: function onTransitionEnd() {
184
- var slideshowLength = this.props.slideshow.length;
185
-
186
- if (this.state.slideIndex === -1) {
187
- this.slideRef.current.style.transition = 'none';
188
- this.slideRef.current.style.transform = this.getSlidePosition(slideshowLength - 1);
189
- this.setState({
190
- slideIndex: slideshowLength - 1,
191
- slideIndexTarget: slideshowLength - 1
192
- });
193
- } else if (this.state.slideIndex >= slideshowLength) {
194
- this.slideRef.current.style.transition = 'none';
195
- this.slideRef.current.style.transform = this.getSlidePosition(0);
196
- this.setState({
197
- slideIndex: 0,
198
- slideIndexTarget: 0
199
- });
144
+
145
+ setSwipeDistance(0);
146
+ initTimer();
147
+
148
+ if (slide !== 0) {
149
+ setSlideIndex(slideIndex + slide);
150
+ setSlideIndexTarget(slideIndex + slide);
151
+ } else {
152
+ // Reset transfrom
153
+ if (slideRef.current) {
154
+ slideRef.current.style.transform = getSlidePosition(slideIndex + slide);
200
155
  }
201
156
  }
202
- }, {
203
- key: "getSlidePosition",
204
- value: function getSlidePosition(target) {
205
- if (this.swipeDistance !== 0) {
206
- return "translateX(calc(".concat(this.swipeDistance, "px -\n ").concat((target + 1) * 100, "vw))");
207
- }
157
+ };
208
158
 
209
- return "translateX(-".concat((target + 1) * 100, "vw)");
159
+ var onSwipe = function onSwipe(eventData) {
160
+ if (eventData.dir === 'Up' || eventData.dir === 'Down') {
161
+ return;
210
162
  }
211
- }, {
212
- key: "gotoSlide",
213
- value: function gotoSlide(slideIndexTarget, useAnimation) {
214
- this.swipeDistance = 0;
215
- clearTimeout(this.timer);
216
- this.initTimer();
217
- this.setState({
218
- slideIndexTarget: slideIndexTarget,
219
- animationComplete: !useAnimation
220
- });
163
+
164
+ if (timer.current) {
165
+ clearTimeout(timer.current);
221
166
  }
222
- }, {
223
- key: "initTimer",
224
- value: function initTimer() {
225
- var _this2 = this;
226
-
227
- if (this.props.autoSlide) {
228
- this.timer = setTimeout(function () {
229
- _this2.gotoSlide(_this2.state.slideIndex + 1);
230
- }, this.props.slideInterval);
231
- }
167
+
168
+ setSwipeDistance(eventData.deltaX);
169
+
170
+ if (slideRef && slideRef.current) {
171
+ slideRef.current.style.transition = 'none';
172
+ slideRef.current.style.transform = getSlidePosition(slideIndexTarget);
232
173
  }
233
- }, {
234
- key: "render",
235
- value: function render() {
236
- var slideshow = this.props.slideshow;
237
- var _this$state = this.state,
238
- slideIndex = _this$state.slideIndex,
239
- slideIndexTarget = _this$state.slideIndexTarget,
240
- animationComplete = _this$state.animationComplete;
241
-
242
- if (slideshow.length === 0) {
243
- return ___EmotionJSX("div", null, ___EmotionJSX("div", classes('slideshow'), ___EmotionJSX(Spinner, {
244
- inverted: true
245
- })));
246
- }
247
174
 
248
- var slideshowWidth = "".concat((slideshow.length + 2) * 100, "vw");
249
- var activeSlide = slideIndex;
175
+ var opacityText = 1 - Math.min(100, Math.abs(swipeDistance)) / 100;
176
+
177
+ if (slideText && slideText.current) {
178
+ slideText.current.style.transition = 'none';
179
+ slideText.current.style.opacity = opacityText.toString();
180
+ }
181
+ };
182
+
183
+ var onTransitionEnd = function onTransitionEnd() {
184
+ var slideshowLength = slideshow.length;
250
185
 
251
- if (activeSlide < 0) {
252
- activeSlide = slideshow.length - 1;
253
- } else if (activeSlide >= slideshow.length) {
254
- activeSlide = 0;
186
+ if (slideIndex === -1) {
187
+ if (slideRef.current) {
188
+ slideRef.current.style.transition = 'none';
189
+ slideRef.current.style.transform = getSlidePosition(slideshowLength - 1);
255
190
  }
256
191
 
257
- return ___EmotionJSX("section", null, ___EmotionJSX(Swipeable, _extends({}, classes(''), {
258
- onSwiped: this.onSwipeEnd,
259
- onSwiping: this.onSwipe
260
- }), ___EmotionJSX("div", classes('slide-link-wrapper'), ___EmotionJSX(OneColumn, null, ___EmotionJSX(SafeLink, _extends({
261
- to: slideshow[activeSlide].path
262
- }, classes('item-wrapper', 'text', {
263
- out: !animationComplete
264
- })), ___EmotionJSX("div", _extends({}, classes('slide-info'), {
265
- ref: this.slideText
266
- }), ___EmotionJSX("h1", null, slideshow[activeSlide].title), ___EmotionJSX("p", null, slideshow[activeSlide].metaDescription))))), ___EmotionJSX(NavigationArrow, {
267
- slideIndexTarget: slideIndexTarget > 0 ? slideIndexTarget - 1 : slideshow.length - 1,
268
- gotoSlide: this.gotoSlide
269
- }), ___EmotionJSX(NavigationArrow, {
270
- slideIndexTarget: slideIndexTarget < slideshow.length - 1 ? slideIndexTarget + 1 : 0,
271
- gotoSlide: this.gotoSlide,
272
- rightArrow: true
273
- }), !animationComplete && ___EmotionJSX("div", _extends({}, classes('item', 'fade-over'), {
274
- role: "img",
275
- onAnimationEnd: this.onChangedSlide,
276
- style: {
277
- backgroundImage: "url(".concat(slideshow[activeSlide].metaImage && slideshow[activeSlide].metaImage.url || '', ")")
278
- }
279
- })), ___EmotionJSX("div", _extends({
280
- ref: this.slideRef
281
- }, classes('item-wrapper'), {
282
- onTransitionEnd: this.onTransitionEnd,
283
- style: {
284
- width: slideshowWidth,
285
- transform: this.getSlidePosition(slideIndex)
286
- }
287
- }), renderSlideItem(slideshow[slideshow.length - 1], -1), slideshow.map(renderSlideItem), renderSlideItem(slideshow[0], slideshow.length))), ___EmotionJSX(SlideshowIndicator, {
288
- slideshow: slideshow,
289
- activeSlide: activeSlide,
290
- gotoSlide: this.gotoSlide
291
- }));
192
+ setSlideIndex(slideshowLength - 1);
193
+ setSlideIndexTarget(slideshowLength - 1);
194
+ } else if (slideIndex >= slideshowLength) {
195
+ if (slideRef.current) {
196
+ slideRef.current.style.transition = 'none';
197
+ slideRef.current.style.transform = getSlidePosition(0);
198
+ }
199
+
200
+ setSlideIndex(0);
201
+ setSlideIndexTarget(0);
202
+ }
203
+ };
204
+
205
+ var getSlidePosition = function getSlidePosition(target) {
206
+ if (swipeDistance !== 0) {
207
+ return "translateX(calc(".concat(swipeDistance, "px -\n ").concat((target + 1) * 100, "vw))");
292
208
  }
293
- }]);
294
209
 
295
- return FilmSlideshow;
296
- }(Component);
210
+ return "translateX(-".concat((target + 1) * 100, "vw)");
211
+ };
297
212
 
298
- FilmSlideshow.propTypes = {
299
- autoSlide: PropTypes.bool,
300
- randomStart: PropTypes.bool,
301
- slideshow: PropTypes.arrayOf(movieShape),
302
- slideInterval: PropTypes.number
303
- };
304
- FilmSlideshow.defaultProps = {
305
- autoSlide: false,
306
- randomStart: false,
307
- slideshow: [],
308
- slideInterval: 5000
213
+ var initTimer = useCallback(function () {
214
+ if (autoSlide) {
215
+ timer.current = setTimeout(function () {
216
+ gotoSlide(slideIndex + 1);
217
+ }, slideInterval);
218
+ }
219
+ }, [autoSlide, gotoSlide, slideInterval, slideIndex]);
220
+ useEffect(function () {
221
+ initTimer();
222
+ }, [initTimer]);
223
+ var handlers = useSwipeable({
224
+ onSwiped: onSwipeEnd,
225
+ onSwiping: onSwipe
226
+ });
227
+
228
+ if (slideshow.length === 0) {
229
+ return ___EmotionJSX("div", null, ___EmotionJSX("div", classes('slideshow'), ___EmotionJSX(Spinner, {
230
+ inverted: true
231
+ })));
232
+ }
233
+
234
+ var slideshowWidth = "".concat((slideshow.length + 2) * 100, "vw");
235
+ var activeSlide = slideIndex;
236
+
237
+ if (activeSlide < 0) {
238
+ activeSlide = slideshow.length - 1;
239
+ } else if (activeSlide >= slideshow.length) {
240
+ activeSlide = 0;
241
+ }
242
+
243
+ return ___EmotionJSX("section", _extends({}, classes(''), handlers), ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", classes('slide-link-wrapper'), ___EmotionJSX(OneColumn, null, ___EmotionJSX(SafeLink, _extends({
244
+ to: slideshow[activeSlide].path
245
+ }, classes('item-wrapper', 'text', {
246
+ out: !animationComplete
247
+ })), ___EmotionJSX("div", _extends({}, classes('slide-info'), {
248
+ ref: slideText
249
+ }), ___EmotionJSX("h1", null, slideshow[activeSlide].title), ___EmotionJSX("p", null, slideshow[activeSlide].metaDescription))))), ___EmotionJSX(NavigationArrow, {
250
+ slideIndexTarget: slideIndexTarget > 0 ? slideIndexTarget - 1 : slideshow.length - 1,
251
+ gotoSlide: gotoSlide
252
+ }), ___EmotionJSX(NavigationArrow, {
253
+ slideIndexTarget: slideIndexTarget < slideshow.length - 1 ? slideIndexTarget + 1 : 0,
254
+ gotoSlide: gotoSlide,
255
+ rightArrow: true
256
+ }), !animationComplete && ___EmotionJSX("div", _extends({}, classes('item', 'fade-over'), {
257
+ role: "img",
258
+ onAnimationEnd: onChangedSlide,
259
+ style: {
260
+ backgroundImage: "url(".concat(slideshow[activeSlide].metaImage && slideshow[activeSlide].metaImage.url || '', ")")
261
+ }
262
+ })), ___EmotionJSX("div", _extends({
263
+ ref: slideRef
264
+ }, classes('item-wrapper'), {
265
+ onTransitionEnd: onTransitionEnd,
266
+ style: {
267
+ width: slideshowWidth,
268
+ transform: getSlidePosition(slideIndex)
269
+ }
270
+ }), renderSlideItem(slideshow[slideshow.length - 1]), slideshow.map(renderSlideItem), renderSlideItem(slideshow[0])), ___EmotionJSX(SlideshowIndicator, {
271
+ slideshow: slideshow,
272
+ activeSlide: activeSlide,
273
+ gotoSlide: gotoSlide
274
+ })));
309
275
  };
276
+
310
277
  export default FilmSlideshow;