@brightcove/components-embed-code-modal 0.8.1 → 0.8.3
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/.eslintignore +7 -0
- package/.eslintrc +23 -0
- package/.husky/pre-commit +4 -0
- package/.nvmrc +1 -0
- package/.prettierignore +7 -0
- package/.prettierrc +5 -0
- package/.release-it.json +40 -0
- package/.whitesource +3 -0
- package/CHANGELOG.md +342 -0
- package/CODEOWNERS +37 -0
- package/PULL_REQUEST_TEMPLATE.md +17 -0
- package/__tests__/EmbedCode.test.tsx +51 -0
- package/__tests__/InteractivityProject.test.tsx +50 -0
- package/__tests__/PlayerPreview.test.tsx +23 -0
- package/__tests__/TabsHeader.test.tsx +19 -0
- package/__tests__/TabsSection.test.tsx +46 -0
- package/__tests__/TitleWithTooltip.test.tsx +45 -0
- package/__tests__/VideoPlayer.test.tsx +38 -0
- package/__tests__/util.test.ts +89 -0
- package/babel.config.json +17 -0
- package/etc/wildcard.brightcove.com.key +27 -0
- package/etc/wildcard.brightcove.com.pem +96 -0
- package/jest/jest.setup.js +62 -0
- package/jest/jest.stub.js +4 -0
- package/jest.config.js +24 -0
- package/package.json +15 -5
- package/scripts/create-dist-pkg-prod.js +18 -0
- package/src/index.ts +16 -0
- package/src/js/EmbedCodeModal.tsx +88 -0
- package/src/js/components/CustomSettingsDropdown.tsx +184 -0
- package/src/js/components/EmbedCopySection.tsx +130 -0
- package/src/js/components/ModalContainer.tsx +274 -0
- package/src/js/components/NoPlayerModal.tsx +42 -0
- package/src/js/components/PlayerPreview.tsx +116 -0
- package/src/js/components/TabsHeader.tsx +31 -0
- package/src/js/components/TabsSection.tsx +74 -0
- package/src/js/components/TitleWithTooltip.tsx +39 -0
- package/src/js/components/VideoLinks.tsx +83 -0
- package/src/js/components/VideoPlayer.tsx +303 -0
- package/src/js/components/{index.d.ts → index.ts} +0 -1
- package/src/js/constants/baseUrls.ts +4 -0
- package/src/js/constants/embed.ts +12 -0
- package/src/js/constants/player.ts +32 -0
- package/src/js/constants/pluginsRegistry.ts +30 -0
- package/src/js/hooks/useGetPlayers.ts +12 -0
- package/src/js/i18n.ts +43 -0
- package/src/js/services/players-api.ts +26 -0
- package/src/js/services/url-shortener.ts +10 -0
- package/src/js/types/EmbedCodeModalProps.ts +72 -0
- package/src/js/types/EmbedCodeProps.ts +13 -0
- package/src/js/types/brightcoveEmbedCode.d.ts +18 -0
- package/src/js/types/players.ts +64 -0
- package/src/js/types/react-i18next.d.ts +8 -0
- package/src/js/types/studioModule.ts +7 -0
- package/src/js/utils/addPluginsDataToPlayers.ts +59 -0
- package/src/js/utils/call.ts +31 -0
- package/src/js/utils/dimensions.ts +53 -0
- package/src/js/utils/featureSwitches.ts +16 -0
- package/src/js/utils/util.ts +153 -0
- package/src/module.tsx +246 -0
- package/src/styles/CustomSettingsDropdown.sass +42 -0
- package/src/styles/EmbedCode.sass +30 -0
- package/src/styles/EmbedCodeModal.sass +76 -0
- package/src/styles/base.sass +1 -0
- package/src/styles/theme.sass +11 -0
- package/src/styles/typings.td.ts +9 -0
- package/src/translations/en.json +53 -0
- package/src/translations/es.json +53 -0
- package/src/translations/fr.json +53 -0
- package/src/translations/ja.json +53 -0
- package/src/translations/ko.json +53 -0
- package/src/translations/zh.json +53 -0
- package/src/types/studio.ts +197 -0
- package/tsconfig.json +34 -0
- package/webpack.config.js +97 -0
- package/__tests__/EmbedCode.test.d.ts +0 -2
- package/__tests__/EmbedCode.test.d.ts.map +0 -1
- package/__tests__/InteractivityProject.test.d.ts +0 -2
- package/__tests__/InteractivityProject.test.d.ts.map +0 -1
- package/__tests__/PlayerPreview.test.d.ts +0 -2
- package/__tests__/PlayerPreview.test.d.ts.map +0 -1
- package/__tests__/PlayersDropdown.test.d.ts +0 -2
- package/__tests__/PlayersDropdown.test.d.ts.map +0 -1
- package/__tests__/TabsHeader.test.d.ts +0 -2
- package/__tests__/TabsHeader.test.d.ts.map +0 -1
- package/__tests__/TabsSection.test.d.ts +0 -2
- package/__tests__/TabsSection.test.d.ts.map +0 -1
- package/__tests__/TitleWithTooltip.test.d.ts +0 -2
- package/__tests__/TitleWithTooltip.test.d.ts.map +0 -1
- package/__tests__/VideoPlayer.test.d.ts +0 -2
- package/__tests__/VideoPlayer.test.d.ts.map +0 -1
- package/__tests__/util.test.d.ts +0 -2
- package/__tests__/util.test.d.ts.map +0 -1
- package/index.js +0 -56
- package/index.js.map +0 -1
- package/src/index.d.ts +0 -5
- package/src/index.d.ts.map +0 -1
- package/src/js/EmbedCodeModal.d.ts +0 -17
- package/src/js/EmbedCodeModal.d.ts.map +0 -1
- package/src/js/components/ActivateInteractivityModal.d.ts +0 -3
- package/src/js/components/ActivateInteractivityModal.d.ts.map +0 -1
- package/src/js/components/CustomSettingsDropdown.d.ts +0 -11
- package/src/js/components/CustomSettingsDropdown.d.ts.map +0 -1
- package/src/js/components/EmbedCopySection.d.ts +0 -4
- package/src/js/components/EmbedCopySection.d.ts.map +0 -1
- package/src/js/components/ModalContainer.d.ts +0 -17
- package/src/js/components/ModalContainer.d.ts.map +0 -1
- package/src/js/components/NoPlayerModal.d.ts +0 -8
- package/src/js/components/NoPlayerModal.d.ts.map +0 -1
- package/src/js/components/PlayerPreview.d.ts +0 -4
- package/src/js/components/PlayerPreview.d.ts.map +0 -1
- package/src/js/components/PlayersDropdown.d.ts +0 -9
- package/src/js/components/PlayersDropdown.d.ts.map +0 -1
- package/src/js/components/TabsHeader.d.ts +0 -11
- package/src/js/components/TabsHeader.d.ts.map +0 -1
- package/src/js/components/TabsSection.d.ts +0 -15
- package/src/js/components/TabsSection.d.ts.map +0 -1
- package/src/js/components/TitleWithTooltip.d.ts +0 -8
- package/src/js/components/TitleWithTooltip.d.ts.map +0 -1
- package/src/js/components/VideoLinks.d.ts +0 -9
- package/src/js/components/VideoLinks.d.ts.map +0 -1
- package/src/js/components/VideoPlayer.d.ts +0 -17
- package/src/js/components/VideoPlayer.d.ts.map +0 -1
- package/src/js/components/index.d.ts.map +0 -1
- package/src/js/constants/baseUrls.d.ts +0 -5
- package/src/js/constants/baseUrls.d.ts.map +0 -1
- package/src/js/constants/embed.d.ts +0 -9
- package/src/js/constants/embed.d.ts.map +0 -1
- package/src/js/constants/player.d.ts +0 -27
- package/src/js/constants/player.d.ts.map +0 -1
- package/src/js/constants/pluginsRegistry.d.ts +0 -7
- package/src/js/constants/pluginsRegistry.d.ts.map +0 -1
- package/src/js/hooks/useGetPlayers.d.ts +0 -3
- package/src/js/hooks/useGetPlayers.d.ts.map +0 -1
- package/src/js/i18n.d.ts +0 -330
- package/src/js/i18n.d.ts.map +0 -1
- package/src/js/services/players-api.d.ts +0 -5
- package/src/js/services/players-api.d.ts.map +0 -1
- package/src/js/services/url-shortener.d.ts +0 -4
- package/src/js/services/url-shortener.d.ts.map +0 -1
- package/src/js/types/EmbedCodeModalProps.d.ts +0 -59
- package/src/js/types/EmbedCodeModalProps.d.ts.map +0 -1
- package/src/js/types/EmbedCodeProps.d.ts +0 -13
- package/src/js/types/EmbedCodeProps.d.ts.map +0 -1
- package/src/js/types/players.d.ts +0 -58
- package/src/js/types/players.d.ts.map +0 -1
- package/src/js/types/studioModule.d.ts +0 -8
- package/src/js/types/studioModule.d.ts.map +0 -1
- package/src/js/utils/addPluginsDataToPlayers.d.ts +0 -6
- package/src/js/utils/addPluginsDataToPlayers.d.ts.map +0 -1
- package/src/js/utils/call.d.ts +0 -14
- package/src/js/utils/call.d.ts.map +0 -1
- package/src/js/utils/dimensions.d.ts +0 -9
- package/src/js/utils/dimensions.d.ts.map +0 -1
- package/src/js/utils/featureSwitches.d.ts +0 -2
- package/src/js/utils/featureSwitches.d.ts.map +0 -1
- package/src/js/utils/util.d.ts +0 -67
- package/src/js/utils/util.d.ts.map +0 -1
- package/src/module.d.ts +0 -2
- package/src/module.d.ts.map +0 -1
- package/src/styles/typings.td.d.ts +0 -13
- package/src/styles/typings.td.d.ts.map +0 -1
- package/src/types/studio.d.ts +0 -202
- package/src/types/studio.d.ts.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modalHeader": "웹사이트에 임베드",
|
|
3
|
+
"mediaNotice": "계정의 기본 플레이어를 사용합니다",
|
|
4
|
+
"tooltipText": "현재 Brightcove 기본 플레이어 사용 중입니다. 플레이어 관리가 곧 출시됩니다.",
|
|
5
|
+
"tooltipTextNew": "플레이어는 스타일 지정, 특수 구성 설정 등 비디오 재생 경험을 결정합니다.",
|
|
6
|
+
"tooltipLink": "플레이어에 대해 자세히 알아보기",
|
|
7
|
+
"learnmore": "https://ko.studio.support.brightcove.com/players/getting-started-players-module.html",
|
|
8
|
+
"previewButton": "미리 보기",
|
|
9
|
+
"player": "플레이어",
|
|
10
|
+
"getURL": "URL 받기",
|
|
11
|
+
"tabs": {
|
|
12
|
+
"labels": {
|
|
13
|
+
"iframe": "iframe",
|
|
14
|
+
"javascript": "JavaScript"
|
|
15
|
+
},
|
|
16
|
+
"helperText": "HTML 코드를 복사하여 웹사이트에 붙여넣으십시오.",
|
|
17
|
+
"helperTextWarning": "이 플레이어는 캠페인 플러그인과 함께 구성됩니다. 바르게 추적되게 하려면, JavaScript 내장 코드를 사용해야 합니다.",
|
|
18
|
+
"viewerIdTextWarning": "이 플레이어는 시청자 ID 트래킹과 함께 구성됩니다. 바르게 추적되게 하려면, JavaScript 내장 코드를 사용해야 합니다.",
|
|
19
|
+
"bcMapTrackingTextWarning": "This player is configured with MAPs Tracking. To ensure proper tracking, the JavaScript embed code should be used."
|
|
20
|
+
},
|
|
21
|
+
"toasterTitle": "성공.",
|
|
22
|
+
"toasterMessage": "클립보드에 코드가 복사됨",
|
|
23
|
+
"toasterGetURLSuccess": "URL이 클립보드에 복사됨",
|
|
24
|
+
"toasterGetURLError": "URL 생성 불가",
|
|
25
|
+
"toasterErrorMessage": "클립보드에 텍스트를 복사하는 중 오류 발생",
|
|
26
|
+
"customPluginNotice": "사용자 정의 구성으로 인해 전체 미리 보기를 이용하지 못할 수도 있습니다.",
|
|
27
|
+
"done": "완료",
|
|
28
|
+
"close": "닫기",
|
|
29
|
+
"noPlayerModalHeader": "상호작용성 플레이어 생성",
|
|
30
|
+
"noPlayerModalContent1": "상호작용성 프로젝트를 임베딩하려면 상호작용성 기능을 활성화해야 합니다.",
|
|
31
|
+
"noPlayerModalContent2": "기존 플레이어에서 이 기능을 활성화하거나 새 플레이어를 생성하십시오.",
|
|
32
|
+
"toPlayersModuleLink": "플레이어 모듈로 이동",
|
|
33
|
+
"cancel": "취소",
|
|
34
|
+
"createPlayerNow": "지금 플레이어 생성",
|
|
35
|
+
"createPlayerFailedTitle": "상호작용성 지원 플레이어를 생성하지 못했습니다.",
|
|
36
|
+
"createPlayerFailedMessage": "다시 시도해 주십시오.",
|
|
37
|
+
"activateModal": "상호작용성 지원 플레이어가 없음",
|
|
38
|
+
"activateModalContent1": "프로젝트를 임베딩하려면 상호작용성 지원 플레이어가 필요합니다. 현재 이 계정에는 상호작용성 지원 플레이어가 없습니다. 다음을 사용해 새 플레이어 생성 ",
|
|
39
|
+
"activateModalContent2": "플레이어 모듈",
|
|
40
|
+
"customSettings": {
|
|
41
|
+
"sizing": "크기 조정",
|
|
42
|
+
"aspectRatio": "가로 세로 비율",
|
|
43
|
+
"playerWidth": "플레이어 너비",
|
|
44
|
+
"playerHeight": "플레이어 높이",
|
|
45
|
+
"units": "단위"
|
|
46
|
+
},
|
|
47
|
+
"lowLatency": "저지연성",
|
|
48
|
+
"dvr": {
|
|
49
|
+
"allowDVR": "DVR 허용",
|
|
50
|
+
"inputLabel": "Time",
|
|
51
|
+
"inputDescription": "The time, in seconds, to keep in the live DVR manifest"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modalHeader": "內嵌到網站",
|
|
3
|
+
"mediaNotice": "會使用您帳戶的預設播放程式",
|
|
4
|
+
"tooltipText": "目前使用 Brightcove 預設播放程式。播放程式管理功能即將推出。",
|
|
5
|
+
"tooltipTextNew": "播放器決定視訊播放體驗,例如樣式風格、特別組態設定等。",
|
|
6
|
+
"tooltipLink": "瞭解關於播放程式的更多資訊",
|
|
7
|
+
"learnmore": "https://zh-tw.studio.support.brightcove.com/players/getting-started-players-module.html",
|
|
8
|
+
"previewButton": "預覽",
|
|
9
|
+
"player": "播放程式",
|
|
10
|
+
"getURL": "取得 URL",
|
|
11
|
+
"tabs": {
|
|
12
|
+
"labels": {
|
|
13
|
+
"iframe": "iframe",
|
|
14
|
+
"javascript": "JavaScript"
|
|
15
|
+
},
|
|
16
|
+
"helperText": "複製 HTML 程式碼並貼到您的網站上。",
|
|
17
|
+
"helperTextWarning": "此播放程式設定有活動外掛程式。為了確保正確追蹤,應使用 JavaScript 內嵌程式碼。",
|
|
18
|
+
"viewerIdTextWarning": "此播放程式設定有觀眾 ID 追蹤。為了確保正確追蹤,應使用 JavaScript 內嵌程式碼。",
|
|
19
|
+
"bcMapTrackingTextWarning": "This player is configured with MAPs Tracking. To ensure proper tracking, the JavaScript embed code should be used."
|
|
20
|
+
},
|
|
21
|
+
"toasterTitle": "成功.",
|
|
22
|
+
"toasterMessage": "程式碼已複製到剪貼簿",
|
|
23
|
+
"toasterGetURLSuccess": "URL 已複製到剪貼簿",
|
|
24
|
+
"toasterGetURLError": "無法產生 URL",
|
|
25
|
+
"toasterErrorMessage": "複製文字到剪貼簿時發生錯誤",
|
|
26
|
+
"customPluginNotice": "由於自訂組態,您可能無法體驗完整預覽版。",
|
|
27
|
+
"done": "完成",
|
|
28
|
+
"close": "關閉",
|
|
29
|
+
"noPlayerModalHeader": "建立互動播放程式",
|
|
30
|
+
"noPlayerModalContent1": "若要嵌入互動專案,您必須啟用互動功能。",
|
|
31
|
+
"noPlayerModalContent2": "在任何現有播放程式上啟動此功能或建立新項目。",
|
|
32
|
+
"toPlayersModuleLink": "前往播放程式模組",
|
|
33
|
+
"cancel": "取消",
|
|
34
|
+
"createPlayerNow": "立即建立播放程式",
|
|
35
|
+
"createPlayerFailedTitle": "無法建立已啟用互動功能的播放程式。",
|
|
36
|
+
"createPlayerFailedMessage": "請再試一次。",
|
|
37
|
+
"activateModal": "沒有已啟用互動功能的播放程式",
|
|
38
|
+
"activateModalContent1": "需要有已啟用互動功能的播放程式才能嵌入專案。目前,此帳戶沒有已啟用互動功能的播放程式。若要建立一個,請使用 ",
|
|
39
|
+
"activateModalContent2": "播放程式模組",
|
|
40
|
+
"customSettings": {
|
|
41
|
+
"sizing": "調整大小",
|
|
42
|
+
"aspectRatio": "长宽比",
|
|
43
|
+
"playerWidth": "播放程序宽度",
|
|
44
|
+
"playerHeight": "播放程序高度",
|
|
45
|
+
"units": "單位"
|
|
46
|
+
},
|
|
47
|
+
"lowLatency": "低延遲",
|
|
48
|
+
"dvr": {
|
|
49
|
+
"allowDVR": "允許 DVR",
|
|
50
|
+
"inputLabel": "Time",
|
|
51
|
+
"inputDescription": "The time, in seconds, to keep in the live DVR manifest"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
interface SetiSetting {
|
|
2
|
+
creator: string;
|
|
3
|
+
name: string;
|
|
4
|
+
values: string | boolean;
|
|
5
|
+
value_type: string;
|
|
6
|
+
read_only: boolean;
|
|
7
|
+
path: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface Module {
|
|
11
|
+
api: Record<string, { origin: string; proxyPath?: string; version: string }>;
|
|
12
|
+
bcApiConfig: Record<string, string>;
|
|
13
|
+
beta: boolean;
|
|
14
|
+
icon: string;
|
|
15
|
+
id: string;
|
|
16
|
+
key: string;
|
|
17
|
+
logoutURL: string;
|
|
18
|
+
profileEditUrl: string;
|
|
19
|
+
roleRequired: string;
|
|
20
|
+
root: string;
|
|
21
|
+
title: string;
|
|
22
|
+
sdk_root: string;
|
|
23
|
+
scope: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface ProfileVisibility {
|
|
27
|
+
[key: string]: 'show' | 'hide';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface UserAccount {
|
|
31
|
+
edition: string;
|
|
32
|
+
id: string;
|
|
33
|
+
is_admin: boolean;
|
|
34
|
+
is_express: boolean;
|
|
35
|
+
mediaSharingEnabled: boolean;
|
|
36
|
+
name: string;
|
|
37
|
+
primary_admin_id: string | number;
|
|
38
|
+
restricted: boolean;
|
|
39
|
+
roles: Array<string>;
|
|
40
|
+
settings: {
|
|
41
|
+
module_core_versions: { [key: string]: SetiSetting };
|
|
42
|
+
module_versions: { [key: string]: SetiSetting };
|
|
43
|
+
account: { [key: string]: SetiSetting };
|
|
44
|
+
ingestion: {
|
|
45
|
+
profile_visibility: {
|
|
46
|
+
profile: {
|
|
47
|
+
visibility: ProfileVisibility;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
featureSwitches: { [key: string]: boolean };
|
|
52
|
+
};
|
|
53
|
+
status: string;
|
|
54
|
+
trial_account: boolean;
|
|
55
|
+
use_quova: boolean;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interface Product {
|
|
59
|
+
color: string;
|
|
60
|
+
defaultModule: string;
|
|
61
|
+
env: string;
|
|
62
|
+
features: Record<string, unknown>;
|
|
63
|
+
key: string;
|
|
64
|
+
layout: string;
|
|
65
|
+
modules: Record<string, string | boolean>[];
|
|
66
|
+
path: string;
|
|
67
|
+
supportName: string;
|
|
68
|
+
systemStatus: string;
|
|
69
|
+
title: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
interface User {
|
|
73
|
+
accounts: Array<UserAccount>;
|
|
74
|
+
currentAccount: UserAccount;
|
|
75
|
+
email_address: string;
|
|
76
|
+
featureSwitches: { [key: string]: boolean };
|
|
77
|
+
feature_provisioning: { [key: string]: SetiSetting };
|
|
78
|
+
first_name: string;
|
|
79
|
+
id: string;
|
|
80
|
+
last_name: string;
|
|
81
|
+
locale: string;
|
|
82
|
+
timezone: string;
|
|
83
|
+
locked: boolean;
|
|
84
|
+
lockedByAdmin: boolean;
|
|
85
|
+
module_versions: { [key: string]: SetiSetting };
|
|
86
|
+
module_core_versions: { [key: string]: SetiSetting };
|
|
87
|
+
settings: { [key: string]: SetiSetting };
|
|
88
|
+
map: { features: { [key: string]: SetiSetting }; status: SetiSetting };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
interface ErrorResponder extends Error {
|
|
92
|
+
responseCode: number;
|
|
93
|
+
responseText: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
interface BCApi {
|
|
97
|
+
CORSSupport: boolean;
|
|
98
|
+
PATH: { [key: string]: string };
|
|
99
|
+
accessToken: Record<string, unknown>;
|
|
100
|
+
accessTokenExpiry: never;
|
|
101
|
+
accessTokenLastResponseTimestamp: never;
|
|
102
|
+
accessTokenState: number;
|
|
103
|
+
accessTokenStateFailureCount: number;
|
|
104
|
+
accountId: string;
|
|
105
|
+
call: <Type>(
|
|
106
|
+
requestParams: Record<string, unknown>,
|
|
107
|
+
responder: (response: Type) => void,
|
|
108
|
+
errorResponder: (err: ErrorResponder) => void,
|
|
109
|
+
) => unknown;
|
|
110
|
+
authenticate: (
|
|
111
|
+
callback: (error: Record<string, unknown>, token: string) => void,
|
|
112
|
+
) => void;
|
|
113
|
+
getToken: () => string;
|
|
114
|
+
login: () => void;
|
|
115
|
+
createRequest: (requestParams: {
|
|
116
|
+
path: string;
|
|
117
|
+
data: unknown;
|
|
118
|
+
header: Record<string, unknown>;
|
|
119
|
+
}) => XMLHttpRequest;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface StudioModule {
|
|
123
|
+
bcApi: BCApi;
|
|
124
|
+
config: {
|
|
125
|
+
features: Record<string, unknown>;
|
|
126
|
+
lang: string;
|
|
127
|
+
messages: Record<string, string>;
|
|
128
|
+
user: User;
|
|
129
|
+
product: Product;
|
|
130
|
+
module: Module;
|
|
131
|
+
};
|
|
132
|
+
api: () => BCApi;
|
|
133
|
+
getAPIConfig: () => Record<string, Record<string, string>>;
|
|
134
|
+
getCurrentUserAccount: () => UserAccount;
|
|
135
|
+
getFeature: (id: string) => unknown;
|
|
136
|
+
getLanguage: () => string;
|
|
137
|
+
getModule: () => Module;
|
|
138
|
+
getModuleRoot: () => string;
|
|
139
|
+
getModuleUrl: () => string;
|
|
140
|
+
getProduct: () => Product;
|
|
141
|
+
getUser: () => User;
|
|
142
|
+
handleAccountSwitch: (callback: () => void) => void;
|
|
143
|
+
init: (config: unknown) => void;
|
|
144
|
+
injectStyles: (styles: unknown) => void;
|
|
145
|
+
parseMessages: (txt: string) => unknown;
|
|
146
|
+
parseTemplates: (txt: string, delim: string) => unknown;
|
|
147
|
+
setPageTitle: (title: string) => string;
|
|
148
|
+
showAccessDenied: () => void;
|
|
149
|
+
on: (
|
|
150
|
+
event: string,
|
|
151
|
+
callback: EventListener,
|
|
152
|
+
context?: unknown,
|
|
153
|
+
mode?: unknown,
|
|
154
|
+
) => void;
|
|
155
|
+
once: (event: string, callback: EventListener, context?: unknown) => void;
|
|
156
|
+
off: (event: string, callback: EventListener) => void;
|
|
157
|
+
_initBCApi: (
|
|
158
|
+
accountId: string,
|
|
159
|
+
moduleId: string,
|
|
160
|
+
scope: string,
|
|
161
|
+
config: Record<string, unknown>,
|
|
162
|
+
) => unknown;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
interface ToastArgs {
|
|
166
|
+
details?: string | object;
|
|
167
|
+
hideAfter?: number;
|
|
168
|
+
title?: string;
|
|
169
|
+
message: string | JSX.Element;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
interface Toaster {
|
|
173
|
+
alert: (args: ToastArgs) => number;
|
|
174
|
+
error: (args: ToastArgs) => number;
|
|
175
|
+
success: (args: ToastArgs) => number;
|
|
176
|
+
warn: (args: ToastArgs) => number;
|
|
177
|
+
notice: (args: ToastArgs) => number;
|
|
178
|
+
info: (args: ToastArgs) => number;
|
|
179
|
+
dismiss: (id: number) => void;
|
|
180
|
+
mounted: boolean;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export interface StudioBrightcove {
|
|
184
|
+
ConfirmationDialog: {
|
|
185
|
+
open: (props: Record<string, unknown>) => void;
|
|
186
|
+
};
|
|
187
|
+
InContextHelp: {
|
|
188
|
+
close: () => void;
|
|
189
|
+
open: () => void;
|
|
190
|
+
toggle: () => void;
|
|
191
|
+
};
|
|
192
|
+
StudioServer: {
|
|
193
|
+
openProductPackagesModal: () => void;
|
|
194
|
+
};
|
|
195
|
+
Toaster: Toaster;
|
|
196
|
+
studio: StudioModule;
|
|
197
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"baseUrl": "./src",
|
|
4
|
+
"target": "esnext",
|
|
5
|
+
"module": "esnext",
|
|
6
|
+
"lib": ["esnext", "dom"],
|
|
7
|
+
"jsx": "react",
|
|
8
|
+
"declaration": true,
|
|
9
|
+
"declarationMap": true,
|
|
10
|
+
"emitDeclarationOnly": true,
|
|
11
|
+
"outDir": "./build",
|
|
12
|
+
/* Strict Type-Checking Options */
|
|
13
|
+
"strict": true,
|
|
14
|
+
"noImplicitAny": false,
|
|
15
|
+
"strictNullChecks": true,
|
|
16
|
+
"noUnusedLocals": true,
|
|
17
|
+
/* Module Resolution Options */
|
|
18
|
+
"moduleResolution": "node",
|
|
19
|
+
"allowSyntheticDefaultImports": true,
|
|
20
|
+
"forceConsistentCasingInFileNames": true,
|
|
21
|
+
"resolveJsonModule": true,
|
|
22
|
+
"esModuleInterop": true,
|
|
23
|
+
"skipLibCheck": true,
|
|
24
|
+
"paths": {
|
|
25
|
+
"js/*": ["./js/*"],
|
|
26
|
+
"styles/*": ["./styles/*"],
|
|
27
|
+
"translations/*": ["./translations/*"],
|
|
28
|
+
"components/*": ["./js/components/*"]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"include": ["./src/**/*", "./__tests__/**/*"],
|
|
32
|
+
"exclude": ["node_modules"],
|
|
33
|
+
"types": ["jest", "node"]
|
|
34
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const TerserPlugin = require('terser-webpack-plugin');
|
|
4
|
+
|
|
5
|
+
module.exports = () => {
|
|
6
|
+
const isDevelopment = (process.env.NODE_ENV === 'development');
|
|
7
|
+
const isDemo = (process.env.DEMO === '1');
|
|
8
|
+
const entryFile = isDevelopment ? './src/module.tsx' : './src/index.ts';
|
|
9
|
+
|
|
10
|
+
const externalsObj = {
|
|
11
|
+
'react': 'react',
|
|
12
|
+
'react-dom': 'react-dom',
|
|
13
|
+
'react-dnd': 'react-dnd',
|
|
14
|
+
'react-dnd-html5-backend': 'react-dnd-html5-backend',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
entry: {
|
|
19
|
+
app: entryFile,
|
|
20
|
+
},
|
|
21
|
+
output: isDevelopment ? {
|
|
22
|
+
path: path.resolve(__dirname, '..', 'build'),
|
|
23
|
+
filename: 'js/[name].js',
|
|
24
|
+
publicPath: 'https://localhost.brightcove.com:12345/',
|
|
25
|
+
} : {
|
|
26
|
+
path: path.resolve(__dirname, 'build'),
|
|
27
|
+
filename: 'index.js',
|
|
28
|
+
libraryTarget: 'umd'
|
|
29
|
+
},
|
|
30
|
+
mode: process.env.NODE_ENV,
|
|
31
|
+
module: {
|
|
32
|
+
rules: [
|
|
33
|
+
{
|
|
34
|
+
test: /\.(css|scss|sass)$/,
|
|
35
|
+
use: ['style-loader',
|
|
36
|
+
{
|
|
37
|
+
loader: 'css-loader',
|
|
38
|
+
options: {
|
|
39
|
+
modules: {
|
|
40
|
+
localIdentName: '[name]__[local]--[hash:base64:5]'
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
loader: 'sass-loader',
|
|
46
|
+
}],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
test: /\.(js|ts)x?$/,
|
|
50
|
+
exclude: /node_modules/,
|
|
51
|
+
use: {
|
|
52
|
+
loader: 'babel-loader',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
resolve: {
|
|
58
|
+
extensions: ['.ts', '.tsx', '.js', '.jsx','.css', '.sass', 'scss'],
|
|
59
|
+
alias: {
|
|
60
|
+
js: path.resolve(path.resolve(__dirname), 'src/js'),
|
|
61
|
+
styles: path.resolve(path.resolve(__dirname), 'src/styles'),
|
|
62
|
+
translations: path.resolve(path.resolve(__dirname), 'src/translations'),
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
externals: isDemo ? {} : externalsObj,
|
|
66
|
+
devtool: isDevelopment ? 'eval-source-map' : 'hidden-source-map',
|
|
67
|
+
devServer: {
|
|
68
|
+
static: {
|
|
69
|
+
directory: './dist',
|
|
70
|
+
},
|
|
71
|
+
client: {
|
|
72
|
+
overlay: {
|
|
73
|
+
errors: true,
|
|
74
|
+
warnings: false,
|
|
75
|
+
runtimeErrors: true,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
allowedHosts: 'all',
|
|
79
|
+
hot: 'only',
|
|
80
|
+
host: 'localhost.brightcove.com',
|
|
81
|
+
https: {
|
|
82
|
+
key: fs.readFileSync('./etc/wildcard.brightcove.com.key'),
|
|
83
|
+
cert: fs.readFileSync('./etc/wildcard.brightcove.com.pem'),
|
|
84
|
+
},
|
|
85
|
+
headers: {
|
|
86
|
+
'Access-Control-Allow-Origin': '*',
|
|
87
|
+
},
|
|
88
|
+
port: 12345,
|
|
89
|
+
historyApiFallback: true,
|
|
90
|
+
},
|
|
91
|
+
optimization: {
|
|
92
|
+
minimizer: [new TerserPlugin({
|
|
93
|
+
extractComments: false,
|
|
94
|
+
})],
|
|
95
|
+
},
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbedCode.test.d.ts","sourceRoot":"","sources":["../../__tests__/EmbedCode.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InteractivityProject.test.d.ts","sourceRoot":"","sources":["../../__tests__/InteractivityProject.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerPreview.test.d.ts","sourceRoot":"","sources":["../../__tests__/PlayerPreview.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PlayersDropdown.test.d.ts","sourceRoot":"","sources":["../../__tests__/PlayersDropdown.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabsHeader.test.d.ts","sourceRoot":"","sources":["../../__tests__/TabsHeader.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TabsSection.test.d.ts","sourceRoot":"","sources":["../../__tests__/TabsSection.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TitleWithTooltip.test.d.ts","sourceRoot":"","sources":["../../__tests__/TitleWithTooltip.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPlayer.test.d.ts","sourceRoot":"","sources":["../../__tests__/VideoPlayer.test.tsx"],"names":[],"mappings":""}
|
package/__tests__/util.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../__tests__/util.test.ts"],"names":[],"mappings":""}
|