@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
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ 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); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,19 +9,15 @@ exports["default"] = void 0;
7
9
 
8
10
  var _react = _interopRequireWildcard(require("react"));
9
11
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
12
  var _reactSwipeable = require("react-swipeable");
13
13
 
14
14
  var _reactBemHelper = _interopRequireDefault(require("react-bem-helper"));
15
15
 
16
- var _ui = require("@ndla/ui");
17
-
18
16
  var _safelink = _interopRequireDefault(require("@ndla/safelink"));
19
17
 
20
- var _Spinner = _interopRequireDefault(require("../Spinner"));
18
+ var _Layout = require("../Layout");
21
19
 
22
- var _shapes = require("./shapes");
20
+ var _Spinner = _interopRequireDefault(require("../Spinner"));
23
21
 
24
22
  var _NavigationArrow = _interopRequireDefault(require("./NavigationArrow"));
25
23
 
@@ -33,27 +31,17 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
33
31
 
34
32
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
33
 
36
- 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); }
37
-
38
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39
-
40
- 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); } }
41
-
42
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
43
-
44
- 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); }
34
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
45
35
 
46
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
36
+ 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."); }
47
37
 
48
- 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); }; }
38
+ 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); }
49
39
 
50
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
40
+ 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; }
51
41
 
52
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
42
+ 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; }
53
43
 
54
- 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; } }
55
-
56
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
44
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
57
45
 
58
46
  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); }
59
47
 
@@ -75,254 +63,232 @@ var renderSlideItem = function renderSlideItem(slide) {
75
63
  }));
76
64
  };
77
65
 
