@brightcove/components-embed-code-modal 1.0.7 → 1.1.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 (185) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc +23 -0
  3. package/.github/workflows/ci.yml +23 -0
  4. package/.husky/pre-commit +4 -0
  5. package/.nvmrc +1 -0
  6. package/.prettierignore +7 -0
  7. package/.prettierrc +5 -0
  8. package/.release-it.json +40 -0
  9. package/.whitesource +3 -0
  10. package/CHANGELOG.md +398 -0
  11. package/CODEOWNERS +37 -0
  12. package/PULL_REQUEST_TEMPLATE.md +17 -0
  13. package/__tests__/EmbedCode.test.tsx +51 -0
  14. package/__tests__/InteractivityProject.test.tsx +50 -0
  15. package/__tests__/PlayerPreview.test.tsx +23 -0
  16. package/__tests__/PrismPlayerPreview.test.tsx +168 -0
  17. package/__tests__/TabsHeader.test.tsx +19 -0
  18. package/__tests__/TabsSection.test.tsx +46 -0
  19. package/__tests__/TitleWithTooltip.test.tsx +45 -0
  20. package/__tests__/VideoPlayer.test.tsx +38 -0
  21. package/__tests__/embedCodeGenerator.test.ts +111 -0
  22. package/__tests__/util.test.ts +89 -0
  23. package/babel.config.json +17 -0
  24. package/build/README.md +109 -0
  25. package/build/__tests__/PrismPlayerPreview.test.d.ts +2 -0
  26. package/build/__tests__/PrismPlayerPreview.test.d.ts.map +1 -0
  27. package/{index.js → build/index.js} +1 -1
  28. package/build/index.js.map +1 -0
  29. package/build/package.json +100 -0
  30. package/{src → build/src}/js/components/prism/PrismPlayerPreview.d.ts.map +1 -1
  31. package/{src → build/src}/js/i18n.d.ts +30 -6
  32. package/{src → build/src}/js/i18n.d.ts.map +1 -1
  33. package/etc/wildcard.brightcove.com.key +27 -0
  34. package/etc/wildcard.brightcove.com.pem +96 -0
  35. package/jest/jest.setup.js +90 -0
  36. package/jest/jest.stub.js +4 -0
  37. package/jest.config.js +24 -0
  38. package/package.json +15 -5
  39. package/scripts/create-dist-pkg-prod.js +18 -0
  40. package/src/index.ts +17 -0
  41. package/src/js/EmbedCodeModal.tsx +105 -0
  42. package/src/js/components/CustomSettingsDropdown.tsx +184 -0
  43. package/src/js/components/EmbedCopySection.tsx +130 -0
  44. package/src/js/components/ModalContainer.tsx +367 -0
  45. package/src/js/components/NoPlayerModal.tsx +42 -0
  46. package/src/js/components/PlayerPreview.tsx +116 -0
  47. package/src/js/components/TabsHeader.tsx +31 -0
  48. package/src/js/components/TabsSection.tsx +74 -0
  49. package/src/js/components/TitleWithTooltip.tsx +39 -0
  50. package/src/js/components/VideoLinks.tsx +83 -0
  51. package/src/js/components/VideoPlayer.tsx +324 -0
  52. package/src/js/components/index.ts +9 -0
  53. package/src/js/components/prism/PrismLiveModal.tsx +162 -0
  54. package/src/js/components/prism/PrismPlayerControls.tsx +343 -0
  55. package/src/js/components/prism/PrismPlayerPreview.tsx +188 -0
  56. package/src/js/components/prism/index.ts +3 -0
  57. package/src/js/constants/baseUrls.ts +4 -0
  58. package/src/js/constants/embed.ts +12 -0
  59. package/src/js/constants/player.ts +32 -0
  60. package/src/js/constants/pluginsRegistry.ts +30 -0
  61. package/src/js/hooks/useGetPlayers.ts +12 -0
  62. package/src/js/i18n.ts +43 -0
  63. package/src/js/services/players-api.ts +26 -0
  64. package/src/js/services/url-shortener.ts +10 -0
  65. package/src/js/types/EmbedCodeModalProps.ts +72 -0
  66. package/src/js/types/EmbedCodeProps.ts +13 -0
  67. package/src/js/types/brightcoveEmbedCode.d.ts +18 -0
  68. package/src/js/types/players.ts +64 -0
  69. package/src/js/types/react-i18next.d.ts +8 -0
  70. package/src/js/types/studioModule.ts +7 -0
  71. package/src/js/utils/addPluginsDataToPlayers.ts +59 -0
  72. package/src/js/utils/call.ts +31 -0
  73. package/src/js/utils/dimensions.ts +53 -0
  74. package/src/js/utils/embedCodeGenerator.ts +120 -0
  75. package/src/js/utils/featureSwitches.ts +16 -0
  76. package/src/js/utils/util.ts +153 -0
  77. package/src/module.tsx +280 -0
  78. package/src/styles/CustomSettingsDropdown.sass +42 -0
  79. package/src/styles/EmbedCode.sass +30 -0
  80. package/src/styles/EmbedCodeModal.sass +76 -0
  81. package/src/styles/base.sass +1 -0
  82. package/src/styles/prism/PrismLiveModal.sass +155 -0
  83. package/src/styles/theme.sass +11 -0
  84. package/src/styles/typings.td.ts +9 -0
  85. package/src/translations/en.json +65 -0
  86. package/src/translations/es.json +65 -0
  87. package/src/translations/fr.json +65 -0
  88. package/src/translations/ja.json +65 -0
  89. package/src/translations/ko.json +65 -0
  90. package/src/translations/zh.json +65 -0
  91. package/src/types/studio.ts +197 -0
  92. package/tsconfig.json +34 -0
  93. package/webpack.config.js +117 -0
  94. package/index.js.map +0 -1
  95. /package/{__tests__ → build/__tests__}/EmbedCode.test.d.ts +0 -0
  96. /package/{__tests__ → build/__tests__}/EmbedCode.test.d.ts.map +0 -0
  97. /package/{__tests__ → build/__tests__}/InteractivityProject.test.d.ts +0 -0
  98. /package/{__tests__ → build/__tests__}/InteractivityProject.test.d.ts.map +0 -0
  99. /package/{__tests__ → build/__tests__}/PlayerPreview.test.d.ts +0 -0
  100. /package/{__tests__ → build/__tests__}/PlayerPreview.test.d.ts.map +0 -0
  101. /package/{__tests__ → build/__tests__}/TabsHeader.test.d.ts +0 -0
  102. /package/{__tests__ → build/__tests__}/TabsHeader.test.d.ts.map +0 -0
  103. /package/{__tests__ → build/__tests__}/TabsSection.test.d.ts +0 -0
  104. /package/{__tests__ → build/__tests__}/TabsSection.test.d.ts.map +0 -0
  105. /package/{__tests__ → build/__tests__}/TitleWithTooltip.test.d.ts +0 -0
  106. /package/{__tests__ → build/__tests__}/TitleWithTooltip.test.d.ts.map +0 -0
  107. /package/{__tests__ → build/__tests__}/VideoPlayer.test.d.ts +0 -0
  108. /package/{__tests__ → build/__tests__}/VideoPlayer.test.d.ts.map +0 -0
  109. /package/{__tests__ → build/__tests__}/embedCodeGenerator.test.d.ts +0 -0
  110. /package/{__tests__ → build/__tests__}/embedCodeGenerator.test.d.ts.map +0 -0
  111. /package/{__tests__ → build/__tests__}/util.test.d.ts +0 -0
  112. /package/{__tests__ → build/__tests__}/util.test.d.ts.map +0 -0
  113. /package/{src → build/src}/index.d.ts +0 -0
  114. /package/{src → build/src}/index.d.ts.map +0 -0
  115. /package/{src → build/src}/js/EmbedCodeModal.d.ts +0 -0
  116. /package/{src → build/src}/js/EmbedCodeModal.d.ts.map +0 -0
  117. /package/{src → build/src}/js/components/CustomSettingsDropdown.d.ts +0 -0
  118. /package/{src → build/src}/js/components/CustomSettingsDropdown.d.ts.map +0 -0
  119. /package/{src → build/src}/js/components/EmbedCopySection.d.ts +0 -0
  120. /package/{src → build/src}/js/components/EmbedCopySection.d.ts.map +0 -0
  121. /package/{src → build/src}/js/components/ModalContainer.d.ts +0 -0
  122. /package/{src → build/src}/js/components/ModalContainer.d.ts.map +0 -0
  123. /package/{src → build/src}/js/components/NoPlayerModal.d.ts +0 -0
  124. /package/{src → build/src}/js/components/NoPlayerModal.d.ts.map +0 -0
  125. /package/{src → build/src}/js/components/PlayerPreview.d.ts +0 -0
  126. /package/{src → build/src}/js/components/PlayerPreview.d.ts.map +0 -0
  127. /package/{src → build/src}/js/components/TabsHeader.d.ts +0 -0
  128. /package/{src → build/src}/js/components/TabsHeader.d.ts.map +0 -0
  129. /package/{src → build/src}/js/components/TabsSection.d.ts +0 -0
  130. /package/{src → build/src}/js/components/TabsSection.d.ts.map +0 -0
  131. /package/{src → build/src}/js/components/TitleWithTooltip.d.ts +0 -0
  132. /package/{src → build/src}/js/components/TitleWithTooltip.d.ts.map +0 -0
  133. /package/{src → build/src}/js/components/VideoLinks.d.ts +0 -0
  134. /package/{src → build/src}/js/components/VideoLinks.d.ts.map +0 -0
  135. /package/{src → build/src}/js/components/VideoPlayer.d.ts +0 -0
  136. /package/{src → build/src}/js/components/VideoPlayer.d.ts.map +0 -0
  137. /package/{src → build/src}/js/components/index.d.ts +0 -0
  138. /package/{src → build/src}/js/components/index.d.ts.map +0 -0
  139. /package/{src → build/src}/js/components/prism/PrismLiveModal.d.ts +0 -0
  140. /package/{src → build/src}/js/components/prism/PrismLiveModal.d.ts.map +0 -0
  141. /package/{src → build/src}/js/components/prism/PrismPlayerControls.d.ts +0 -0
  142. /package/{src → build/src}/js/components/prism/PrismPlayerControls.d.ts.map +0 -0
  143. /package/{src → build/src}/js/components/prism/PrismPlayerPreview.d.ts +0 -0
  144. /package/{src → build/src}/js/components/prism/index.d.ts +0 -0
  145. /package/{src → build/src}/js/components/prism/index.d.ts.map +0 -0
  146. /package/{src → build/src}/js/constants/baseUrls.d.ts +0 -0
  147. /package/{src → build/src}/js/constants/baseUrls.d.ts.map +0 -0
  148. /package/{src → build/src}/js/constants/embed.d.ts +0 -0
  149. /package/{src → build/src}/js/constants/embed.d.ts.map +0 -0
  150. /package/{src → build/src}/js/constants/player.d.ts +0 -0
  151. /package/{src → build/src}/js/constants/player.d.ts.map +0 -0
  152. /package/{src → build/src}/js/constants/pluginsRegistry.d.ts +0 -0
  153. /package/{src → build/src}/js/constants/pluginsRegistry.d.ts.map +0 -0
  154. /package/{src → build/src}/js/hooks/useGetPlayers.d.ts +0 -0
  155. /package/{src → build/src}/js/hooks/useGetPlayers.d.ts.map +0 -0
  156. /package/{src → build/src}/js/services/players-api.d.ts +0 -0
  157. /package/{src → build/src}/js/services/players-api.d.ts.map +0 -0
  158. /package/{src → build/src}/js/services/url-shortener.d.ts +0 -0
  159. /package/{src → build/src}/js/services/url-shortener.d.ts.map +0 -0
  160. /package/{src → build/src}/js/types/EmbedCodeModalProps.d.ts +0 -0
  161. /package/{src → build/src}/js/types/EmbedCodeModalProps.d.ts.map +0 -0
  162. /package/{src → build/src}/js/types/EmbedCodeProps.d.ts +0 -0
  163. /package/{src → build/src}/js/types/EmbedCodeProps.d.ts.map +0 -0
  164. /package/{src → build/src}/js/types/players.d.ts +0 -0
  165. /package/{src → build/src}/js/types/players.d.ts.map +0 -0
  166. /package/{src → build/src}/js/types/studioModule.d.ts +0 -0
  167. /package/{src → build/src}/js/types/studioModule.d.ts.map +0 -0
  168. /package/{src → build/src}/js/utils/addPluginsDataToPlayers.d.ts +0 -0
  169. /package/{src → build/src}/js/utils/addPluginsDataToPlayers.d.ts.map +0 -0
  170. /package/{src → build/src}/js/utils/call.d.ts +0 -0
  171. /package/{src → build/src}/js/utils/call.d.ts.map +0 -0
  172. /package/{src → build/src}/js/utils/dimensions.d.ts +0 -0
  173. /package/{src → build/src}/js/utils/dimensions.d.ts.map +0 -0
  174. /package/{src → build/src}/js/utils/embedCodeGenerator.d.ts +0 -0
  175. /package/{src → build/src}/js/utils/embedCodeGenerator.d.ts.map +0 -0
  176. /package/{src → build/src}/js/utils/featureSwitches.d.ts +0 -0
  177. /package/{src → build/src}/js/utils/featureSwitches.d.ts.map +0 -0
  178. /package/{src → build/src}/js/utils/util.d.ts +0 -0
  179. /package/{src → build/src}/js/utils/util.d.ts.map +0 -0
  180. /package/{src → build/src}/module.d.ts +0 -0
  181. /package/{src → build/src}/module.d.ts.map +0 -0
  182. /package/{src → build/src}/styles/typings.td.d.ts +0 -0
  183. /package/{src → build/src}/styles/typings.td.d.ts.map +0 -0
  184. /package/{src → build/src}/types/studio.d.ts +0 -0
  185. /package/{src → build/src}/types/studio.d.ts.map +0 -0
