@desynova-digital/player 3.9.7 → 4.0.1

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 (130) hide show
  1. package/Player.js +945 -0
  2. package/control/AudioTracksMenuButton.js +91 -0
  3. package/control/AudioTracksMenuButton.jsx +80 -0
  4. package/control/ControlBar.js +303 -0
  5. package/control/ControlBar.jsx +264 -0
  6. package/control/CurrentTimeDisplay.js +34 -0
  7. package/control/CurrentTimeDisplay.jsx +35 -0
  8. package/control/DurationDisplay.js +38 -0
  9. package/control/DurationDisplay.jsx +48 -0
  10. package/control/ForwardBackwardControl.js +76 -0
  11. package/control/ForwardBackwardControl.jsx +79 -0
  12. package/control/FullscreenToggle.js +82 -0
  13. package/control/FullscreenToggle.jsx +83 -0
  14. package/control/MarkInControl.js +124 -0
  15. package/control/MarkInControl.jsx +109 -0
  16. package/control/MarkOutControl.js +137 -0
  17. package/control/MarkOutControl.jsx +131 -0
  18. package/control/MarkerBar.js +127 -0
  19. package/control/MarkerBar.jsx +107 -0
  20. package/control/MarkingControl.js +82 -0
  21. package/control/MarkingControl.jsx +143 -0
  22. package/control/MarkingDuration.js +44 -0
  23. package/control/MarkingPreview.js +49 -0
  24. package/control/MarkingPreview.jsx +60 -0
  25. package/control/PlayBackRateControl.js +106 -0
  26. package/control/PlayBackRateControl.jsx +106 -0
  27. package/control/PlayProgressBar.js +61 -0
  28. package/control/PlayProgressBar.jsx +92 -0
  29. package/control/PlayToggle.js +56 -0
  30. package/control/PlayToggle.jsx +57 -0
  31. package/control/PointersBar.js +231 -0
  32. package/control/PointersBar.jsx +286 -0
  33. package/control/ProgressControl.js +127 -0
  34. package/control/ProgressControl.jsx +155 -0
  35. package/control/SeekBar.js +204 -0
  36. package/control/SeekBar.jsx +229 -0
  37. package/control/SettingsMenuButton.js +63 -0
  38. package/control/SettingsMenuButton.jsx +69 -0
  39. package/control/Slider.js +274 -0
  40. package/control/Slider.jsx +243 -0
  41. package/control/Timeline.js +118 -0
  42. package/control/Timeline.jsx +131 -0
  43. package/control/VolumeBar.js +198 -0
  44. package/control/VolumeBar.jsx +174 -0
  45. package/control/VolumeLevel.js +61 -0
  46. package/control/VolumeLevel.jsx +66 -0
  47. package/control/VolumneMenuButton.js +112 -0
  48. package/control/VolumneMenuButton.jsx +111 -0
  49. package/header/Header.js +309 -0
  50. package/header/Header.jsx +479 -0
  51. package/index.js +9 -151
  52. package/media/AudioMeter.js +381 -0
  53. package/media/AudioMeter.jsx +411 -0
  54. package/media/SDOutline.js +82 -0
  55. package/media/SDOutline.jsx +90 -0
  56. package/media/Video.js +684 -0
  57. package/media/Video.jsx +714 -0
  58. package/package.json +5 -1
  59. package/playlist/Playlist.js +67 -0
  60. package/playlist/Playlist.jsx +91 -0
  61. package/playlist/index.js +13 -0
  62. package/shortcuts/Shortcut.js +662 -0
  63. package/utils/Menu.js +50 -0
  64. package/utils/Menu.jsx +105 -0
  65. package/{colors.js → utils/colors.js} +13 -13
  66. package/utils/dom.js +6 -16
  67. package/utils/index.js +52 -122
  68. package/Manager.js +0 -124
  69. package/actions/player.js +0 -375
  70. package/actions/video.js +0 -230
  71. package/components/AudioMeter.js +0 -414
  72. package/components/BigPlayButton.js +0 -110
  73. package/components/ImageViewer.js +0 -318
  74. package/components/MarkerBar.js +0 -138
  75. package/components/Menu.js +0 -77
  76. package/components/Player.js +0 -821
  77. package/components/PlayerHeader.js +0 -472
  78. package/components/Playlist.js +0 -133
  79. package/components/PointersBar.js +0 -299
  80. package/components/PosterImage.js +0 -61
  81. package/components/SDOutline.js +0 -68
  82. package/components/Shortcut.js +0 -621
  83. package/components/Slider.js +0 -317
  84. package/components/TagsBar.js +0 -100
  85. package/components/Video.js +0 -1431
  86. package/components/control-bar/AudioTracksMenuButton.js +0 -113
  87. package/components/control-bar/CameraButton.js +0 -88
  88. package/components/control-bar/CommentsButton.js +0 -216
  89. package/components/control-bar/ControlBar.js +0 -260
  90. package/components/control-bar/EditorControlMenuButton.js +0 -412
  91. package/components/control-bar/ForwardControl.js +0 -17
  92. package/components/control-bar/ForwardReplayControl.js +0 -122
  93. package/components/control-bar/FullscreenToggle.js +0 -101
  94. package/components/control-bar/PlayToggle.js +0 -98
  95. package/components/control-bar/ReplayControl.js +0 -17
  96. package/components/control-bar/SettingsMenuButton.js +0 -43
  97. package/components/control-bar/SubtitleLanguagesMenuButton.js +0 -174
  98. package/components/control-bar/VolumeMenuButton.js +0 -134
  99. package/components/control-bar/ZoomMenuButton.js +0 -116
  100. package/components/marking-controls/MarkInControl.js +0 -140
  101. package/components/marking-controls/MarkOutControl.js +0 -155
  102. package/components/marking-controls/MarkingAddButton.js +0 -94
  103. package/components/marking-controls/MarkingControl.js +0 -135
  104. package/components/marking-controls/MarkingDeleteButton.js +0 -84
  105. package/components/marking-controls/MarkingDuration.js +0 -77
  106. package/components/marking-controls/MarkingPreview.js +0 -86
  107. package/components/progress-bar/AudioWaveform.js +0 -144
  108. package/components/progress-bar/LoadProgressBar.js +0 -90
  109. package/components/progress-bar/MouseTimeDisplay.js +0 -53
  110. package/components/progress-bar/PlayProgressBar.js +0 -79
  111. package/components/progress-bar/ProgressControl.js +0 -222
  112. package/components/progress-bar/SeekBar.js +0 -261
  113. package/components/progress-bar/Timeline.js +0 -134
  114. package/components/settings-menu-control/PlaybackRateControl.js +0 -147
  115. package/components/settings-menu-control/SafeAreaControl.js +0 -92
  116. package/components/settings-menu-control/SettingsMenu.js +0 -68
  117. package/components/settings-menu-control/SubtitleControl.js +0 -1
  118. package/components/time-controls/CurrentTimeDisplay.js +0 -53
  119. package/components/time-controls/DurationDisplay.js +0 -51
  120. package/components/time-controls/TimeDivider.js +0 -41
  121. package/components/volume-control/VolumeBar.js +0 -216
  122. package/components/volume-control/VolumeControl.js +0 -35
  123. package/components/volume-control/VolumeLevel.js +0 -78
  124. package/components/zoom-control/ZoomBar.js +0 -189
  125. package/components/zoom-control/ZoomLevel.js +0 -68
  126. package/reducers/index.js +0 -23
  127. package/reducers/operation.js +0 -36
  128. package/reducers/player.js +0 -222
  129. package/utils/browser.js +0 -29
  130. package/utils/fullscreen.js +0 -73