78
- var FilmSlideshow = /*#__PURE__*/function (_Component) {
79
- _inherits(FilmSlideshow, _Component);
80
-
81
- var _super = _createSuper(FilmSlideshow);
82
-
83
- function FilmSlideshow(props) {
84
- var _this;
85
-
86
- _classCallCheck(this, FilmSlideshow);
87
-
88
- _this = _super.call(this, props);
89
- var startIndex = _this.props.randomStart ? Math.floor(Math.random() * _this.props.slideshow.length) : 0;
90
- _this.state = {
91
- slideIndex: startIndex,
92
- slideIndexTarget: startIndex,
93
- animationComplete: true
94
- };
95
- _this.swipeDistance = 0;
96
- _this.slideRef = /*#__PURE__*/_react["default"].createRef();
97
- _this.slideText = /*#__PURE__*/_react["default"].createRef();
98
- _this.onSwipeEnd = _this.onSwipeEnd.bind(_assertThisInitialized(_this));
99
- _this.onSwipe = _this.onSwipe.bind(_assertThisInitialized(_this));
100
- _this.gotoSlide = _this.gotoSlide.bind(_assertThisInitialized(_this));
101
- _this.onChangedSlide = _this.onChangedSlide.bind(_assertThisInitialized(_this));
102
- _this.onTransitionEnd = _this.onTransitionEnd.bind(_assertThisInitialized(_this));
103
- _this.timer = null;
104
- _this.onChangedSlideBlock = false;
105
- return _this;
106
- }
107
-
108
- _createClass(FilmSlideshow, [{
109
- key: "componentDidMount",
110
- value: function componentDidMount() {
111
- this.initTimer();
66
+ var FilmSlideshow = function FilmSlideshow(_ref) {
67
+ var _ref$autoSlide = _ref.autoSlide,
68
+ autoSlide = _ref$autoSlide === void 0 ? false : _ref$autoSlide,
69
+ _ref$slideshow = _ref.slideshow,
70
+ slideshow = _ref$slideshow === void 0 ? [] : _ref$slideshow,
71
+ _ref$slideInterval = _ref.slideInterval,
72
+ slideInterval = _ref$slideInterval === void 0 ? 5000 : _ref$slideInterval;
73
+
74
+ var _useState = (0, _react.useState)(0),
75
+ _useState2 = _slicedToArray(_useState, 2),
76
+ swipeDistance = _useState2[0],
77
+ setSwipeDistance = _useState2[1];
78
+
79
+ var _useState3 = (0, _react.useState)(0),
80
+ _useState4 = _slicedToArray(_useState3, 2),
81
+ slideIndex = _useState4[0],
82
+ setSlideIndex = _useState4[1];
83
+
84
+ var _useState5 = (0, _react.useState)(0),
85
+ _useState6 = _slicedToArray(_useState5, 2),
86
+ slideIndexTarget = _useState6[0],
87
+ setSlideIndexTarget = _useState6[1];
88
+
89
+ var _useState7 = (0, _react.useState)(true),
90
+ _useState8 = _slicedToArray(_useState7, 2),
91
+ animationComplete = _useState8[0],
92
+ setAnimationComplete = _useState8[1];
93
+
94
+ var slideRef = (0, _react.useRef)(null);
95
+ var slideText = (0, _react.useRef)(null);
96
+ var timer = (0, _react.useRef)(null);
97
+ var gotoSlide = (0, _react.useCallback)(function (indexTarget) {
98
+ var useAnimation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
99
+ setSwipeDistance(0);
100
+
101
+ if (timer.current) {
102
+ clearTimeout(timer.current);
112
103
  }
113
- }, {
114
- key: "onChangedSlide",
115
- value: function onChangedSlide() {
116
- if (!this.state.animationComplete) {
117
- this.slideRef.current.style.transition = 'none';
118
- this.slideRef.current.style.transform = "translateX(".concat(this.state.slideIndexTarget * 100, "vw))");
119
- this.setState(function (prevState) {
120
- return {
121
- animationComplete: true,
122
- slideIndex: prevState.slideIndexTarget
123
- };
124
- });
125
- } else if (this.state.slideIndexTarget === -1) {
104
+
105
+ setSlideIndexTarget(indexTarget);
106
+ setAnimationComplete(!useAnimation);
107
+ }, []);
108
+
109
+ var onChangedSlide = function onChangedSlide() {
110
+ if (!animationComplete) {
111
+ if (slideRef.current) {
112
+ slideRef.current.style.transition = 'none';
113
+ slideRef.current.style.transform = "translateX(".concat(slideIndexTarget * 100, "vw))");
114
+ }
115
+
116
+ setAnimationComplete(true);
117
+ setSlideIndex(slideIndexTarget);
118
+ } else if (slideIndexTarget === -1) {
119
+ if (slideRef.current) {
126
120
  // Go to last slide for continuous loop
127
- this.slideRef.current.style.transition = 'none';
128
- this.slideRef.current.style.transform = "translateX(".concat(this.props.slideshow.length * 100, "vw))");
129
- this.setState({
130
- slideIndex: this.props.slideshow.length - 1,
131
- slideIndexTarget: this.props.slideshow.length - 1,
132
- animationComplete: true
133
- });
134
- } else if (this.state.slideIndexTarget === this.props.slideshow.length) {
121
+ slideRef.current.style.transition = 'none';
122
+ slideRef.current.style.transform = "translateX(".concat(slideshow.length * 100, "vw))");
123
+ }
124
+
125
+ setSlideIndex(slideshow.length - 1);
126
+ setSlideIndexTarget(slideshow.length - 1);
127
+ setAnimationComplete(true);
128
+ } else if (slideIndexTarget === slideshow.length) {
129
+ if (slideRef.current) {
135
130
  // Go to first slide for continuous loop
136
- this.slideRef.current.style.transition = 'none';
137
- this.slideRef.current.style.transform = "translateX(100vw))";
138
- this.setState({
139
- slideIndex: 0,
140
- slideIndexTarget: 0,
141
- animationComplete: true
142
- });
143
- } else {
144
- this.setState(function (prevState) {
145
- return {
146
- animationComplete: true,
147
- slideIndex: prevState.slideIndexTarget
148
- };
149
- });
131
+ slideRef.current.style.transition = 'none';
132
+ slideRef.current.style.transform = "translateX(100vw))";
150
133
  }
134
+
135
+ setSlideIndex(0);
136
+ setSlideIndexTarget(0);
137
+ setAnimationComplete(true);
138
+ } else {
139
+ setAnimationComplete(true);
140
+ setSlideIndex(slideIndexTarget);
151
141
  }
152
- }, {
153
- key: "onSwipeEnd",
154
- value: function onSwipeEnd() {
155
- var slide;
156
-
157
- if (this.swipeDistance > 40) {
158
- slide = -1;
159
- } else if (this.swipeDistance < -40) {
160
- slide = 1;
161
- } else {
162
- slide = 0;
163
- }
142
+ };
164
143
 
165
- this.slideRef.current.style.transition = defaultTransitionSwipeEnd;
166
- this.slideText.current.style.transition = defaultTransitionText;
167
- this.slideText.current.style.opacity = 1;
168
- this.swipeDistance = 0;
169
- this.initTimer();
170
-
171
- if (slide !== 0) {
172
- this.setState(function (prevState) {
173
- return {
174
- slideIndex: prevState.slideIndex + slide,
175
- slideIndexTarget: prevState.slideIndex + slide
176
- };
177
- });
178
- } else {
179
- // Reset transfrom
180
- this.slideRef.current.style.transform = this.getSlidePosition(this.state.slideIndex + slide);
181
- }
144
+ var onSwipeEnd = function onSwipeEnd() {
145
+ var slide;
146
+
147
+ if (swipeDistance > 40) {
148
+ slide = -1;
149
+ } else if (swipeDistance < -40) {
150
+ slide = 1;
151
+ } else {
152
+ slide = 0;
182
153
  }
183
- }, {
184
- key: "onSwipe",
185
- value: function onSwipe(eventData) {
186
- if (eventData.dir === 'Up' || eventData.dir === 'Down') {
187
- return;
188
- }
189
154
 
190
- clearTimeout(this.timer);
191
- this.swipeDistance = -eventData.deltaX;
192
- this.slideRef.current.style.transition = 'none';
193
- this.slideRef.current.style.transform = this.getSlidePosition(this.state.slideIndexTarget);
194
- var opacityText = 1 - Math.min(100, Math.abs(this.swipeDistance)) / 100;
195
- this.slideText.current.style.transition = 'none';
196
- this.slideText.current.style.opacity = opacityText;
155
+ if (slideRef.current && slideText.current) {
156
+ slideRef.current.style.transition = defaultTransitionSwipeEnd;
157
+ slideText.current.style.transition = defaultTransitionText;
158
+ slideText.current.style.opacity = '1';
197
159
  }
198
- }, {
199
- key: "onTransitionEnd",
200
- value: function onTransitionEnd() {
201
- var slideshowLength = this.props.slideshow.length;
202
-
203
- if (this.state.slideIndex === -1) {
204
- this.slideRef.current.style.transition = 'none';
205
- this.slideRef.current.style.transform = this.getSlidePosition(slideshowLength - 1);
206
- this.setState({
207
- slideIndex: slideshowLength - 1,
208
- slideIndexTarget: slideshowLength - 1
209
- });
210
- } else if (this.state.slideIndex >= slideshowLength) {
211
- this.slideRef.current.style.transition = 'none';
212
- this.slideRef.current.style.transform = this.getSlidePosition(0);
213
- this.setState({
214
- slideIndex: 0,
215
- slideIndexTarget: 0
216
- });
160
+
161
+ setSwipeDistance(0);
162
+ initTimer();
163
+
164
+ if (slide !== 0) {
165
+ setSlideIndex(slideIndex + slide);
166
+ setSlideIndexTarget(slideIndex + slide);
167
+ } else {
168
+ // Reset transfrom
169
+ if (slideRef.current) {
170
+ slideRef.current.style.transform = getSlidePosition(slideIndex + slide);
217
171
  }
218
172
  }
219
- }, {
220
- key: "getSlidePosition",
221
- value: function getSlidePosition(target) {
222
- if (this.swipeDistance !== 0) {
223
- return "translateX(calc(".concat(this.swipeDistance, "px -\n ").concat((target + 1) * 100, "vw))");
224
- }
173
+ };
225
174
 
226
- return "translateX(-".concat((target + 1) * 100, "vw)");
175
+ var onSwipe = function onSwipe(eventData) {
176
+ if (eventData.dir === 'Up' || eventData.dir === 'Down') {
177
+ return;
227
178
  }
228
- }, {
229
- key: "gotoSlide",
230
- value: function gotoSlide(slideIndexTarget, useAnimation) {
231
- this.swipeDistance = 0;
232
- clearTimeout(this.timer);
233
- this.initTimer();
234
- this.setState({
235
- slideIndexTarget: slideIndexTarget,
236
- animationComplete: !useAnimation
237
- });
179
+
180
+ if (timer.current) {
181
+ clearTimeout(timer.current);
238
182
  }
239
- }, {
240
- key: "initTimer",
241
- value: function initTimer() {
242
- var _this2 = this;
243
-
244
- if (this.props.autoSlide) {
245
- this.timer = setTimeout(function () {
246
- _this2.gotoSlide(_this2.state.slideIndex + 1);
247
- }, this.props.slideInterval);
248
- }
183
+
184
+ setSwipeDistance(eventData.deltaX);
185
+
186
+ if (slideRef && slideRef.current) {
187
+ slideRef.current.style.transition = 'none';
188
+ slideRef.current.style.transform = getSlidePosition(slideIndexTarget);
249
189
  }
250
- }, {
251
- key: "render",
252
- value: function render() {
253
- var slideshow = this.props.slideshow;
254
- var _this$state = this.state,
255
- slideIndex = _this$state.slideIndex,
256
- slideIndexTarget = _this$state.slideIndexTarget,
257
- animationComplete = _this$state.animationComplete;
258
-
259
- if (slideshow.length === 0) {
260
- return (0, _core.jsx)("div", null, (0, _core.jsx)("div", classes('slideshow'), (0, _core.jsx)(_Spinner["default"], {
261
- inverted: true
262
- })));
263
- }
264
190
 
265
- var slideshowWidth = "".concat((slideshow.length + 2) * 100, "vw");
266
- var activeSlide = slideIndex;
191
+ var opacityText = 1 - Math.min(100, Math.abs(swipeDistance)) / 100;
267
192
 
268
- if (activeSlide < 0) {
269
- activeSlide = slideshow.length - 1;
270
- } else if (activeSlide >= slideshow.length) {
271
- activeSlide = 0;
193
+ if (slideText && slideText.current) {
194
+ slideText.current.style.transition = 'none';
195
+ slideText.current.style.opacity = opacityText.toString();
196
+ }
197
+ };
198
+
199
+ var onTransitionEnd = function onTransitionEnd() {
200
+ var slideshowLength = slideshow.length;
201
+
202
+ if (slideIndex === -1) {
203
+ if (slideRef.current) {
204
+ slideRef.current.style.transition = 'none';
205
+ slideRef.current.style.transform = getSlidePosition(slideshowLength - 1);
206
+ }
207
+
208
+ setSlideIndex(slideshowLength - 1);
209
+ setSlideIndexTarget(slideshowLength - 1);
210
+ } else if (slideIndex >= slideshowLength) {
211
+ if (slideRef.current) {
212
+ slideRef.current.style.transition = 'none';
213
+ slideRef.current.style.transform = getSlidePosition(0);
272
214
  }
273
215
 
274
- return (0, _core.jsx)("section", null, (0, _core.jsx)(_reactSwipeable.Swipeable, _extends({}, classes(''), {
275
- onSwiped: this.onSwipeEnd,
276
- onSwiping: this.onSwipe
277
- }), (0, _core.jsx)("div", classes('slide-link-wrapper'), (0, _core.jsx)(_ui.OneColumn, null, (0, _core.jsx)(_safelink["default"], _extends({
278
- to: slideshow[activeSlide].path
279
- }, classes('item-wrapper', 'text', {
280
- out: !animationComplete
281
- })), (0, _core.jsx)("div", _extends({}, classes('slide-info'), {
282
- ref: this.slideText
283
- }), (0, _core.jsx)("h1", null, slideshow[activeSlide].title), (0, _core.jsx)("p", null, slideshow[activeSlide].metaDescription))))), (0, _core.jsx)(_NavigationArrow["default"], {
284
- slideIndexTarget: slideIndexTarget > 0 ? slideIndexTarget - 1 : slideshow.length - 1,
285
- gotoSlide: this.gotoSlide
286
- }), (0, _core.jsx)(_NavigationArrow["default"], {
287
- slideIndexTarget: slideIndexTarget < slideshow.length - 1 ? slideIndexTarget + 1 : 0,
288
- gotoSlide: this.gotoSlide,
289
- rightArrow: true
290
- }), !animationComplete && (0, _core.jsx)("div", _extends({}, classes('item', 'fade-over'), {
291
- role: "img",
292
- onAnimationEnd: this.onChangedSlide,
293
- style: {
294
- backgroundImage: "url(".concat(slideshow[activeSlide].metaImage && slideshow[activeSlide].metaImage.url || '', ")")
295
- }
296
- })), (0, _core.jsx)("div", _extends({
297
- ref: this.slideRef
298
- }, classes('item-wrapper'), {
299
- onTransitionEnd: this.onTransitionEnd,
300
- style: {
301
- width: slideshowWidth,
302
- transform: this.getSlidePosition(slideIndex)
303
- }
304
- }), renderSlideItem(slideshow[slideshow.length - 1], -1), slideshow.map(renderSlideItem), renderSlideItem(slideshow[0], slideshow.length))), (0, _core.jsx)(_SlideshowIndicator["default"], {
305
- slideshow: slideshow,
306
- activeSlide: activeSlide,
307
- gotoSlide: this.gotoSlide
308
- }));
216
+ setSlideIndex(0);
217
+ setSlideIndexTarget(0);
309
218
  }
310
- }]);
219
+ };
311
220
 
312
- return FilmSlideshow;
313
- }(_react.Component);
221
+ var getSlidePosition = function getSlidePosition(target) {
222
+ if (swipeDistance !== 0) {
223
+ return "translateX(calc(".concat(swipeDistance, "px -\n ").concat((target + 1) * 100, "vw))");
224
+ }
314
225
 
315
- FilmSlideshow.propTypes = {
316
- autoSlide: _propTypes["default"].bool,
317
- randomStart: _propTypes["default"].bool,
318
- slideshow: _propTypes["default"].arrayOf(_shapes.movieShape),
319
- slideInterval: _propTypes["default"].number
320
- };
321
- FilmSlideshow.defaultProps = {
322
- autoSlide: false,
323
- randomStart: false,
324
- slideshow: [],
325
- slideInterval: 5000
226
+ return "translateX(-".concat((target + 1) * 100, "vw)");
227
+ };
228
+
229
+ var initTimer = (0, _react.useCallback)(function () {
230
+ if (autoSlide) {
231
+ timer.current = setTimeout(function () {
232
+ gotoSlide(slideIndex + 1);
233
+ }, slideInterval);
234
+ }
235
+ }, [autoSlide, gotoSlide, slideInterval, slideIndex]);
236
+ (0, _react.useEffect)(function () {
237
+ initTimer();
238
+ }, [initTimer]);
239
+ var handlers = (0, _reactSwipeable.useSwipeable)({
240
+ onSwiped: onSwipeEnd,
241
+ onSwiping: onSwipe
242
+ });
243
+
244
+ if (slideshow.length === 0) {
245
+ return (0, _core.jsx)("div", null, (0, _core.jsx)("div", classes('slideshow'), (0, _core.jsx)(_Spinner["default"], {
246
+ inverted: true
247
+ })));
248
+ }
249
+
250
+ var slideshowWidth = "".concat((slideshow.length + 2) * 100, "vw");
251
+ var activeSlide = slideIndex;
252
+
253
+ if (activeSlide < 0) {
254
+ activeSlide = slideshow.length - 1;
255
+ } else if (activeSlide >= slideshow.length) {
256
+ activeSlide = 0;
257
+ }
258
+
259
+ return (0, _core.jsx)("section", _extends({}, classes(''), handlers), (0, _core.jsx)(_react["default"].Fragment, null, (0, _core.jsx)("div", classes('slide-link-wrapper'), (0, _core.jsx)(_Layout.OneColumn, null, (0, _core.jsx)(_safelink["default"], _extends({
260
+ to: slideshow[activeSlide].path
261
+ }, classes('item-wrapper', 'text', {
262
+ out: !animationComplete
263
+ })), (0, _core.jsx)("div", _extends({}, classes('slide-info'), {
264
+ ref: slideText
265
+ }), (0, _core.jsx)("h1", null, slideshow[activeSlide].title), (0, _core.jsx)("p", null, slideshow[activeSlide].metaDescription))))), (0, _core.jsx)(_NavigationArrow["default"], {
266
+ slideIndexTarget: slideIndexTarget > 0 ? slideIndexTarget - 1 : slideshow.length - 1,
267
+ gotoSlide: gotoSlide
268
+ }), (0, _core.jsx)(_NavigationArrow["default"], {
269
+ slideIndexTarget: slideIndexTarget < slideshow.length - 1 ? slideIndexTarget + 1 : 0,
270
+ gotoSlide: gotoSlide,
271
+ rightArrow: true
272
+ }), !animationComplete && (0, _core.jsx)("div", _extends({}, classes('item', 'fade-over'), {
273
+ role: "img",
274
+ onAnimationEnd: onChangedSlide,
275
+ style: {
276
+ backgroundImage: "url(".concat(slideshow[activeSlide].metaImage && slideshow[activeSlide].metaImage.url || '', ")")
277
+ }
278
+ })), (0, _core.jsx)("div", _extends({
279
+ ref: slideRef
280
+ }, classes('item-wrapper'), {
281
+ onTransitionEnd: onTransitionEnd,
282
+ style: {
283
+ width: slideshowWidth,
284
+ transform: getSlidePosition(slideIndex)
285
+ }
286
+ }), renderSlideItem(slideshow[slideshow.length - 1]), slideshow.map(renderSlideItem), renderSlideItem(slideshow[0])), (0, _core.jsx)(_SlideshowIndicator["default"], {
287
+ slideshow: slideshow,
288
+ activeSlide: activeSlide,
289
+ gotoSlide: gotoSlide
290
+ })));
326
291
  };
292
+
327
293
  var _default = FilmSlideshow;
328
294
  exports["default"] = _default;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) 2016-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ interface Props {
9
+ slideIndexTarget: number;
10
+ slideshowLength?: number;
11
+ gotoSlide: (indexTarget: number, useAnimation: boolean) => void;
12
+ rightArrow?: boolean;
13
+ }
14
+ declare const NavigationArrow: ({ slideIndexTarget, gotoSlide, rightArrow }: Props) => JSX.Element;
15
+ export default NavigationArrow;
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _react = _interopRequireWildcard(require("react"));
9
-
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _react = _interopRequireDefault(require("react"));
11
9
 
12
10
  var _reactBemHelper = _interopRequireDefault(require("react-bem-helper"));
13
11
 
@@ -17,74 +15,31 @@ var _core = require("@emotion/core");
17
15
 
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
17
 
20
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
21
-
22
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
-
24
- 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); }
25
-
26
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27
-
28
- 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); } }
29
-
30
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
31
-
32
- 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); }
33
-
34
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
35
-
36
- 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); }; }
37
-
38
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
39
-
40
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
41
-
42
- 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; } }
43
-
44
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
45
-
18
+ /**
19
+ * Copyright (c) 2016-present, NDLA.
20
+ *
21
+ * This source code is licensed under the GPLv3 license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ *
24
+ */
46
25
  var classes = new _reactBemHelper["default"]({
47
26
  name: 'film-slideshow',
48
27
  prefix: 'c-'
49
28
  });
