@elice/material-video 1.240718.2 → 1.240719.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.
- package/cjs/components/material-video/MaterialVideo.js +34 -27
- package/cjs/components/material-video/MaterialVideo.styled.js +5 -1
- package/cjs/components/material-video/MaterialVideoContent.js +31 -29
- package/cjs/components/material-video/index.js +7 -0
- package/cjs/components/material-video/locales/index.js +13 -0
- package/cjs/components/youtube-player/YoutubePlayer.js +28 -20
- package/cjs/components/youtube-player/YoutubePlayer.styled.js +5 -1
- package/cjs/components/youtube-player/index.js +7 -0
- package/cjs/utils/youtubeUrlParser.js +6 -6
- package/es/components/material-video/MaterialVideo.js +29 -27
- package/es/components/material-video/MaterialVideo.styled.js +1 -1
- package/es/components/material-video/MaterialVideoContent.js +31 -29
- package/es/components/material-video/index.js +1 -0
- package/es/components/material-video/locales/index.js +4 -0
- package/es/components/youtube-player/YoutubePlayer.js +22 -19
- package/es/components/youtube-player/YoutubePlayer.styled.js +1 -1
- package/es/components/youtube-player/index.js +1 -0
- package/es/utils/youtubeUrlParser.js +6 -6
- package/package.json +8 -11
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
7
|
var React = require('react');
|
|
7
8
|
var apiClient = require('@elice/api-client');
|
|
8
9
|
var blocks = require('@elice/blocks');
|
|
@@ -14,34 +15,40 @@ var en = require('./locales/en.json.js');
|
|
|
14
15
|
var ko = require('./locales/ko.json.js');
|
|
15
16
|
var MaterialVideoContent = require('./MaterialVideoContent.js');
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
19
|
+
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
21
|
+
var classnames__default = /*#__PURE__*/_interopDefaultCompat(classnames);
|
|
22
|
+
|
|
23
|
+
var MaterialVideo = function MaterialVideo(_a) {
|
|
24
|
+
var className = _a.className,
|
|
25
|
+
materialVideoId = _a.materialVideoId,
|
|
26
|
+
__intl = _a.__intl,
|
|
23
27
|
youtubeProps = tslib.__rest(_a, ["className", "materialVideoId", "__intl"]);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
28
|
+
var prefixCls = 'em-material-video';
|
|
29
|
+
var _useMaterialFetch = materialSharedUtils.useMaterialFetch(types.enums.LectureMaterialType.Video, React__default.default.useCallback(function (signal) {
|
|
30
|
+
return apiClient.getOrgMaterialVideoGet({
|
|
31
|
+
materialVideoId: materialVideoId
|
|
32
|
+
}, {
|
|
33
|
+
signal: signal
|
|
34
|
+
});
|
|
35
|
+
}, [materialVideoId]), apiClient.config.init),
|
|
36
|
+
materialVideo = _useMaterialFetch.materialVideo,
|
|
37
|
+
materialVideoStatus = _useMaterialFetch.status;
|
|
38
|
+
return jsxRuntime.jsx(intl.RawEliceIntlProvider, {
|
|
39
|
+
value: __intl,
|
|
40
|
+
children: jsxRuntime.jsx(blocks.Flex, {
|
|
41
|
+
className: classnames__default.default(prefixCls, className),
|
|
42
|
+
align: "center",
|
|
43
|
+
justify: "center",
|
|
44
|
+
width: "100%",
|
|
45
|
+
height: "100%",
|
|
46
|
+
children: jsxRuntime.jsx(MaterialVideoContent.default, Object.assign({
|
|
47
|
+
materialVideo: materialVideo !== null && materialVideo !== void 0 ? materialVideo : null,
|
|
48
|
+
videoGetStatus: materialVideoStatus
|
|
49
|
+
}, youtubeProps))
|
|
50
|
+
})
|
|
51
|
+
});
|
|
45
52
|
};
|
|
46
53
|
var MaterialVideo$1 = new intl.IntlComponentBuilder(MaterialVideo).add('en', en.default).add('ko', ko.default).addAsync('th', Promise.resolve().then(function () { return require('./locales/th.json.js'); })).addAsync('ja', Promise.resolve().then(function () { return require('./locales/ja.json.js'); })).build();
|
|
47
54
|
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
var blocks = require('@elice/blocks');
|
|
4
4
|
var styled = require('styled-components');
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var styled__default = /*#__PURE__*/_interopDefaultCompat(styled);
|
|
9
|
+
|
|
10
|
+
var StyledMaterialVideoStatus = styled__default.default(blocks.Flex).withConfig({
|
|
7
11
|
componentId: "sc-dg3csq-0"
|
|
8
12
|
})(["width:100%;height:100%;background-color:#22222c;"]);
|
|
9
13
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
|
-
var
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var blocks = require('@elice/blocks');
|
|
8
8
|
var designTokens = require('@elice/design-tokens');
|
|
9
9
|
var icons = require('@elice/icons');
|
|
@@ -12,41 +12,43 @@ var youtubeUrlParser = require('../../utils/youtubeUrlParser.js');
|
|
|
12
12
|
var YoutubePlayer = require('../youtube-player/YoutubePlayer.js');
|
|
13
13
|
var MaterialVideo_styled = require('./MaterialVideo.styled.js');
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
materialVideo
|
|
19
|
-
} = _a,
|
|
15
|
+
var MaterialVideoContent = function MaterialVideoContent(_a) {
|
|
16
|
+
var videoGetStatus = _a.videoGetStatus,
|
|
17
|
+
materialVideo = _a.materialVideo,
|
|
20
18
|
youtubeProps = tslib.__rest(_a, ["videoGetStatus", "materialVideo"]);
|
|
21
|
-
|
|
19
|
+
var intl$1 = intl.useRawEliceIntl();
|
|
22
20
|
if (videoGetStatus === 'pending') {
|
|
23
|
-
return
|
|
21
|
+
return jsxRuntime.jsxs(MaterialVideo_styled.StyledMaterialVideoStatus, {
|
|
24
22
|
align: "center",
|
|
25
|
-
justify: "center"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
justify: "center",
|
|
24
|
+
children: [jsxRuntime.jsx(blocks.Spinner, {}), jsxRuntime.jsx(blocks.Hspace, {
|
|
25
|
+
width: 0.5
|
|
26
|
+
}), jsxRuntime.jsx(blocks.Text, {
|
|
27
|
+
role: "white",
|
|
28
|
+
children: intl$1.formatMessage({
|
|
29
|
+
id: 'video.status.loading'
|
|
30
|
+
})
|
|
31
|
+
})]
|
|
32
|
+
});
|
|
33
33
|
}
|
|
34
34
|
if (!(materialVideo === null || materialVideo === void 0 ? void 0 : materialVideo.url) || videoGetStatus === 'rejected') {
|
|
35
|
-
return
|
|
35
|
+
return jsxRuntime.jsxs(MaterialVideo_styled.StyledMaterialVideoStatus, {
|
|
36
36
|
align: "center",
|
|
37
|
-
justify: "center"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
justify: "center",
|
|
38
|
+
children: [jsxRuntime.jsx(blocks.Icon, {
|
|
39
|
+
icon: icons.eilStatusWarn,
|
|
40
|
+
color: designTokens.base.color.white
|
|
41
|
+
}), jsxRuntime.jsx(blocks.Hspace, {
|
|
42
|
+
width: 0.5
|
|
43
|
+
}), jsxRuntime.jsx(blocks.Text, {
|
|
44
|
+
role: "white",
|
|
45
|
+
children: intl$1.formatMessage({
|
|
46
|
+
id: 'video.status.error'
|
|
47
|
+
})
|
|
48
|
+
})]
|
|
49
|
+
});
|
|
48
50
|
}
|
|
49
|
-
return
|
|
51
|
+
return jsxRuntime.jsx(YoutubePlayer.default, Object.assign({
|
|
50
52
|
videoId: youtubeUrlParser.youtubeUrlParser(materialVideo.url)
|
|
51
53
|
}, youtubeProps));
|
|
52
54
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var en = require('./en.json.js');
|
|
4
|
+
var ko = require('./ko.json.js');
|
|
5
|
+
var th = require('./th.json.js');
|
|
6
|
+
var ja = require('./ja.json.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.messageEn = en.default;
|
|
11
|
+
exports.messageKo = ko.default;
|
|
12
|
+
exports.messageTh = th.default;
|
|
13
|
+
exports.messageJa = ja.default;
|
|
@@ -3,27 +3,34 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
|
-
var
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var Youtube = require('react-youtube');
|
|
8
8
|
var classnames = require('classnames');
|
|
9
9
|
var YoutubePlayer_styled = require('./YoutubePlayer.styled.js');
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var Youtube__default = /*#__PURE__*/_interopDefaultCompat(Youtube);
|
|
14
|
+
var classnames__default = /*#__PURE__*/_interopDefaultCompat(classnames);
|
|
15
|
+
|
|
16
|
+
var YoutubePlayer = function YoutubePlayer(_a) {
|
|
17
|
+
var className = _a.className,
|
|
18
|
+
videoId = _a.videoId,
|
|
19
|
+
_a$autoPlay = _a.autoPlay,
|
|
20
|
+
autoPlay = _a$autoPlay === void 0 ? false : _a$autoPlay,
|
|
21
|
+
_a$disableControl = _a.disableControl,
|
|
22
|
+
disableControl = _a$disableControl === void 0 ? false : _a$disableControl,
|
|
23
|
+
_a$disableKeyboardEve = _a.disableKeyboardEvent,
|
|
24
|
+
disableKeyboardEvent = _a$disableKeyboardEve === void 0 ? false : _a$disableKeyboardEve,
|
|
25
|
+
_a$disableFullscreen = _a.disableFullscreen,
|
|
26
|
+
disableFullscreen = _a$disableFullscreen === void 0 ? false : _a$disableFullscreen,
|
|
20
27
|
youtubeProps = tslib.__rest(_a, ["className", "videoId", "autoPlay", "disableControl", "disableKeyboardEvent", "disableFullscreen"]);
|
|
21
|
-
|
|
28
|
+
var prefixCls = 'em-youtube-player';
|
|
22
29
|
/**
|
|
23
30
|
* Get options for YouTube IFrame player API.
|
|
24
31
|
* ref: https://developers.google.com/youtube/player_parameters#Parameters
|
|
25
32
|
*/
|
|
26
|
-
|
|
33
|
+
var getYoutubeOptions = function getYoutubeOptions() {
|
|
27
34
|
return {
|
|
28
35
|
width: '100%',
|
|
29
36
|
height: '100%',
|
|
@@ -35,15 +42,16 @@ const YoutubePlayer = _a => {
|
|
|
35
42
|
}
|
|
36
43
|
};
|
|
37
44
|
};
|
|
38
|
-
return
|
|
39
|
-
className:
|
|
45
|
+
return jsxRuntime.jsx(YoutubePlayer_styled.StyledYoutubePlayerWrapper, {
|
|
46
|
+
className: classnames__default.default(prefixCls, className),
|
|
40
47
|
justify: "center",
|
|
41
|
-
align: "center"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
align: "center",
|
|
49
|
+
children: jsxRuntime.jsx(Youtube__default.default, Object.assign({
|
|
50
|
+
videoId: videoId,
|
|
51
|
+
opts: getYoutubeOptions(),
|
|
52
|
+
containerClassName: "".concat(prefixCls, "__inner")
|
|
53
|
+
}, youtubeProps))
|
|
54
|
+
});
|
|
47
55
|
};
|
|
48
56
|
|
|
49
57
|
exports.default = YoutubePlayer;
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
var blocks = require('@elice/blocks');
|
|
4
4
|
var styled = require('styled-components');
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var styled__default = /*#__PURE__*/_interopDefaultCompat(styled);
|
|
9
|
+
|
|
10
|
+
var StyledYoutubePlayerWrapper = styled__default.default(blocks.Flex).withConfig({
|
|
7
11
|
componentId: "sc-ao5iuk-0"
|
|
8
12
|
})(["width:100%;height:100%;background-color:#22222c;& .em-youtube-player__inner{width:90%;height:90%;}"]);
|
|
9
13
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var YOUTUBE_DOMAIN = 'https://www.youtube.com';
|
|
4
|
+
var YOUTUBE_SHORT_DOMAIN = 'https://youtu.be';
|
|
5
|
+
var YOUTUBE_VIDEO_ID_LENGTH = 11;
|
|
6
6
|
/**
|
|
7
7
|
* Get YouTube video id from url using regex
|
|
8
8
|
* @param url URL of youtube
|
|
9
9
|
* @returns id of youtube video OR null when URL is invalid
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
var youtubeUrlParser = function youtubeUrlParser(url) {
|
|
12
12
|
var _a, _b;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
var pattern = new RegExp("^(?:".concat(YOUTUBE_DOMAIN, "/watch\\?v=|").concat(YOUTUBE_DOMAIN, "/embed/|").concat(YOUTUBE_SHORT_DOMAIN, "/)(?<videoId>[^?&]+)"));
|
|
14
|
+
var match = pattern.exec(url);
|
|
15
15
|
if (match && ((_a = match.groups) === null || _a === void 0 ? void 0 : _a.videoId.length) === YOUTUBE_VIDEO_ID_LENGTH) {
|
|
16
16
|
return (_b = match.groups) === null || _b === void 0 ? void 0 : _b.videoId;
|
|
17
17
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { __rest } from 'tslib';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { getOrgMaterialVideoGet, config } from '@elice/api-client';
|
|
4
5
|
import { Flex } from '@elice/blocks';
|
|
@@ -10,34 +11,35 @@ import messageEn from './locales/en.json.js';
|
|
|
10
11
|
import messageKo from './locales/ko.json.js';
|
|
11
12
|
import MaterialVideoContent from './MaterialVideoContent.js';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
__intl
|
|
18
|
-
} = _a,
|
|
14
|
+
var MaterialVideo = function MaterialVideo(_a) {
|
|
15
|
+
var className = _a.className,
|
|
16
|
+
materialVideoId = _a.materialVideoId,
|
|
17
|
+
__intl = _a.__intl,
|
|
19
18
|
youtubeProps = __rest(_a, ["className", "materialVideoId", "__intl"]);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
19
|
+
var prefixCls = 'em-material-video';
|
|
20
|
+
var _useMaterialFetch = useMaterialFetch(enums.LectureMaterialType.Video, React.useCallback(function (signal) {
|
|
21
|
+
return getOrgMaterialVideoGet({
|
|
22
|
+
materialVideoId: materialVideoId
|
|
23
|
+
}, {
|
|
24
|
+
signal: signal
|
|
25
|
+
});
|
|
26
|
+
}, [materialVideoId]), config.init),
|
|
27
|
+
materialVideo = _useMaterialFetch.materialVideo,
|
|
28
|
+
materialVideoStatus = _useMaterialFetch.status;
|
|
29
|
+
return jsx(RawEliceIntlProvider, {
|
|
30
|
+
value: __intl,
|
|
31
|
+
children: jsx(Flex, {
|
|
32
|
+
className: classnames(prefixCls, className),
|
|
33
|
+
align: "center",
|
|
34
|
+
justify: "center",
|
|
35
|
+
width: "100%",
|
|
36
|
+
height: "100%",
|
|
37
|
+
children: jsx(MaterialVideoContent, Object.assign({
|
|
38
|
+
materialVideo: materialVideo !== null && materialVideo !== void 0 ? materialVideo : null,
|
|
39
|
+
videoGetStatus: materialVideoStatus
|
|
40
|
+
}, youtubeProps))
|
|
41
|
+
})
|
|
42
|
+
});
|
|
41
43
|
};
|
|
42
44
|
var MaterialVideo$1 = new IntlComponentBuilder(MaterialVideo).add('en', messageEn).add('ko', messageKo).addAsync('th', import('./locales/th.json.js')).addAsync('ja', import('./locales/ja.json.js')).build();
|
|
43
45
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Flex } from '@elice/blocks';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
var StyledMaterialVideoStatus = styled(Flex).withConfig({
|
|
5
5
|
componentId: "sc-dg3csq-0"
|
|
6
6
|
})(["width:100%;height:100%;background-color:#22222c;"]);
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __rest } from 'tslib';
|
|
2
|
-
import
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { Spinner, Hspace, Text, Icon } from '@elice/blocks';
|
|
4
4
|
import { base } from '@elice/design-tokens';
|
|
5
5
|
import { eilStatusWarn } from '@elice/icons';
|
|
@@ -8,41 +8,43 @@ import { youtubeUrlParser } from '../../utils/youtubeUrlParser.js';
|
|
|
8
8
|
import YoutubePlayer from '../youtube-player/YoutubePlayer.js';
|
|
9
9
|
import { StyledMaterialVideoStatus } from './MaterialVideo.styled.js';
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
materialVideo
|
|
15
|
-
} = _a,
|
|
11
|
+
var MaterialVideoContent = function MaterialVideoContent(_a) {
|
|
12
|
+
var videoGetStatus = _a.videoGetStatus,
|
|
13
|
+
materialVideo = _a.materialVideo,
|
|
16
14
|
youtubeProps = __rest(_a, ["videoGetStatus", "materialVideo"]);
|
|
17
|
-
|
|
15
|
+
var intl = useRawEliceIntl();
|
|
18
16
|
if (videoGetStatus === 'pending') {
|
|
19
|
-
return
|
|
17
|
+
return jsxs(StyledMaterialVideoStatus, {
|
|
20
18
|
align: "center",
|
|
21
|
-
justify: "center"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
justify: "center",
|
|
20
|
+
children: [jsx(Spinner, {}), jsx(Hspace, {
|
|
21
|
+
width: 0.5
|
|
22
|
+
}), jsx(Text, {
|
|
23
|
+
role: "white",
|
|
24
|
+
children: intl.formatMessage({
|
|
25
|
+
id: 'video.status.loading'
|
|
26
|
+
})
|
|
27
|
+
})]
|
|
28
|
+
});
|
|
29
29
|
}
|
|
30
30
|
if (!(materialVideo === null || materialVideo === void 0 ? void 0 : materialVideo.url) || videoGetStatus === 'rejected') {
|
|
31
|
-
return
|
|
31
|
+
return jsxs(StyledMaterialVideoStatus, {
|
|
32
32
|
align: "center",
|
|
33
|
-
justify: "center"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
justify: "center",
|
|
34
|
+
children: [jsx(Icon, {
|
|
35
|
+
icon: eilStatusWarn,
|
|
36
|
+
color: base.color.white
|
|
37
|
+
}), jsx(Hspace, {
|
|
38
|
+
width: 0.5
|
|
39
|
+
}), jsx(Text, {
|
|
40
|
+
role: "white",
|
|
41
|
+
children: intl.formatMessage({
|
|
42
|
+
id: 'video.status.error'
|
|
43
|
+
})
|
|
44
|
+
})]
|
|
45
|
+
});
|
|
44
46
|
}
|
|
45
|
-
return
|
|
47
|
+
return jsx(YoutubePlayer, Object.assign({
|
|
46
48
|
videoId: youtubeUrlParser(materialVideo.url)
|
|
47
49
|
}, youtubeProps));
|
|
48
50
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as MaterialVideo } from './MaterialVideo.js';
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { __rest } from 'tslib';
|
|
2
|
-
import
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import Youtube from 'react-youtube';
|
|
4
4
|
import classnames from 'classnames';
|
|
5
5
|
import { StyledYoutubePlayerWrapper } from './YoutubePlayer.styled.js';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
var YoutubePlayer = function YoutubePlayer(_a) {
|
|
8
|
+
var className = _a.className,
|
|
9
|
+
videoId = _a.videoId,
|
|
10
|
+
_a$autoPlay = _a.autoPlay,
|
|
11
|
+
autoPlay = _a$autoPlay === void 0 ? false : _a$autoPlay,
|
|
12
|
+
_a$disableControl = _a.disableControl,
|
|
13
|
+
disableControl = _a$disableControl === void 0 ? false : _a$disableControl,
|
|
14
|
+
_a$disableKeyboardEve = _a.disableKeyboardEvent,
|
|
15
|
+
disableKeyboardEvent = _a$disableKeyboardEve === void 0 ? false : _a$disableKeyboardEve,
|
|
16
|
+
_a$disableFullscreen = _a.disableFullscreen,
|
|
17
|
+
disableFullscreen = _a$disableFullscreen === void 0 ? false : _a$disableFullscreen,
|
|
16
18
|
youtubeProps = __rest(_a, ["className", "videoId", "autoPlay", "disableControl", "disableKeyboardEvent", "disableFullscreen"]);
|
|
17
|
-
|
|
19
|
+
var prefixCls = 'em-youtube-player';
|
|
18
20
|
/**
|
|
19
21
|
* Get options for YouTube IFrame player API.
|
|
20
22
|
* ref: https://developers.google.com/youtube/player_parameters#Parameters
|
|
21
23
|
*/
|
|
22
|
-
|
|
24
|
+
var getYoutubeOptions = function getYoutubeOptions() {
|
|
23
25
|
return {
|
|
24
26
|
width: '100%',
|
|
25
27
|
height: '100%',
|
|
@@ -31,15 +33,16 @@ const YoutubePlayer = _a => {
|
|
|
31
33
|
}
|
|
32
34
|
};
|
|
33
35
|
};
|
|
34
|
-
return
|
|
36
|
+
return jsx(StyledYoutubePlayerWrapper, {
|
|
35
37
|
className: classnames(prefixCls, className),
|
|
36
38
|
justify: "center",
|
|
37
|
-
align: "center"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
align: "center",
|
|
40
|
+
children: jsx(Youtube, Object.assign({
|
|
41
|
+
videoId: videoId,
|
|
42
|
+
opts: getYoutubeOptions(),
|
|
43
|
+
containerClassName: "".concat(prefixCls, "__inner")
|
|
44
|
+
}, youtubeProps))
|
|
45
|
+
});
|
|
43
46
|
};
|
|
44
47
|
|
|
45
48
|
export { YoutubePlayer as default };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Flex } from '@elice/blocks';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
var StyledYoutubePlayerWrapper = styled(Flex).withConfig({
|
|
5
5
|
componentId: "sc-ao5iuk-0"
|
|
6
6
|
})(["width:100%;height:100%;background-color:#22222c;& .em-youtube-player__inner{width:90%;height:90%;}"]);
|
|
7
7
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as YoutubePlayer } from './YoutubePlayer.js';
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var YOUTUBE_DOMAIN = 'https://www.youtube.com';
|
|
2
|
+
var YOUTUBE_SHORT_DOMAIN = 'https://youtu.be';
|
|
3
|
+
var YOUTUBE_VIDEO_ID_LENGTH = 11;
|
|
4
4
|
/**
|
|
5
5
|
* Get YouTube video id from url using regex
|
|
6
6
|
* @param url URL of youtube
|
|
7
7
|
* @returns id of youtube video OR null when URL is invalid
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
var youtubeUrlParser = function youtubeUrlParser(url) {
|
|
10
10
|
var _a, _b;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
var pattern = new RegExp("^(?:".concat(YOUTUBE_DOMAIN, "/watch\\?v=|").concat(YOUTUBE_DOMAIN, "/embed/|").concat(YOUTUBE_SHORT_DOMAIN, "/)(?<videoId>[^?&]+)"));
|
|
12
|
+
var match = pattern.exec(url);
|
|
13
13
|
if (match && ((_a = match.groups) === null || _a === void 0 ? void 0 : _a.videoId.length) === YOUTUBE_VIDEO_ID_LENGTH) {
|
|
14
14
|
return (_b = match.groups) === null || _b === void 0 ? void 0 : _b.videoId;
|
|
15
15
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elice/material-video",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.240719.0",
|
|
4
4
|
"description": "User view and editing components of Elice material video",
|
|
5
5
|
"repository": "https://git.elicer.io/elice/frontend/library/elice-material",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -17,10 +17,8 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"start": "run-s watch",
|
|
19
19
|
"prebuild": "run-s clean",
|
|
20
|
-
"build": "
|
|
21
|
-
"
|
|
22
|
-
"build:cjs": "rollup -c ../../rollup.config.ts --configPlugin typescript -f cjs",
|
|
23
|
-
"watch": "rollup -c ../../rollup.config.ts --configPlugin typescript -f es -w",
|
|
20
|
+
"build": "cross-env NODE_ENV=production rollup -c ../../rollup.config.ts --configPlugin typescript -f es -f cjs",
|
|
21
|
+
"watch": "rollup -c ../../rollup.config.ts --configPlugin typescript -f es -f cjs -w",
|
|
24
22
|
"lint": "eslint --ext .ts,.tsx ./src --max-warnings=0",
|
|
25
23
|
"clean": "del-cli \"es/*\" \"cjs/*\" \"dist/*\""
|
|
26
24
|
},
|
|
@@ -44,20 +42,19 @@
|
|
|
44
42
|
},
|
|
45
43
|
"devDependencies": {
|
|
46
44
|
"@elice/api-client": "^1.240619.0",
|
|
47
|
-
"@elice/blocks": "^1.
|
|
45
|
+
"@elice/blocks": "^1.240529.0",
|
|
48
46
|
"@elice/design-tokens": "^1.220803.0",
|
|
49
47
|
"@elice/icons": "^1.230814.0",
|
|
50
48
|
"@elice/icons-legacy": "npm:@elice/icons@0.230814.0",
|
|
51
49
|
"@elice/intl": "0.240425.0-rc.2",
|
|
52
|
-
"@elice/material-shared-types": "1.
|
|
53
|
-
"@elice/material-shared-utils": "1.
|
|
54
|
-
"@elice/types": "
|
|
50
|
+
"@elice/material-shared-types": "1.240719.0",
|
|
51
|
+
"@elice/material-shared-utils": "1.240719.0",
|
|
52
|
+
"@elice/types": "1.240709.0",
|
|
55
53
|
"@types/classnames": "^2.3.1",
|
|
56
54
|
"@types/react": "~17.0.9",
|
|
57
55
|
"@types/styled-components": "^5.1.21",
|
|
58
56
|
"react": "^17.0.2",
|
|
59
57
|
"react-use": "^17.2.4",
|
|
60
58
|
"styled-components": "^5.3.0"
|
|
61
|
-
}
|
|
62
|
-
"gitHead": "cd595d8015f44aa8518f22e37b7d2fb981a2b71d"
|
|
59
|
+
}
|
|
63
60
|
}
|