@@ -0,0 +1,65 @@
1
+ {
2
+ "modalHeader": "Incrustar en sitio web",
3
+ "mediaNotice": "Utilizará el reproductor predeterminado de su cuenta",
4
+ "tooltipText": "Actualmente se está utilizando el reproductor predeterminado de Brightcove. La gestión de reproductores estará disponible próximamente.",
5
+ "tooltipTextNew": "Los reproductores determinan la experiencia del usuario a la hora de reproducir vídeos por medio de ajustes como el estilo del reproductor, ajustes de configuración especiales y otros.",
6
+ "tooltipLink": "Más información sobre reproductores",
7
+ "learnmore": "https://es.studio.support.brightcove.com/players/getting-started-players-module.html",
8
+ "previewButton": "Vista previa",
9
+ "player": "Reproductor",
10
+ "getURL": "Obtener URL",
11
+ "tabs": {
12
+ "labels": {
13
+ "iframe": "iframe",
14
+ "javascript": "JavaScript"
15
+ },
16
+ "helperText": "Copie el código HTML y péguelo en su sitio web.",
17
+ "helperTextWarning": "Este reproductor está configurado con el complemento Campaign. Para garantizar un seguimiento adecuado, debe utilizarse el código de incrustación JavaScript.",
18
+ "viewerIdTextWarning": "Este reproductor está configurado con el seguimiento de identificadores de espectadores. Para garantizar un seguimiento correcto, debe utilizarse el código de incrustación JavaScript.",
19
+ "bcMapTrackingTextWarning": "This player is configured with MAPs Tracking. To ensure proper tracking, the JavaScript embed code should be used."
20
+ },
21
+ "toasterTitle": "Operación realizada correctamente.",
22
+ "toasterMessage": "Código copiado al portapapeles",
23
+ "toasterGetURLSuccess": "URL copiada al portapapeles",
24
+ "toasterGetURLError": "No es posible generar la URL",
25
+ "toasterErrorMessage": "Se ha producido un error al copiar el texto al portapapeles.",
26
+ "customPluginNotice": "Puede ocurrir que las configuraciones personalizadas impidan la previsualización completa.",
27
+ "done": "Hecho",
28
+ "close": "Cerrar",
29
+ "noPlayerModalHeader": "Crear un reproductor de interactividad",
30
+ "noPlayerModalContent1": "Para poder incrustar un proyecto de interactividad, primero hay que activar la función de interactividad.",
31
+ "noPlayerModalContent2": "Active esta función en cualquier reproductor existente o cree uno nuevo.",
32
+ "toPlayersModuleLink": "Ir al módulo Players",
33
+ "cancel": "Cancelar",
34
+ "createPlayerNow": "Crear reproductor ahora",
35
+ "createPlayerFailedTitle": "No ha sido posible crear el reproductor con la interactividad activada.",
36
+ "createPlayerFailedMessage": "Vuelva a intentarlo.",
37
+ "activateModal": "No hay ningún reproductor con la interactividad activada",
38
+ "activateModalContent1": "Para poder incrustar proyectos, se precisa un reproductor con la interactividad activada. En este momento, esta cuenta no tiene reproductores con la interactividad activada. Para crear uno, utilice el ",
39
+ "activateModalContent2": "Módulo Players",
40
+ "customSettings": {
41
+ "sizing": "Dimensionamiento",
42
+ "aspectRatio": "Relación de aspecto",
43
+ "playerWidth": "Anchura del reproductor",
44
+ "playerHeight": "Altura del reproductor",
45
+ "units": "Unidades"
46
+ },
47
+ "lowLatency": "Baja latencia",
48
+ "dvr": {
49
+ "allowDVR": "Permitir DVR",
50
+ "inputLabel": "Tiempo",
51
+ "inputDescription": "El tiempo, en segundos, que se mantendrá en el manifiesto del DVR en directo",
52
+ "unit": "seg"
53
+ },
54
+ "adConfiguration": "Configuración de Anuncios",
55
+ "prism": {
56
+ "copying": "Copiando...",
57
+ "copied": "Copiado",
58
+ "copyURL": "Copiar URL",
59
+ "shortURL": "URL corta",
60
+ "fullURL": "URL completa",
61
+ "customSettings": {
62
+ "sizing": "Tamaño del Reproductor"
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "modalHeader": "Intégration à un site Internet",
3
+ "mediaNotice": "Ceci utilisera le lecteur par défaut de votre compte",
4
+ "tooltipText": "Utilise actuellement le lecteur Brightcove par défaut. La fonctionnalité de gestion des lecteurs sera bientôt disponible.",
5
+ "tooltipTextNew": "Les joueurs choisissent l'expérience de lecture vidéo comme l'apparence, les paramètres de configuration spéciaux, et plus.",
6
+ "tooltipLink": "En savoir plus sur les lecteurs",
7
+ "learnmore": "https://fr.studio.support.brightcove.com/players/getting-started-players-module.html",
8
+ "previewButton": "Aperçu",
9
+ "player": "Player",
10
+ "getURL": "Obtenir l'URL",
11
+ "tabs": {
12
+ "labels": {
13
+ "iframe": "iframe",
14
+ "javascript": "JavaScript"
15
+ },
16
+ "helperText": "Copiez le code HTML et collez-le dans votre site Internet.",
17
+ "helperTextWarning": "Ce joueur est configuré avec le plug-in Campaign. Pour garantir un suivi adéquat, le code incorporé JavaScript doit être utilisé.",
18
+ "viewerIdTextWarning": "Ce joueur est configuré avec le suivi des ID spectateurs. Pour garantir un suivi adéquat, le code incorporé JavaScript doit être utilisé.",
19
+ "bcMapTrackingTextWarning": "This player is configured with MAPs Tracking. To ensure proper tracking, the JavaScript embed code should be used."
20
+ },
21
+ "toasterTitle": "Réussite.",
22
+ "toasterMessage": "Code copié dans le presse-papiers",
23
+ "toasterGetURLSuccess": "URL copiée dans le presse-papiers",
24
+ "toasterGetURLError": "Impossible de générer l'URL",
25
+ "toasterErrorMessage": "Erreur lors de la copie du texte dans le presse-papiers",
26
+ "customPluginNotice": "En raison des configurations personnalisées, vous pourriez ne pas pouvoir visualiser l'aperçu plein écran.",
27
+ "done": "Terminé",
28
+ "close": "Fermer",
29
+ "noPlayerModalHeader": "Créer un lecteur d’interactivité",
30
+ "noPlayerModalContent1": "Pour intégrer un projet d’interactivité vous devez activer la fonction d’interactivité.",
31
+ "noPlayerModalContent2": "Activez cette fonction sur un lecteur existant ou créez-en un nouveau.",
32
+ "toPlayersModuleLink": "Accéder au module Lecteurs",
33
+ "cancel": "Annuler",
34
+ "createPlayerNow": "Créer un lecteur maintenant",
35
+ "createPlayerFailedTitle": "Impossible de créer le lecteur compatible à l’interactivité.",
36
+ "createPlayerFailedMessage": "Veuillez réessayer.",
37
+ "activateModal": "Aucun lecteur compatible à l’interactivité.",
38
+ "activateModalContent1": "Un lecteur compatible à l’interactivité est obligatoire pour intégrer un projet. Actuellement, ce compte ne contient aucun lecteur compatible à l’interactivité. Pour en créer un, utilisez le ",
39
+ "activateModalContent2": "module Lecteurs",
40
+ "customSettings": {
41
+ "sizing": "Redimensionnement",
42
+ "aspectRatio": "Ratio d'aspect",
43
+ "playerWidth": "Largeur du lecteur",
44
+ "playerHeight": "Hauteur du lecteur",
45
+ "units": "Unités"
46
+ },
47
+ "lowLatency": "Faible latence",
48
+ "adConfiguration": "Configuration des Annonces",
49
+ "dvr": {
50
+ "allowDVR": "Permettre le DVR",
51
+ "inputLabel": "Durée",
52
+ "inputDescription": "La durée, en secondes, à conserver dans le manifeste DVR en direct",
53
+ "unit": "s"
54
+ },
55
+ "prism": {
56
+ "copying": "Copie en cours...",
57
+ "copied": "Copié",
58
+ "copyURL": "Copier l'URL",
59
+ "shortURL": "URL courte",
60
+ "fullURL": "URL complète",
61
+ "customSettings": {
62
+ "sizing": "Taille du Lecteur"
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "modalHeader": "Webサイトに埋め込み",
3
+ "mediaNotice": "アカウントのデフォルトのプレーヤーを使用します",
4
+ "tooltipText": "現在、Brightcoveのデフォルトのプレーヤーを使用しています。プレーヤー管理が、間もなく公開されます。",
5
+ "tooltipTextNew": "プレーヤーは、スタイル指定や特別な設定など、動画再生体験を決定します。",
6
+ "tooltipLink": "プレーヤーについての詳細",
7
+ "learnmore": "https://ja.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コードをコピーし、お客様のWebサイトに貼り付けてください。",
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": "Playersモジュールに移動します",
33
+ "cancel": "キャンセル",
34
+ "createPlayerNow": "今すぐプレーヤーを作成",
35
+ "createPlayerFailedTitle": "インタラクティブ機能対応プレーヤーの作成に失敗しました。",
36
+ "createPlayerFailedMessage": "もう一度お試しください。",
37
+ "activateModal": "インタラクティブ機能対応プレーヤーがありません",
38
+ "activateModalContent1": "プロジェクトを埋め込むには、インタラクティブ機能対応プレーヤーが必要です。現在、このアカウントには、インタラクティブ機能対応プレーヤーがありません。作成するには ",
39
+ "activateModalContent2": "Playersモジュールを使用します",
40
+ "customSettings": {
41
+ "sizing": "サイズ",
42
+ "aspectRatio": "アスペクト比",
43
+ "playerWidth": "プレーヤーの幅",
44
+ "playerHeight": "プレーヤーの高さ",
45
+ "units": "単位"
46
+ },
47
+ "lowLatency": "低遅延",
48
+ "adConfiguration": "広告設定",
49
+ "dvr": {
50
+ "allowDVR": "DVR の許可",
51
+ "inputLabel": "時間",
52
+ "inputDescription": "ライブ DVR マニフェストに保持する時間(秒単位)",
53
+ "unit": "秒"
54
+ },
55
+ "prism": {
56
+ "copying": "コピー中...",
57
+ "copied": "コピー済み",
58
+ "copyURL": "URLをコピー",
59
+ "shortURL": "短縮URL",
60
+ "fullURL": "完全なURL",
61
+ "customSettings": {
62
+ "sizing": "プレーヤーのサイズ"
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,65 @@
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
+ "adConfiguration": "광고 구성",
49
+ "dvr": {
50
+ "allowDVR": "DVR 허용",
51
+ "inputLabel": "시간",
52
+ "inputDescription": "라이브 DVR 매니페스트에 유지할 시간(초)",
53
+ "unit": "초"
54
+ },
55
+ "prism": {
56
+ "copying": "복사 중...",
57
+ "copied": "복사됨",
58
+ "copyURL": "URL 복사",
59
+ "shortURL": "짧은 URL",
60
+ "fullURL": "전체 URL",
61
+ "customSettings": {
62
+ "sizing": "플레이어 크기"
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,65 @@
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
+ "adConfiguration": "廣告配置",
49
+ "dvr": {
50
+ "allowDVR": "允許 DVR",
51
+ "inputLabel": "時間",
52
+ "inputDescription": "保留在即時 DVR 資訊清單中的時間(以秒為單位)",
53
+ "unit": "秒"
54
+ },
55
+ "prism": {
56
+ "copying": "複製中...",
57
+ "copied": "已複製",
58
+ "copyURL": "複製URL",
59
+ "shortURL": "短網址",
60
+ "fullURL": "完整URL",
61
+ "customSettings": {
62
+ "sizing": "播放程式大小"
63
+ }
64
+ }
65
+ }
@@ -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,117 @@
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 externalPackages = [
11
+ 'react',
12
+ 'react-dom',
13
+ '@brightcove/prism-core',
14
+ '@brightcove/studio-components',
15
+ '@brightcove/studio-api-services',
16
+ '@brightcove/studio-design-tokens',
17
+ '@brightcove/studio-icons',
18
+ '@brightcove/player-embed-code',
19
+ '@brightcove/react-player-loader',
20
+ 'i18next',
21
+ 'react-i18next',
22
+ 'react-query',
23
+ ];
24
+
25
+ // Externalize exact matches and subpath imports (e.g. react-query/devtools)
26
+ const externalsFn = ({request}, callback) => {
27
+ const match = externalPackages.find(
28
+ (pkg) => request === pkg || request.startsWith(pkg + '/')
29
+ );
30
+ if (match) {
31
+ return callback(null, `commonjs2 ${request}`);
32
+ }
33
+ callback();
34
+ };
35
+
36
+ return {
37
+ entry: {
38
+ app: entryFile,
39
+ },
40
+ output: isDevelopment ? {
41
+ path: path.resolve(__dirname, '..', 'build'),
42
+ filename: 'js/[name].js',
43
+ publicPath: 'https://localhost.brightcove.com:12345/',
44
+ } : {
45
+ path: path.resolve(__dirname, 'build'),
46
+ filename: 'index.js',
47
+ libraryTarget: 'umd'
48
+ },
49
+ mode: process.env.NODE_ENV,
50
+ module: {
51
+ rules: [
52
+ {
53
+ test: /\.(css|scss|sass)$/,
54
+ use: ['style-loader',
55
+ {
56
+ loader: 'css-loader',
57
+ options: {
58
+ modules: {
59
+ localIdentName: '[name]__[local]--[hash:base64:5]'
60
+ },
61
+ }
62
+ },
63
+ {
64
+ loader: 'sass-loader',
65
+ }],
66
+ },
67
+ {
68
+ test: /\.(js|ts)x?$/,
69
+ exclude: /node_modules/,
70
+ use: {
71
+ loader: 'babel-loader',
72
+ },
73
+ },
74
+ ],
75
+ },
76
+ resolve: {
77
+ extensions: ['.ts', '.tsx', '.js', '.jsx','.css', '.sass', '.scss'],
78
+ alias: {
79
+ js: path.resolve(path.resolve(__dirname), 'src/js'),
80
+ styles: path.resolve(path.resolve(__dirname), 'src/styles'),
81
+ translations: path.resolve(path.resolve(__dirname), 'src/translations'),
82
+ }
83
+ },
84
+ externals: isDemo ? {} : externalsFn,
85
+ devtool: 'source-map',
86
+ devServer: {
87
+ static: {
88
+ directory: './dist',
89
+ },
90
+ client: {
91
+ overlay: {
92
+ errors: true,
93
+ warnings: false,
94
+ runtimeErrors: true,
95
+ },
96
+ },
97
+ allowedHosts: 'all',
98
+ hot: 'only',
99
+ host: 'localhost.brightcove.com',
100
+ https: {
101
+ key: fs.readFileSync('./etc/wildcard.brightcove.com.key'),
102
+ cert: fs.readFileSync('./etc/wildcard.brightcove.com.pem'),
103
+ },
104
+ headers: {
105
+ 'Access-Control-Allow-Origin': '*',
106
+ },
107
+ port: 12345,
108
+ historyApiFallback: true,
109
+ },
110
+ optimization: {
111
+ minimizer: [new TerserPlugin({
112
+ extractComments: false,
113
+ })],
114
+ },
115
+ stats: 'errors-only',
116
+ }
117
+ }