50
29
 
51
- var NavigationArrow = /*#__PURE__*/function (_Component) {
52
- _inherits(NavigationArrow, _Component);
53
-
54
- var _super = _createSuper(NavigationArrow);
55
-
56
- function NavigationArrow() {
57
- _classCallCheck(this, NavigationArrow);
58
-
59
- return _super.apply(this, arguments);
60
- }
61
-
62
- _createClass(NavigationArrow, [{
63
- key: "render",
64
- value: function render() {
65
- var _this$props = this.props,
66
- slideIndexTarget = _this$props.slideIndexTarget,
67
- gotoSlide = _this$props.gotoSlide,
68
- rightArrow = _this$props.rightArrow;
69
- var Chevron = rightArrow ? _common.ChevronRight : _common.ChevronLeft;
70
- return (0, _core.jsx)("div", classes('navigation-arrows', rightArrow ? 'right' : ''), (0, _core.jsx)("button", {
71
- type: "button",
72
- tabIndex: -1,
73
- onClick: function onClick() {
74
- gotoSlide(slideIndexTarget, true);
75
- }
76
- }, (0, _core.jsx)(Chevron, null)));
30
+ var NavigationArrow = function NavigationArrow(_ref) {
31
+ var slideIndexTarget = _ref.slideIndexTarget,
32
+ gotoSlide = _ref.gotoSlide,
33
+ rightArrow = _ref.rightArrow;
34
+ var Chevron = rightArrow ? _common.ChevronRight : _common.ChevronLeft;
35
+ return (0, _core.jsx)("div", classes('navigation-arrows', rightArrow ? 'right' : ''), (0, _core.jsx)("button", {
36
+ type: "button",
37
+ tabIndex: -1,
38
+ onClick: function onClick() {
39
+ gotoSlide(slideIndexTarget, true);
77
40
  }
78
- }]);
79
-
80
- return NavigationArrow;
81
- }(_react.Component);
82
-
83
- NavigationArrow.propTypes = {
84
- slideIndexTarget: _propTypes["default"].number,
85
- slideshowLength: _propTypes["default"].number,
86
- gotoSlide: _propTypes["default"].func,
87
- rightArrow: _propTypes["default"].bool
41
+ }, (0, _core.jsx)(Chevron, null)));
88
42
  };
43
+
89
44
  var _default = NavigationArrow;
90
45
  exports["default"] = _default;