@desynova-digital/player 3.9.7 → 4.0.0

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/index.js +52 -122
  67. package/Manager.js +0 -124
  68. package/actions/player.js +0 -375
  69. package/actions/video.js +0 -230
  70. package/components/AudioMeter.js +0 -414
  71. package/components/BigPlayButton.js +0 -110
  72. package/components/ImageViewer.js +0 -318
  73. package/components/MarkerBar.js +0 -138
  74. package/components/Menu.js +0 -77
  75. package/components/Player.js +0 -821
  76. package/components/PlayerHeader.js +0 -472
  77. package/components/Playlist.js +0 -133
  78. package/components/PointersBar.js +0 -299
  79. package/components/PosterImage.js +0 -61
  80. package/components/SDOutline.js +0 -68
  81. package/components/Shortcut.js +0 -621
  82. package/components/Slider.js +0 -317
  83. package/components/TagsBar.js +0 -100
  84. package/components/Video.js +0 -1431
  85. package/components/control-bar/AudioTracksMenuButton.js +0 -113
  86. package/components/control-bar/CameraButton.js +0 -88
  87. package/components/control-bar/CommentsButton.js +0 -216
  88. package/components/control-bar/ControlBar.js +0 -260
  89. package/components/control-bar/EditorControlMenuButton.js +0 -412
  90. package/components/control-bar/ForwardControl.js +0 -17
  91. package/components/control-bar/ForwardReplayControl.js +0 -122
  92. package/components/control-bar/FullscreenToggle.js +0 -101
  93. package/components/control-bar/PlayToggle.js +0 -98
  94. package/components/control-bar/ReplayControl.js +0 -17
  95. package/components/control-bar/SettingsMenuButton.js +0 -43
  96. package/components/control-bar/SubtitleLanguagesMenuButton.js +0 -174
  97. package/components/control-bar/VolumeMenuButton.js +0 -134
  98. package/components/control-bar/ZoomMenuButton.js +0 -116
  99. package/components/marking-controls/MarkInControl.js +0 -140
  100. package/components/marking-controls/MarkOutControl.js +0 -155
  101. package/components/marking-controls/MarkingAddButton.js +0 -94
  102. package/components/marking-controls/MarkingControl.js +0 -135
  103. package/components/marking-controls/MarkingDeleteButton.js +0 -84
  104. package/components/marking-controls/MarkingDuration.js +0 -77
  105. package/components/marking-controls/MarkingPreview.js +0 -86
  106. package/components/progress-bar/AudioWaveform.js +0 -144
  107. package/components/progress-bar/LoadProgressBar.js +0 -90
  108. package/components/progress-bar/MouseTimeDisplay.js +0 -53
  109. package/components/progress-bar/PlayProgressBar.js +0 -79
  110. package/components/progress-bar/ProgressControl.js +0 -222
  111. package/components/progress-bar/SeekBar.js +0 -261
  112. package/components/progress-bar/Timeline.js +0 -134
  113. package/components/settings-menu-control/PlaybackRateControl.js +0 -147
  114. package/components/settings-menu-control/SafeAreaControl.js +0 -92
  115. package/components/settings-menu-control/SettingsMenu.js +0 -68
  116. package/components/settings-menu-control/SubtitleControl.js +0 -1
  117. package/components/time-controls/CurrentTimeDisplay.js +0 -53
  118. package/components/time-controls/DurationDisplay.js +0 -51
  119. package/components/time-controls/TimeDivider.js +0 -41
  120. package/components/volume-control/VolumeBar.js +0 -216
  121. package/components/volume-control/VolumeControl.js +0 -35
  122. package/components/volume-control/VolumeLevel.js +0 -78
  123. package/components/zoom-control/ZoomBar.js +0 -189
  124. package/components/zoom-control/ZoomLevel.js +0 -68
  125. package/reducers/index.js +0 -23
  126. package/reducers/operation.js +0 -36
  127. package/reducers/player.js +0 -222
  128. package/utils/browser.js +0 -29
  129. package/utils/dom.js +0 -104
  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';