@brightcove/components-embed-code-modal 0.8.2 → 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.
Files changed (162) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc +23 -0
  3. package/.husky/pre-commit +4 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +7 -0
  6. package/.prettierrc +5 -0
  7. package/.release-it.json +40 -0
  8. package/.whitesource +3 -0
  9. package/CHANGELOG.md +342 -0
  10. package/CODEOWNERS +37 -0
  11. package/PULL_REQUEST_TEMPLATE.md +17 -0
  12. package/__tests__/EmbedCode.test.tsx +51 -0
  13. package/__tests__/InteractivityProject.test.tsx +50 -0
  14. package/__tests__/PlayerPreview.test.tsx +23 -0
  15. package/__tests__/TabsHeader.test.tsx +19 -0
  16. package/__tests__/TabsSection.test.tsx +46 -0
  17. package/__tests__/TitleWithTooltip.test.tsx +45 -0
  18. package/__tests__/VideoPlayer.test.tsx +38 -0
  19. package/__tests__/util.test.ts +89 -0
  20. package/babel.config.json +17 -0
  21. package/etc/wildcard.brightcove.com.key +27 -0
  22. package/etc/wildcard.brightcove.com.pem +96 -0
  23. package/jest/jest.setup.js +62 -0
  24. package/jest/jest.stub.js +4 -0
  25. package/jest.config.js +24 -0
  26. package/package.json +15 -5
  27. package/scripts/create-dist-pkg-prod.js +18 -0
  28. package/src/index.ts +16 -0
  29. package/src/js/EmbedCodeModal.tsx +88 -0
  30. package/src/js/components/CustomSettingsDropdown.tsx +184 -0
  31. package/src/js/components/EmbedCopySection.tsx +130 -0
  32. package/src/js/components/ModalContainer.tsx +274 -0
  33. package/src/js/components/NoPlayerModal.tsx +42 -0
  34. package/src/js/components/PlayerPreview.tsx +116 -0
  35. package/src/js/components/TabsHeader.tsx +31 -0
  36. package/src/js/components/TabsSection.tsx +74 -0
  37. package/src/js/components/TitleWithTooltip.tsx +39 -0
  38. package/src/js/components/VideoLinks.tsx +83 -0
  39. package/src/js/components/VideoPlayer.tsx +303 -0
  40. package/src/js/components/{index.d.ts → index.ts} +0 -1
  41. package/src/js/constants/baseUrls.ts +4 -0
  42. package/src/js/constants/embed.ts +12 -0
  43. package/src/js/constants/player.ts +32 -0
  44. package/src/js/constants/pluginsRegistry.ts +30 -0
  45. package/src/js/hooks/useGetPlayers.ts +12 -0
  46. package/src/js/i18n.ts +43 -0
  47. package/src/js/services/players-api.ts +26 -0
  48. package/src/js/services/url-shortener.ts +10 -0
  49. package/src/js/types/EmbedCodeModalProps.ts +72 -0
  50. package/src/js/types/EmbedCodeProps.ts +13 -0
  51. package/src/js/types/brightcoveEmbedCode.d.ts +18 -0
  52. package/src/js/types/players.ts +64 -0
  53. package/src/js/types/react-i18next.d.ts +8 -0
  54. package/src/js/types/studioModule.ts +7 -0
  55. package/src/js/utils/addPluginsDataToPlayers.ts +59 -0
  56. package/src/js/utils/call.ts +31 -0
  57. package/src/js/utils/dimensions.ts +53 -0
  58. package/src/js/utils/featureSwitches.ts +16 -0
  59. package/src/js/utils/util.ts +153 -0
  60. package/src/module.tsx +246 -0
  61. package/src/styles/CustomSettingsDropdown.sass +42 -0
  62. package/src/styles/EmbedCode.sass +30 -0
  63. package/src/styles/EmbedCodeModal.sass +76 -0
  64. package/src/styles/base.sass +1 -0
  65. package/src/styles/theme.sass +11 -0
  66. package/src/styles/typings.td.ts +9 -0
  67. package/src/translations/en.json +53 -0
  68. package/src/translations/es.json +53 -0
  69. package/src/translations/fr.json +53 -0
  70. package/src/translations/ja.json +53 -0
  71. package/src/translations/ko.json +53 -0
  72. package/src/translations/zh.json +53 -0
  73. package/src/types/studio.ts +197 -0
  74. package/tsconfig.json +34 -0
  75. package/webpack.config.js +97 -0
  76. package/__tests__/EmbedCode.test.d.ts +0 -2
  77. package/__tests__/EmbedCode.test.d.ts.map +0 -1
  78. package/__tests__/InteractivityProject.test.d.ts +0 -2
  79. package/__tests__/InteractivityProject.test.d.ts.map +0 -1
  80. package/__tests__/PlayerPreview.test.d.ts +0 -2
  81. package/__tests__/PlayerPreview.test.d.ts.map +0 -1
  82. package/__tests__/PlayersDropdown.test.d.ts +0 -2
  83. package/__tests__/PlayersDropdown.test.d.ts.map +0 -1
  84. package/__tests__/TabsHeader.test.d.ts +0 -2
  85. package/__tests__/TabsHeader.test.d.ts.map +0 -1
  86. package/__tests__/TabsSection.test.d.ts +0 -2
  87. package/__tests__/TabsSection.test.d.ts.map +0 -1
  88. package/__tests__/TitleWithTooltip.test.d.ts +0 -2
  89. package/__tests__/TitleWithTooltip.test.d.ts.map +0 -1
  90. package/__tests__/VideoPlayer.test.d.ts +0 -2
  91. package/__tests__/VideoPlayer.test.d.ts.map +0 -1
  92. package/__tests__/util.test.d.ts +0 -2
  93. package/__tests__/util.test.d.ts.map +0 -1
  94. package/index.js +0 -56
  95. package/index.js.map +0 -1
  96. package/src/index.d.ts +0 -5
  97. package/src/index.d.ts.map +0 -1
  98. package/src/js/EmbedCodeModal.d.ts +0 -17
  99. package/src/js/EmbedCodeModal.d.ts.map +0 -1
  100. package/src/js/components/CustomSettingsDropdown.d.ts +0 -11
  101. package/src/js/components/CustomSettingsDropdown.d.ts.map +0 -1
  102. package/src/js/components/EmbedCopySection.d.ts +0 -4
  103. package/src/js/components/EmbedCopySection.d.ts.map +0 -1
  104. package/src/js/components/ModalContainer.d.ts +0 -17
  105. package/src/js/components/ModalContainer.d.ts.map +0 -1
  106. package/src/js/components/NoPlayerModal.d.ts +0 -8
  107. package/src/js/components/NoPlayerModal.d.ts.map +0 -1
  108. package/src/js/components/PlayerPreview.d.ts +0 -4
  109. package/src/js/components/PlayerPreview.d.ts.map +0 -1
  110. package/src/js/components/PlayersDropdown.d.ts +0 -9
  111. package/src/js/components/PlayersDropdown.d.ts.map +0 -1
  112. package/src/js/components/TabsHeader.d.ts +0 -11
  113. package/src/js/components/TabsHeader.d.ts.map +0 -1
  114. package/src/js/components/TabsSection.d.ts +0 -15
  115. package/src/js/components/TabsSection.d.ts.map +0 -1
  116. package/src/js/components/TitleWithTooltip.d.ts +0 -8
  117. package/src/js/components/TitleWithTooltip.d.ts.map +0 -1
  118. package/src/js/components/VideoLinks.d.ts +0 -9
  119. package/src/js/components/VideoLinks.d.ts.map +0 -1
  120. package/src/js/components/VideoPlayer.d.ts +0 -17
  121. package/src/js/components/VideoPlayer.d.ts.map +0 -1
  122. package/src/js/components/index.d.ts.map +0 -1
  123. package/src/js/constants/baseUrls.d.ts +0 -5
  124. package/src/js/constants/baseUrls.d.ts.map +0 -1
  125. package/src/js/constants/embed.d.ts +0 -9
  126. package/src/js/constants/embed.d.ts.map +0 -1
  127. package/src/js/constants/player.d.ts +0 -27
  128. package/src/js/constants/player.d.ts.map +0 -1
  129. package/src/js/constants/pluginsRegistry.d.ts +0 -7
  130. package/src/js/constants/pluginsRegistry.d.ts.map +0 -1
  131. package/src/js/hooks/useGetPlayers.d.ts +0 -3
  132. package/src/js/hooks/useGetPlayers.d.ts.map +0 -1
  133. package/src/js/i18n.d.ts +0 -335
  134. package/src/js/i18n.d.ts.map +0 -1
  135. package/src/js/services/players-api.d.ts +0 -5
  136. package/src/js/services/players-api.d.ts.map +0 -1
  137. package/src/js/services/url-shortener.d.ts +0 -4
  138. package/src/js/services/url-shortener.d.ts.map +0 -1
  139. package/src/js/types/EmbedCodeModalProps.d.ts +0 -59
  140. package/src/js/types/EmbedCodeModalProps.d.ts.map +0 -1
  141. package/src/js/types/EmbedCodeProps.d.ts +0 -13
  142. package/src/js/types/EmbedCodeProps.d.ts.map +0 -1
  143. package/src/js/types/players.d.ts +0 -58
  144. package/src/js/types/players.d.ts.map +0 -1
  145. package/src/js/types/studioModule.d.ts +0 -8
  146. package/src/js/types/studioModule.d.ts.map +0 -1
  147. package/src/js/utils/addPluginsDataToPlayers.d.ts +0 -6
  148. package/src/js/utils/addPluginsDataToPlayers.d.ts.map +0 -1
  149. package/src/js/utils/call.d.ts +0 -14
  150. package/src/js/utils/call.d.ts.map +0 -1
  151. package/src/js/utils/dimensions.d.ts +0 -9
  152. package/src/js/utils/dimensions.d.ts.map +0 -1
  153. package/src/js/utils/featureSwitches.d.ts +0 -2
  154. package/src/js/utils/featureSwitches.d.ts.map +0 -1
  155. package/src/js/utils/util.d.ts +0 -67
  156. package/src/js/utils/util.d.ts.map +0 -1
  157. package/src/module.d.ts +0 -2
  158. package/src/module.d.ts.map +0 -1
  159. package/src/styles/typings.td.d.ts +0 -13
  160. package/src/styles/typings.td.d.ts.map +0 -1
  161. package/src/types/studio.d.ts +0 -202
  162. 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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=EmbedCode.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmbedCode.test.d.ts","sourceRoot":"","sources":["../../__tests__/EmbedCode.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=InteractivityProject.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractivityProject.test.d.ts","sourceRoot":"","sources":["../../__tests__/InteractivityProject.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=PlayerPreview.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlayerPreview.test.d.ts","sourceRoot":"","sources":["../../__tests__/PlayerPreview.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=PlayersDropdown.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlayersDropdown.test.d.ts","sourceRoot":"","sources":["../../__tests__/PlayersDropdown.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TabsHeader.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsHeader.test.d.ts","sourceRoot":"","sources":["../../__tests__/TabsHeader.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TabsSection.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabsSection.test.d.ts","sourceRoot":"","sources":["../../__tests__/TabsSection.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TitleWithTooltip.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TitleWithTooltip.test.d.ts","sourceRoot":"","sources":["../../__tests__/TitleWithTooltip.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=VideoPlayer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoPlayer.test.d.ts","sourceRoot":"","sources":["../../__tests__/VideoPlayer.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=util.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../__tests__/util.test.ts"],"names":[],"mappings":""}