@@ -1,299 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _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; };
8
-
9
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
10
-
11
- var _react = require('react');
12
-
13
- var _react2 = _interopRequireDefault(_react);
14
-
15
- var _styledComponents = require('styled-components');
16
-
17
- var _styledComponents2 = _interopRequireDefault(_styledComponents);
18
-
19
- var _propTypes = require('prop-types');
20
-
21
- var _components = require('@desynova-digital/components');
22
-
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
-
25
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
-
27
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
28
-
29
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable jsx-a11y/mouse-events-have-key-events */
30
- /* eslint-disable jsx-a11y/click-events-have-key-events */
31
- /* eslint-disable react/no-array-index-key */
32
-
33
-
34
- /*
35
- * import { colors } from '@desynova-digital/tokens';
36
- * import colors from '../colors';
37
- */
38
-
39
- var propTypes = {
40
- player: _propTypes.PropTypes.instanceOf(Object),
41
- actions: _propTypes.PropTypes.instanceOf(Object),
42
- markers: _propTypes.PropTypes.instanceOf(Array),
43
- onTagClick: _propTypes.PropTypes.func
44
- };
45
-
46
- var defaultProps = {
47
- player: {}
48
- };
49
-
50
- var PointersContainer = _styledComponents2.default.div.withConfig({
51
- displayName: 'PointersBar__PointersContainer',
52
- componentId: 'sc-b8687a-0'
53
- })(['display:flex;']);
54
-
55
- var PointerBlock = _styledComponents2.default.div.withConfig({
56
- displayName: 'PointersBar__PointerBlock',
57
- componentId: 'sc-b8687a-1'
58
- })(['width:100%;height:20px;position:relative;border-top:1px solid #333333;border-bottom:1px solid #333333;.empty-pointers-msg{display:flex;justify-content:center;align-items:center;height:100%;p{font-family:SFUIText-Medium;font-size:11px;color:#aaaaaa;}', '{margin:0 5px;}}'], _components.Icon.Element);
59
- var MarkerTagsBlock = _styledComponents2.default.div.withConfig({
60
- displayName: 'PointersBar__MarkerTagsBlock',
61
- componentId: 'sc-b8687a-2'
62
- })(['min-width:100px;max-width:100px;position:relative;height:100%;.tags-block{height:20px;font-family:SFUIText-Medium;font-size:10px;color:#ffffff;text-transform:uppercase;border-top:1px solid #333333;border-bottom:1px solid #333333;p{line-height:18px;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}}']);
63
-
64
- var ToolTipStyles = _styledComponents2.default.div.withConfig({
65
- displayName: 'PointersBar__ToolTipStyles',
66
- componentId: 'sc-b8687a-3'
67
- })(['position:absolute;z-index:2;height:18px;transition:left .1s ease-in-out;.tooltip-container{border-radius:0.25rem;padding:5px;width:fit-content;background:#FFFFFF;;color:#666666;h4{white-space:nowrap;font-size:12px;}&:after{content:\'\';position:absolute;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid white;', ' left:50%;transform:translateX(-50%);}}'], function (props) {
68
- return props.multiline ? "bottom: -21px;" : "bottom: -9px;";
69
- });
70
-
71
- var PointersBar = function (_Component) {
72
- _inherits(PointersBar, _Component);
73
-
74
- function PointersBar(props) {
75
- _classCallCheck(this, PointersBar);
76
-
77
- var _this = _possibleConstructorReturn(this, (PointersBar.__proto__ || Object.getPrototypeOf(PointersBar)).call(this, props));
78
-
79
- _this.getPointerStyle = _this.getPointerStyle.bind(_this);
80
- _this.state = {
81
- tooltip: {
82
- isVisible: false
83
- }
84
- };
85
- _this._tooltipRef = _react2.default.createRef();
86
- return _this;
87
- }
88
-
89
- _createClass(PointersBar, [{
90
- key: 'onMarkerClick',
91
- value: function onMarkerClick(e, marker) {
92
- var _props = this.props,
93
- onTagClick = _props.onTagClick,
94
- actions = _props.actions;
95
-
96
- var start_time = parseFloat(e.target.getAttribute('leftpos'));
97
- var end_time = parseFloat(e.target.getAttribute('rightpos'));
98
- actions.handleMarkerUpdate(start_time, end_time);
99
- actions.pause();
100
- actions.seek(start_time);
101
- onTagClick(start_time, end_time, marker);
102
- }
103
- }, {
104
- key: 'getPointerStyle',
105
- value: function getPointerStyle(leftMarker, rightMarker, index) {
106
- var player = this.props.player;
107
-
108
- var left = leftMarker / player.duration * 100;
109
- var right = rightMarker / player.duration * 100;
110
- var width = right - left;
111
- var style = {
112
- left: left + '%',
113
- position: 'absolute',
114
- bottom: 0,
115
- height: '100%',
116
- width: width + '%',
117
- cursor: 'pointer',
118
- backgroundColor: index % 2 === 0 ? '#00cec6' : '#146778',
119
- opacity: 0.8,
120
- minWidth: '0.3px'
121
- };
122
- return style;
123
- }
124
- }, {
125
- key: 'setTooltipData',
126
- value: function setTooltipData(e, title) {
127
- var _this2 = this;
128
-
129
- var tooltip = this.state.tooltip;
130
-
131
- tooltip.isVisible = false;
132
- tooltip.text = title;
133
- tooltip.bottom = window.innerHeight - e.target.getBoundingClientRect().top; // e.target.getBoundingClientRect().top - e.target.getBoundingClientRect().height - 10;
134
- tooltip.bottom = title.line1 ? tooltip.bottom + 22 : tooltip.bottom + 10;
135
- tooltip.left = e.target.getBoundingClientRect().left + (e.target.getBoundingClientRect().right - e.target.getBoundingClientRect().left) / 2;
136
- this.setState(_extends({}, tooltip), function () {
137
- var tooltip = _this2.state.tooltip;
138
-
139
- var tooltipRefOffset = _this2._tooltipRef.current && _this2._tooltipRef.current.offsetWidth ? _this2._tooltipRef.current.offsetWidth / 2 : 0;
140
- tooltip.isVisible = true;
141
- tooltip.left = tooltip.left - tooltipRefOffset;
142
- _this2.setState(_extends({}, tooltip));
143
- });
144
- }
145
- }, {
146
- key: 'getTitle',
147
- value: function getTitle(marker) {
148
- var data = marker.segment_title || marker.word || '';
149
- if (!data.length && marker.line1) {
150
- return {
151
- line1: marker.line1,
152
- line2: marker.line2
153
- };
154
- }
155
- return data;
156
- }
157
- }, {
158
- key: 'render',
159
- value: function render() {
160
- var _this3 = this;
161
-
162
- var markers = this.props.markers;
163
- var _state$tooltip = this.state.tooltip,
164
- isVisible = _state$tooltip.isVisible,
165
- text = _state$tooltip.text,
166
- left = _state$tooltip.left,
167
- bottom = _state$tooltip.bottom;
168
-
169
- var self = this;
170
- return _react2.default.createElement(
171
- _react2.default.Fragment,
172
- null,
173
- markers && markers.length ? markers.map(function (marker_obj) {
174
- return _react2.default.createElement(
175
- PointersContainer,
176
- { key: marker_obj.name },
177
- _react2.default.createElement(
178
- MarkerTagsBlock,
179
- null,
180
- _react2.default.createElement(
181
- 'div',
182
- { className: 'tags-block' },
183
- _react2.default.createElement(
184
- 'p',
185
- null,
186
- marker_obj.name
187
- )
188
- )
189
- ),
190
- _react2.default.createElement(
191
- PointerBlock,
192
- null,
193
- marker_obj && marker_obj.values && marker_obj.values.length ? marker_obj.values.map(function (marker, index) {
194
- var style = self.getPointerStyle(marker.start_time, marker.end_time, index);
195
- return _react2.default.createElement('div', {
196
- className: 'marker-blocks',
197
- onClick: function onClick(e) {
198
- _this3.onMarkerClick(e, marker);
199
- },
200
- onMouseOver: function onMouseOver(e) {
201
- self.setTooltipData(e, _this3.getTitle(marker));
202
- },
203
- onMouseOut: function onMouseOut() {
204
- var tooltip = _this3.state.tooltip;
205
-
206
- tooltip.isVisible = false;
207
- tooltip.text = null;
208
- // tooltip.left = null;
209
- _this3.setState(_extends({}, tooltip));
210
- },
211
- role: 'button',
212
- tabIndex: '-1',
213
- style: style,
214
- leftpos: marker.start_time,
215
- rightpos: marker.end_time,
216
- key: marker.start_time + '-' + marker.end_time + '-' + index
217
- });
218
- }) : _react2.default.createElement(
219
- 'div',
220
- { className: 'empty-pointers-msg' },
221
- _react2.default.createElement(
222
- 'p',
223
- null,
224
- 'Mark In'
225
- ),
226
- _react2.default.createElement(_components.Icon, {
227
- name: 'in-marker',
228
- stroke: '#fff',
229
- width: 7,
230
- height: 11
231
- }),
232
- _react2.default.createElement(
233
- 'p',
234
- null,
235
- 'and Mark Out'
236
- ),
237
- _react2.default.createElement(_components.Icon, {
238
- name: 'out-marker',
239
- stroke: '#fff',
240
- width: 7,
241
- height: 11
242
- }),
243
- _react2.default.createElement(
244
- 'p',
245
- null,
246
- 'to create ',
247
- marker_obj.name,
248
- ' in the selected range. '
249
- )
250
- )
251
- ),
252
- _react2.default.createElement(
253
- MarkerTagsBlock,
254
- null,
255
- _react2.default.createElement(
256
- 'div',
257
- { className: 'tags-block' },
258
- _react2.default.createElement('p', null)
259
- )
260
- )
261
- );
262
- }) : null,
263
- text && _react2.default.createElement(
264
- ToolTipStyles,
265
- { multiline: !!text.line1, ref: this._tooltipRef, style: { left: left || 0, bottom: bottom || 0, visibility: isVisible ? "visible" : "hidden" } },
266
- _react2.default.createElement(
267
- 'div',
268
- { className: 'tooltip-container' },
269
- text.line1 && _react2.default.createElement(
270
- 'h4',
271
- null,
272
- text.line1
273
- ),
274
- text.line2 && _react2.default.createElement(
275
- 'h4',
276
- null,
277
- text.line2
278
- ),
279
- !text.line1 && _react2.default.createElement(
280
- 'h4',
281
- null,
282
- text
283
- )
284
- )
285
- ),
286
- _react2.default.createElement('div', { id: 'dummy-container' })
287
- );
288
- }
289
- }]);
290
-
291
- return PointersBar;
292
- }(_react.Component);
293
-
294
- exports.default = PointersBar;
295
-
296
-
297
- PointersBar.propTypes = propTypes;
298
- PointersBar.defaultProps = defaultProps;
299
- PointersBar.displayName = 'PointersBar';
@@ -1,61 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _propTypes = require('prop-types');
8
-
9
- var _react = require('react');
10
-
11
- var _react2 = _interopRequireDefault(_react);
12
-
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
-
15
- var propTypes = {
16
- poster: _propTypes.PropTypes.string,
17
- player: _propTypes.PropTypes.instanceOf(Object),
18
- actions: _propTypes.PropTypes.instanceOf(Object)
19
- };
20
-
21
- var defaultProps = {
22
- poster: '',
23
- player: {},
24
- actions: {}
25
- };
26
-
27
- function PosterImage(_ref) {
28
- var poster = _ref.poster,
29
- player = _ref.player,
30
- actions = _ref.actions;
31
-
32
- if (!poster || player.hasStarted) {
33
- return null;
34
- }
35
-
36
- return _react2.default.createElement('div', {
37
- role: 'presentation',
38
- style: {
39
- backgroundImage: 'url("' + poster + '")',
40
- backgroundSize: 'auto 100%',
41
- width: '100%',
42
- height: '100%',
43
- position: 'absolute',
44
- top: 0,
45
- left: 0,
46
- backgroundPosition: '50% 50%'
47
- },
48
- onClick: function onClick() {
49
- if (player.paused) {
50
- actions.play();
51
- actions.handleVideoRewind(false);
52
- }
53
- }
54
- });
55
- }
56
-
57
- PosterImage.propTypes = propTypes;
58
- PosterImage.defaultProps = defaultProps;
59
- PosterImage.displayName = 'PosterImage';
60
-
61
- exports.default = PosterImage;
@@ -1,68 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = SDOutline;
7
-
8
- var _react = require('react');
9
-
10
- var _react2 = _interopRequireDefault(_react);
11
-
12
- var _styledComponents = require('styled-components');
13
-
14
- var _styledComponents2 = _interopRequireDefault(_styledComponents);
15
-
16
- var _propTypes = require('prop-types');
17
-
18
- var _colors = require('../colors');
19
-
20
- var _colors2 = _interopRequireDefault(_colors);
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
- var propTypes = {
25
- player: _propTypes.PropTypes.instanceOf(Object),
26
- actions: _propTypes.PropTypes.instanceOf(Object)
27
- };
28
-
29
- var SDPlayerBorder = _styledComponents2.default.div.withConfig({
30
- displayName: 'SDOutline__SDPlayerBorder',
31
- componentId: 'sc-85r8e3-0'
32
- })(['opacity:0.3;border:solid 1px ', ';top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;padding-left:75%;height:100%;'], _colors2.default.common.base.white);
33
-
34
- var SDBorderText = (0, _styledComponents2.default)('p').withConfig({
35
- displayName: 'SDOutline__SDBorderText',
36
- componentId: 'sc-85r8e3-1'
37
- })(['color:#fff;padding-top:25%;position:absolute;font-family:SFUIText-Regular;text-shadow:0 0 4px rgba(0,0,0,0.5);font-size:12px;top:20%;transform:translate(-50%,-50%) rotate(-90deg);']);
38
-
39
- function SDOutline(_ref) {
40
- var player = _ref.player,
41
- actions = _ref.actions;
42
-
43
- return _react2.default.createElement(
44
- _react2.default.Fragment,
45
- null,
46
- _react2.default.createElement(SDPlayerBorder, {
47
- style: !player.SDBorderActive ? { display: 'none' } : { display: 'block' },
48
- onClick: function onClick() {
49
- if (player.paused) {
50
- actions.play();
51
- } else {
52
- actions.pause();
53
- }
54
- actions.handleVideoRewind(false);
55
- }
56
- }),
57
- _react2.default.createElement(
58
- SDBorderText,
59
- {
60
- style: !player.SDBorderActive ? { display: 'none' } : { display: 'block' }
61
- },
62
- '4:3 Safe Area'
63
- )
64
- );
65
- }
66
-
67
- SDOutline.propTypes = propTypes;
68
- SDOutline.displayName = 'SDOutline';