@brightcove/components-embed-code-modal 1.1.0 → 1.1.2
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/__tests__/PrismPlayerControls.test.d.ts +2 -0
- package/__tests__/PrismPlayerControls.test.d.ts.map +1 -0
- package/{build/index.js → index.js} +1 -1
- package/index.js.map +1 -0
- package/package.json +5 -15
- package/{build/src → src}/js/components/prism/PrismPlayerControls.d.ts.map +1 -1
- package/.eslintignore +0 -7
- package/.eslintrc +0 -23
- package/.github/workflows/ci.yml +0 -23
- package/.husky/pre-commit +0 -4
- package/.nvmrc +0 -1
- package/.prettierignore +0 -7
- package/.prettierrc +0 -5
- package/.release-it.json +0 -40
- package/.whitesource +0 -3
- package/CHANGELOG.md +0 -398
- package/CODEOWNERS +0 -37
- package/PULL_REQUEST_TEMPLATE.md +0 -17
- package/__tests__/EmbedCode.test.tsx +0 -51
- package/__tests__/InteractivityProject.test.tsx +0 -50
- package/__tests__/PlayerPreview.test.tsx +0 -23
- package/__tests__/PrismPlayerPreview.test.tsx +0 -168
- package/__tests__/TabsHeader.test.tsx +0 -19
- package/__tests__/TabsSection.test.tsx +0 -46
- package/__tests__/TitleWithTooltip.test.tsx +0 -45
- package/__tests__/VideoPlayer.test.tsx +0 -38
- package/__tests__/embedCodeGenerator.test.ts +0 -111
- package/__tests__/util.test.ts +0 -89
- package/babel.config.json +0 -17
- package/build/README.md +0 -109
- package/build/index.js.map +0 -1
- package/build/package.json +0 -100
- package/etc/wildcard.brightcove.com.key +0 -27
- package/etc/wildcard.brightcove.com.pem +0 -96
- package/jest/jest.setup.js +0 -90
- package/jest/jest.stub.js +0 -4
- package/jest.config.js +0 -24
- package/scripts/create-dist-pkg-prod.js +0 -18
- package/src/index.ts +0 -17
- package/src/js/EmbedCodeModal.tsx +0 -105
- package/src/js/components/CustomSettingsDropdown.tsx +0 -184
- package/src/js/components/EmbedCopySection.tsx +0 -130
- package/src/js/components/ModalContainer.tsx +0 -367
- package/src/js/components/NoPlayerModal.tsx +0 -42
- package/src/js/components/PlayerPreview.tsx +0 -116
- package/src/js/components/TabsHeader.tsx +0 -31
- package/src/js/components/TabsSection.tsx +0 -74
- package/src/js/components/TitleWithTooltip.tsx +0 -39
- package/src/js/components/VideoLinks.tsx +0 -83
- package/src/js/components/VideoPlayer.tsx +0 -324
- package/src/js/components/index.ts +0 -9
- package/src/js/components/prism/PrismLiveModal.tsx +0 -162
- package/src/js/components/prism/PrismPlayerControls.tsx +0 -343
- package/src/js/components/prism/PrismPlayerPreview.tsx +0 -188
- package/src/js/components/prism/index.ts +0 -3
- package/src/js/constants/baseUrls.ts +0 -4
- package/src/js/constants/embed.ts +0 -12
- package/src/js/constants/player.ts +0 -32
- package/src/js/constants/pluginsRegistry.ts +0 -30
- package/src/js/hooks/useGetPlayers.ts +0 -12
- package/src/js/i18n.ts +0 -43
- package/src/js/services/players-api.ts +0 -26
- package/src/js/services/url-shortener.ts +0 -10
- package/src/js/types/EmbedCodeModalProps.ts +0 -72
- package/src/js/types/EmbedCodeProps.ts +0 -13
- package/src/js/types/brightcoveEmbedCode.d.ts +0 -18
- package/src/js/types/players.ts +0 -64
- package/src/js/types/react-i18next.d.ts +0 -8
- package/src/js/types/studioModule.ts +0 -7
- package/src/js/utils/addPluginsDataToPlayers.ts +0 -59
- package/src/js/utils/call.ts +0 -31
- package/src/js/utils/dimensions.ts +0 -53
- package/src/js/utils/embedCodeGenerator.ts +0 -120
- package/src/js/utils/featureSwitches.ts +0 -16
- package/src/js/utils/util.ts +0 -153
- package/src/module.tsx +0 -280
- package/src/styles/CustomSettingsDropdown.sass +0 -42
- package/src/styles/EmbedCode.sass +0 -30
- package/src/styles/EmbedCodeModal.sass +0 -76
- package/src/styles/base.sass +0 -1
- package/src/styles/prism/PrismLiveModal.sass +0 -155
- package/src/styles/theme.sass +0 -11
- package/src/styles/typings.td.ts +0 -9
- package/src/translations/en.json +0 -65
- package/src/translations/es.json +0 -65
- package/src/translations/fr.json +0 -65
- package/src/translations/ja.json +0 -65
- package/src/translations/ko.json +0 -65
- package/src/translations/zh.json +0 -65
- package/src/types/studio.ts +0 -197
- package/tsconfig.json +0 -34
- package/webpack.config.js +0 -117
- /package/{build/__tests__ → __tests__}/EmbedCode.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/EmbedCode.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/InteractivityProject.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/InteractivityProject.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/PlayerPreview.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/PlayerPreview.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/PrismPlayerPreview.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/PrismPlayerPreview.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/TabsHeader.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/TabsHeader.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/TabsSection.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/TabsSection.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/TitleWithTooltip.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/TitleWithTooltip.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/VideoPlayer.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/VideoPlayer.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/embedCodeGenerator.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/embedCodeGenerator.test.d.ts.map +0 -0
- /package/{build/__tests__ → __tests__}/util.test.d.ts +0 -0
- /package/{build/__tests__ → __tests__}/util.test.d.ts.map +0 -0
- /package/{build/src → src}/index.d.ts +0 -0
- /package/{build/src → src}/index.d.ts.map +0 -0
- /package/{build/src → src}/js/EmbedCodeModal.d.ts +0 -0
- /package/{build/src → src}/js/EmbedCodeModal.d.ts.map +0 -0
- /package/{build/src → src}/js/components/CustomSettingsDropdown.d.ts +0 -0
- /package/{build/src → src}/js/components/CustomSettingsDropdown.d.ts.map +0 -0
- /package/{build/src → src}/js/components/EmbedCopySection.d.ts +0 -0
- /package/{build/src → src}/js/components/EmbedCopySection.d.ts.map +0 -0
- /package/{build/src → src}/js/components/ModalContainer.d.ts +0 -0
- /package/{build/src → src}/js/components/ModalContainer.d.ts.map +0 -0
- /package/{build/src → src}/js/components/NoPlayerModal.d.ts +0 -0
- /package/{build/src → src}/js/components/NoPlayerModal.d.ts.map +0 -0
- /package/{build/src → src}/js/components/PlayerPreview.d.ts +0 -0
- /package/{build/src → src}/js/components/PlayerPreview.d.ts.map +0 -0
- /package/{build/src → src}/js/components/TabsHeader.d.ts +0 -0
- /package/{build/src → src}/js/components/TabsHeader.d.ts.map +0 -0
- /package/{build/src → src}/js/components/TabsSection.d.ts +0 -0
- /package/{build/src → src}/js/components/TabsSection.d.ts.map +0 -0
- /package/{build/src → src}/js/components/TitleWithTooltip.d.ts +0 -0
- /package/{build/src → src}/js/components/TitleWithTooltip.d.ts.map +0 -0
- /package/{build/src → src}/js/components/VideoLinks.d.ts +0 -0
- /package/{build/src → src}/js/components/VideoLinks.d.ts.map +0 -0
- /package/{build/src → src}/js/components/VideoPlayer.d.ts +0 -0
- /package/{build/src → src}/js/components/VideoPlayer.d.ts.map +0 -0
- /package/{build/src → src}/js/components/index.d.ts +0 -0
- /package/{build/src → src}/js/components/index.d.ts.map +0 -0
- /package/{build/src → src}/js/components/prism/PrismLiveModal.d.ts +0 -0
- /package/{build/src → src}/js/components/prism/PrismLiveModal.d.ts.map +0 -0
- /package/{build/src → src}/js/components/prism/PrismPlayerControls.d.ts +0 -0
- /package/{build/src → src}/js/components/prism/PrismPlayerPreview.d.ts +0 -0
- /package/{build/src → src}/js/components/prism/PrismPlayerPreview.d.ts.map +0 -0
- /package/{build/src → src}/js/components/prism/index.d.ts +0 -0
- /package/{build/src → src}/js/components/prism/index.d.ts.map +0 -0
- /package/{build/src → src}/js/constants/baseUrls.d.ts +0 -0
- /package/{build/src → src}/js/constants/baseUrls.d.ts.map +0 -0
- /package/{build/src → src}/js/constants/embed.d.ts +0 -0
- /package/{build/src → src}/js/constants/embed.d.ts.map +0 -0
- /package/{build/src → src}/js/constants/player.d.ts +0 -0
- /package/{build/src → src}/js/constants/player.d.ts.map +0 -0
- /package/{build/src → src}/js/constants/pluginsRegistry.d.ts +0 -0
- /package/{build/src → src}/js/constants/pluginsRegistry.d.ts.map +0 -0
- /package/{build/src → src}/js/hooks/useGetPlayers.d.ts +0 -0
- /package/{build/src → src}/js/hooks/useGetPlayers.d.ts.map +0 -0
- /package/{build/src → src}/js/i18n.d.ts +0 -0
- /package/{build/src → src}/js/i18n.d.ts.map +0 -0
- /package/{build/src → src}/js/services/players-api.d.ts +0 -0
- /package/{build/src → src}/js/services/players-api.d.ts.map +0 -0
- /package/{build/src → src}/js/services/url-shortener.d.ts +0 -0
- /package/{build/src → src}/js/services/url-shortener.d.ts.map +0 -0
- /package/{build/src → src}/js/types/EmbedCodeModalProps.d.ts +0 -0
- /package/{build/src → src}/js/types/EmbedCodeModalProps.d.ts.map +0 -0
- /package/{build/src → src}/js/types/EmbedCodeProps.d.ts +0 -0
- /package/{build/src → src}/js/types/EmbedCodeProps.d.ts.map +0 -0
- /package/{build/src → src}/js/types/players.d.ts +0 -0
- /package/{build/src → src}/js/types/players.d.ts.map +0 -0
- /package/{build/src → src}/js/types/studioModule.d.ts +0 -0
- /package/{build/src → src}/js/types/studioModule.d.ts.map +0 -0
- /package/{build/src → src}/js/utils/addPluginsDataToPlayers.d.ts +0 -0
- /package/{build/src → src}/js/utils/addPluginsDataToPlayers.d.ts.map +0 -0
- /package/{build/src → src}/js/utils/call.d.ts +0 -0
- /package/{build/src → src}/js/utils/call.d.ts.map +0 -0
- /package/{build/src → src}/js/utils/dimensions.d.ts +0 -0
- /package/{build/src → src}/js/utils/dimensions.d.ts.map +0 -0
- /package/{build/src → src}/js/utils/embedCodeGenerator.d.ts +0 -0
- /package/{build/src → src}/js/utils/embedCodeGenerator.d.ts.map +0 -0
- /package/{build/src → src}/js/utils/featureSwitches.d.ts +0 -0
- /package/{build/src → src}/js/utils/featureSwitches.d.ts.map +0 -0
- /package/{build/src → src}/js/utils/util.d.ts +0 -0
- /package/{build/src → src}/js/utils/util.d.ts.map +0 -0
- /package/{build/src → src}/module.d.ts +0 -0
- /package/{build/src → src}/module.d.ts.map +0 -0
- /package/{build/src → src}/styles/typings.td.d.ts +0 -0
- /package/{build/src → src}/styles/typings.td.d.ts.map +0 -0
- /package/{build/src → src}/types/studio.d.ts +0 -0
- /package/{build/src → src}/types/studio.d.ts.map +0 -0
package/build/package.json
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@brightcove/components-embed-code-modal",
|
|
3
|
-
"version": "1.1.0",
|
|
4
|
-
"repository": {
|
|
5
|
-
"type": "git",
|
|
6
|
-
"url": "https://bithub.brightcove.com/studio-ui-kit/studio-components-embed-code-modal.git"
|
|
7
|
-
},
|
|
8
|
-
"description": "Embed Code Modal used for publishing videos",
|
|
9
|
-
"main": "./index.js",
|
|
10
|
-
"types": "./src/index.d.ts",
|
|
11
|
-
"author": "Campaign Team",
|
|
12
|
-
"scripts": {
|
|
13
|
-
"demo": "NODE_ENV=development DEMO=1 webpack-dev-server --progress --color",
|
|
14
|
-
"build": "NODE_ENV=production webpack --progress && cp ./README.md ./build && node scripts/create-dist-pkg-prod && tsc",
|
|
15
|
-
"build:watch": "NODE_ENV=production webpack --watch",
|
|
16
|
-
"clean": "rm -r build",
|
|
17
|
-
"lint": "eslint \"{src,__tests__,demo}/**/*.{ts,tsx,js,jsx}\"",
|
|
18
|
-
"type-check": "tsc",
|
|
19
|
-
"notify": "notify-change -m proj-projstudio",
|
|
20
|
-
"release": "release-it",
|
|
21
|
-
"test": "jest",
|
|
22
|
-
"test:coverage": "jest --coverage",
|
|
23
|
-
"test:watch": "jest --watch",
|
|
24
|
-
"pre-commit": "lint-staged && npm test"
|
|
25
|
-
},
|
|
26
|
-
"devDependencies": {
|
|
27
|
-
"@babel/core": "^7.20.7",
|
|
28
|
-
"@babel/plugin-proposal-class-properties": "^7.16.0",
|
|
29
|
-
"@babel/plugin-transform-runtime": "^7.16.4",
|
|
30
|
-
"@babel/preset-env": "^7.16.4",
|
|
31
|
-
"@babel/preset-react": "^7.16.0",
|
|
32
|
-
"@babel/preset-typescript": "^7.16.0",
|
|
33
|
-
"@brightcove/eslint-config-applications": "^0.3.0",
|
|
34
|
-
"@brightcove/kacl": "^0.1.11",
|
|
35
|
-
"@brightcove/notify-change": "^0.1.7",
|
|
36
|
-
"@brightcove/player-embed-code": "^2.0.4",
|
|
37
|
-
"@brightcove/prism-core": "^1.64.0",
|
|
38
|
-
"@brightcove/react-player-loader": "^1.4.2",
|
|
39
|
-
"@brightcove/studio-api-services": "^7.0.0",
|
|
40
|
-
"@brightcove/studio-components": "^7.23.4",
|
|
41
|
-
"@brightcove/studio-design-tokens": "^1.15.0",
|
|
42
|
-
"@brightcove/studio-icons": "^8.14.0",
|
|
43
|
-
"@floating-ui/react": "^0.27.19",
|
|
44
|
-
"@floating-ui/react-dom": "^2.1.8",
|
|
45
|
-
"@testing-library/jest-dom": "^5.16.5",
|
|
46
|
-
"@testing-library/react": "^14.3.1",
|
|
47
|
-
"@testing-library/user-event": "^14.4.3",
|
|
48
|
-
"@types/jest": "^27.4.0",
|
|
49
|
-
"@types/react": "^18.3.17",
|
|
50
|
-
"@types/react-dom": "^18.3.5",
|
|
51
|
-
"@typescript-eslint/eslint-plugin": "^5.4.0",
|
|
52
|
-
"@typescript-eslint/parser": "^5.4.0",
|
|
53
|
-
"babel-jest": "^27.5.1",
|
|
54
|
-
"babel-loader": "^8.2.3",
|
|
55
|
-
"css-loader": "^6.5.1",
|
|
56
|
-
"eslint": "^8.3.0",
|
|
57
|
-
"eslint-config-prettier": "^8.3.0",
|
|
58
|
-
"eslint-plugin-import": "^2.25.3",
|
|
59
|
-
"eslint-plugin-react": "^7.27.1",
|
|
60
|
-
"eslint-plugin-react-hooks": "^4.3.0",
|
|
61
|
-
"husky": "^7.0.4",
|
|
62
|
-
"i18next": "^21.5.4",
|
|
63
|
-
"jest": "^27.5.1",
|
|
64
|
-
"jest-canvas-mock": "^2.3.1",
|
|
65
|
-
"lint-staged": "^12.1.2",
|
|
66
|
-
"moment-timezone": "^0.6.1",
|
|
67
|
-
"prettier": "^2.5.0",
|
|
68
|
-
"react": "^18.3.1",
|
|
69
|
-
"react-dom": "^18.3.1",
|
|
70
|
-
"react-i18next": "^11.14.3",
|
|
71
|
-
"react-query": "^3.38.0",
|
|
72
|
-
"release-it": "^14.11.8",
|
|
73
|
-
"resize-observer-polyfill": "^1.5.1",
|
|
74
|
-
"sass": "^1.44.0",
|
|
75
|
-
"sass-loader": "^12.3.0",
|
|
76
|
-
"style-loader": "^3.3.1",
|
|
77
|
-
"typescript": "^4.5.2",
|
|
78
|
-
"webpack": "^5.64.4",
|
|
79
|
-
"webpack-cli": "^4.9.1",
|
|
80
|
-
"webpack-dev-server": "^4.5.0"
|
|
81
|
-
},
|
|
82
|
-
"dependencies": {
|
|
83
|
-
"classnames": "^2.5.1"
|
|
84
|
-
},
|
|
85
|
-
"peerDependencies": {
|
|
86
|
-
"@brightcove/player-embed-code": "^2.0.4",
|
|
87
|
-
"@brightcove/prism-core": "^1.25.1",
|
|
88
|
-
"@brightcove/react-player-loader": "^1.4.2",
|
|
89
|
-
"@brightcove/studio-api-services": "^7.0.0",
|
|
90
|
-
"@brightcove/studio-components": "*",
|
|
91
|
-
"@brightcove/studio-design-tokens": "*",
|
|
92
|
-
"@brightcove/studio-icons": "*",
|
|
93
|
-
"i18next": ">=21",
|
|
94
|
-
"react": "^17.0.2 || ^18.0.0",
|
|
95
|
-
"react-dom": "^17.0.2 || ^18.0.0",
|
|
96
|
-
"react-i18next": ">=11",
|
|
97
|
-
"react-query": "^3.38.0"
|
|
98
|
-
},
|
|
99
|
-
"module": "./index.js"
|
|
100
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
-
MIIEpAIBAAKCAQEAxXmI7sOBKvFm8TFIhKoYCYOaDE+upc6TcPqNlTt8wA8bBpUY
|
|
3
|
-
Je99ofu5CBNsD0uI1XTWy+Bjmo177ND+3apni6KZkOh8kSb/5OAL+eEbqHksL8Z6
|
|
4
|
-
+bAlKtOjjyv3Se/T8sEIo1dszgBFVdPbQZVrYLzGu9g6tLcu1jJ9mjdCLthEdSJH
|
|
5
|
-
tPkTFUYp8Wlup9qMmvG1jo2wqz4pFVtHyZW/fCkQ+MkfeOPnGiSw2oEnHaVmGuPF
|
|
6
|
-
eyxhWBh2q2MAqpyc9qVMkDQowQxtg//zOVlr632XZpI2xhpuINHUztDxEHOB3Hd5
|
|
7
|
-
lT+v3WQttQZ/1gRXaJkFAGKxgbLfuLh92L975QIDAQABAoIBAFKdh/YsAKwQlnqt
|
|
8
|
-
naMy7h982UPxSiXACNspV3ZpjsVjDHFyisnEKhFMmJqSVZEIjtSOrxZYaBNOwdvP
|
|
9
|
-
i/D8y5kVi52eRg8L+96rBRejX8jZ+Ox74xL26HXEWRca07gxB8D1lUGQ38pHPrqr
|
|
10
|
-
iX0kn+m20IXh7p2QTZ37PaT5HU0vHIs6K0wOWelPxjtU93FIsiwfaOOba3FOLEXa
|
|
11
|
-
Sd5GvRu9pCpSPO45zTsMI6w1MlD38KUJDcBf2Tm/gSMgfDvj1gPvynXBedlWDXsL
|
|
12
|
-
TIckV0YO0gmRiWanoXc0lafE3Fb0ctcRrGBBlpjhGxkXxYNY5A6b8CE9eJQWtUg8
|
|
13
|
-
7Xo14kECgYEA9V3uqpE0TuArzNzy8jth0meH/gGmIWknQSCSX2wj6b4yvArOWrsS
|
|
14
|
-
qyq1Wd0JfE8AOZf4uWuiJKRk0uRE+xkpYk4tH+7/0+R315a1SXiQb020R6iMC406
|
|
15
|
-
wrRSz0R+xFF8zyD4AKKxSO8CgMotcU/oH78lGObWwTuxQlptXjcC8/kCgYEAzghL
|
|
16
|
-
EDS6TzM9EFt8rbOi6quoahTsDNoPm8kG1TNKxmM805N7dQS3E72/6Sp2ndiTysgu
|
|
17
|
-
rS8j0JC8yBx6oaQMcvY/dUZ3/ZdR6Y6SDqmaTFmbcpWGQzKW89VP5kIffi80dF3A
|
|
18
|
-
FtXt94mG2vcbxdWxyC8CIrDwevfmczs0C5pPak0CgYBHJHcg6X0bKZBJk/61EVap
|
|
19
|
-
pO8fTOcYZN7G2WTXWgmHqmgXcaKnV/pvurBeX+JyMo3EJTYuvPCEY04Af8MocwE2
|
|
20
|
-
yaf3zFpM27+LuNzTcqueOg99f3crmkVhUtt30UpYLbBcdhiyRnnUxcgaA4Tth9er
|
|
21
|
-
7MYa1EOMP3yD2qg/Wv/2MQKBgQCnRrJzCOxPC0HDuxOiD9vw/cexwSTZVl4f1HoY
|
|
22
|
-
tRk7syyadv5gRqDBhWh/zXsastFjbV4AO+qvFiQ/sGecPw3gdK+W7szS9n2Jy7gn
|
|
23
|
-
8WmWHZaI1H96pWNLut+xCfR5xaen5snjgHNBa8YylzhUSiiaaBgqxE+q9wSCgAnE
|
|
24
|
-
ddeObQKBgQCpy2Vq/aUUNMVNDV3vmEwYRD8qsqe5JWXswyOM+ZyHg3N06auP2RHx
|
|
25
|
-
NqUE9gdDxR1gc6cUhxbR9+L9DMEWiLVqXY51yddMCVuQVTHyH4MhyJcXv1eEbtX2
|
|
26
|
-
T/5dnQPy5ib85HAvAei6bf+uRKjm86984JfYZIwEwbGS+H9irF/3Pw==
|
|
27
|
-
-----END RSA PRIVATE KEY-----
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
Certificate:
|
|
2
|
-
Data:
|
|
3
|
-
Version: 3 (0x2)
|
|
4
|
-
Serial Number: 4109 (0x100d)
|
|
5
|
-
Signature Algorithm: sha256WithRSAEncryption
|
|
6
|
-
Issuer: C=US, ST=Massachusetts, L=Boston, O=Brightcove Inc., OU=Systems Engineering/emailAddress=syseng@brightcove.com
|
|
7
|
-
Validity
|
|
8
|
-
Not Before: Jan 22 15:49:19 2016 GMT
|
|
9
|
-
Not After : Jan 19 15:49:19 2026 GMT
|
|
10
|
-
Subject: C=US, ST=Massachusetts, O=Brightcove Inc., OU=Systems Engineering, CN=*.brightcove.com/emailAddress=syseng@brightcove.com
|
|
11
|
-
Subject Public Key Info:
|
|
12
|
-
Public Key Algorithm: rsaEncryption
|
|
13
|
-
RSA Public Key: (2048 bit)
|
|
14
|
-
Modulus (2048 bit):
|
|
15
|
-
00:c5:79:88:ee:c3:81:2a:f1:66:f1:31:48:84:aa:
|
|
16
|
-
18:09:83:9a:0c:4f:ae:a5:ce:93:70:fa:8d:95:3b:
|
|
17
|
-
7c:c0:0f:1b:06:95:18:25:ef:7d:a1:fb:b9:08:13:
|
|
18
|
-
6c:0f:4b:88:d5:74:d6:cb:e0:63:9a:8d:7b:ec:d0:
|
|
19
|
-
fe:dd:aa:67:8b:a2:99:90:e8:7c:91:26:ff:e4:e0:
|
|
20
|
-
0b:f9:e1:1b:a8:79:2c:2f:c6:7a:f9:b0:25:2a:d3:
|
|
21
|
-
a3:8f:2b:f7:49:ef:d3:f2:c1:08:a3:57:6c:ce:00:
|
|
22
|
-
45:55:d3:db:41:95:6b:60:bc:c6:bb:d8:3a:b4:b7:
|
|
23
|
-
2e:d6:32:7d:9a:37:42:2e:d8:44:75:22:47:b4:f9:
|
|
24
|
-
13:15:46:29:f1:69:6e:a7:da:8c:9a:f1:b5:8e:8d:
|
|
25
|
-
b0:ab:3e:29:15:5b:47:c9:95:bf:7c:29:10:f8:c9:
|
|
26
|
-
1f:78:e3:e7:1a:24:b0:da:81:27:1d:a5:66:1a:e3:
|
|
27
|
-
c5:7b:2c:61:58:18:76:ab:63:00:aa:9c:9c:f6:a5:
|
|
28
|
-
4c:90:34:28:c1:0c:6d:83:ff:f3:39:59:6b:eb:7d:
|
|
29
|
-
97:66:92:36:c6:1a:6e:20:d1:d4:ce:d0:f1:10:73:
|
|
30
|
-
81:dc:77:79:95:3f:af:dd:64:2d:b5:06:7f:d6:04:
|
|
31
|
-
57:68:99:05:00:62:b1:81:b2:df:b8:b8:7d:d8:bf:
|
|
32
|
-
7b:e5
|
|
33
|
-
Exponent: 65537 (0x10001)
|
|
34
|
-
X509v3 extensions:
|
|
35
|
-
X509v3 Basic Constraints:
|
|
36
|
-
CA:FALSE
|
|
37
|
-
Netscape Comment:
|
|
38
|
-
OpenSSL Generated Certificate
|
|
39
|
-
X509v3 Subject Key Identifier:
|
|
40
|
-
25:8C:64:B3:F5:49:BD:8A:1F:42:9A:D6:69:9C:B4:04:FE:4B:82:C2
|
|
41
|
-
X509v3 Authority Key Identifier:
|
|
42
|
-
keyid:D1:E0:AC:DE:01:80:DB:94:DA:29:66:0F:A9:48:11:BF:62:9F:51:9E
|
|
43
|
-
DirName:/C=US/ST=Massachusetts/L=Boston/O=Brightcove Inc./OU=Systems Engineering/emailAddress=syseng@brightcove.com
|
|
44
|
-
serial:C2:3B:9A:77:9C:63:DE:2B
|
|
45
|
-
|
|
46
|
-
X509v3 Subject Alternative Name:
|
|
47
|
-
DNS:*.brightcove.com, DNS:*.qa.brightcove.com, DNS:*.oauth.qa.brightcove.com, DNS:*.staging.brightcove.com
|
|
48
|
-
X509v3 Key Usage:
|
|
49
|
-
Digital Signature, Non Repudiation, Key Encipherment
|
|
50
|
-
Signature Algorithm: sha256WithRSAEncryption
|
|
51
|
-
a7:58:ec:1b:a5:c3:29:1d:71:c1:dd:b0:8c:ac:1d:34:b3:24:
|
|
52
|
-
56:53:43:37:49:20:21:13:b3:1c:bc:d9:a3:e3:56:49:15:56:
|
|
53
|
-
40:51:6f:cf:9e:c1:c2:ad:08:67:b1:bd:a6:11:3b:35:65:06:
|
|
54
|
-
b3:ff:de:36:93:86:10:45:e9:36:0a:5b:26:f0:23:82:8f:83:
|
|
55
|
-
9f:1d:3f:be:ab:54:b3:f6:6c:7d:7b:67:6f:27:f7:f9:fa:30:
|
|
56
|
-
27:1e:70:e4:05:85:ac:ad:d8:a5:45:83:54:68:0a:1d:fa:c2:
|
|
57
|
-
05:46:41:d3:ad:a9:97:db:7a:fa:77:e1:0f:b0:29:09:da:15:
|
|
58
|
-
2c:f1:d4:0f:a4:ce:90:fe:54:23:20:5c:68:3d:3a:06:0e:83:
|
|
59
|
-
ab:3a:3e:43:84:2f:71:5f:d9:c8:29:d1:35:51:c2:c2:57:75:
|
|
60
|
-
8b:10:1e:cd:c0:8b:ca:b1:31:bb:5c:cf:03:52:05:f1:a8:0e:
|
|
61
|
-
bc:ca:ff:1a:7d:cf:22:fb:85:13:22:96:cb:dd:2b:00:68:5c:
|
|
62
|
-
ce:cd:d6:e7:5d:f1:fe:9e:60:07:7e:df:2d:d5:99:74:b3:90:
|
|
63
|
-
33:55:da:18:7c:83:31:80:59:b1:a5:53:2f:5c:f2:86:d1:6f:
|
|
64
|
-
eb:fe:68:5d:a3:0b:52:36:d8:77:40:24:fc:ed:5c:72:7a:23:
|
|
65
|
-
e5:2f:bb:6b
|
|
66
|
-
-----BEGIN CERTIFICATE-----
|
|
67
|
-
MIIFTjCCBDagAwIBAgICEA0wDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT
|
|
68
|
-
MRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMQ8wDQYDVQQHEwZCb3N0b24xGDAWBgNV
|
|
69
|
-
BAoTD0JyaWdodGNvdmUgSW5jLjEcMBoGA1UECxMTU3lzdGVtcyBFbmdpbmVlcmlu
|
|
70
|
-
ZzEkMCIGCSqGSIb3DQEJARYVc3lzZW5nQGJyaWdodGNvdmUuY29tMB4XDTE2MDEy
|
|
71
|
-
MjE1NDkxOVoXDTI2MDExOTE1NDkxOVowgZ4xCzAJBgNVBAYTAlVTMRYwFAYDVQQI
|
|
72
|
-
Ew1NYXNzYWNodXNldHRzMRgwFgYDVQQKEw9CcmlnaHRjb3ZlIEluYy4xHDAaBgNV
|
|
73
|
-
BAsTE1N5c3RlbXMgRW5naW5lZXJpbmcxGTAXBgNVBAMUECouYnJpZ2h0Y292ZS5j
|
|
74
|
-
b20xJDAiBgkqhkiG9w0BCQEWFXN5c2VuZ0BicmlnaHRjb3ZlLmNvbTCCASIwDQYJ
|
|
75
|
-
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMV5iO7DgSrxZvExSISqGAmDmgxPrqXO
|
|
76
|
-
k3D6jZU7fMAPGwaVGCXvfaH7uQgTbA9LiNV01svgY5qNe+zQ/t2qZ4uimZDofJEm
|
|
77
|
-
/+TgC/nhG6h5LC/GevmwJSrTo48r90nv0/LBCKNXbM4ARVXT20GVa2C8xrvYOrS3
|
|
78
|
-
LtYyfZo3Qi7YRHUiR7T5ExVGKfFpbqfajJrxtY6NsKs+KRVbR8mVv3wpEPjJH3jj
|
|
79
|
-
5xoksNqBJx2lZhrjxXssYVgYdqtjAKqcnPalTJA0KMEMbYP/8zlZa+t9l2aSNsYa
|
|
80
|
-
biDR1M7Q8RBzgdx3eZU/r91kLbUGf9YEV2iZBQBisYGy37i4fdi/e+UCAwEAAaOC
|
|
81
|
-
AZwwggGYMAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJh
|
|
82
|
-
dGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQljGSz9Um9ih9CmtZpnLQE/kuCwjCB
|
|
83
|
-
yQYDVR0jBIHBMIG+gBTR4KzeAYDblNopZg+pSBG/Yp9RnqGBmqSBlzCBlDELMAkG
|
|
84
|
-
A1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNVBAcTBkJvc3Rv
|
|
85
|
-
bjEYMBYGA1UEChMPQnJpZ2h0Y292ZSBJbmMuMRwwGgYDVQQLExNTeXN0ZW1zIEVu
|
|
86
|
-
Z2luZWVyaW5nMSQwIgYJKoZIhvcNAQkBFhVzeXNlbmdAYnJpZ2h0Y292ZS5jb22C
|
|
87
|
-
CQDCO5p3nGPeKzBlBgNVHREEXjBcghAqLmJyaWdodGNvdmUuY29tghMqLnFhLmJy
|
|
88
|
-
aWdodGNvdmUuY29tghkqLm9hdXRoLnFhLmJyaWdodGNvdmUuY29tghgqLnN0YWdp
|
|
89
|
-
bmcuYnJpZ2h0Y292ZS5jb20wCwYDVR0PBAQDAgXgMA0GCSqGSIb3DQEBCwUAA4IB
|
|
90
|
-
AQCnWOwbpcMpHXHB3bCMrB00syRWU0M3SSAhE7McvNmj41ZJFVZAUW/PnsHCrQhn
|
|
91
|
-
sb2mETs1ZQaz/942k4YQRek2Clsm8COCj4OfHT++q1Sz9mx9e2dvJ/f5+jAnHnDk
|
|
92
|
-
BYWsrdilRYNUaAod+sIFRkHTramX23r6d+EPsCkJ2hUs8dQPpM6Q/lQjIFxoPToG
|
|
93
|
-
DoOrOj5DhC9xX9nIKdE1UcLCV3WLEB7NwIvKsTG7XM8DUgXxqA68yv8afc8i+4UT
|
|
94
|
-
IpbL3SsAaFzOzdbnXfH+nmAHft8t1Zl0s5AzVdoYfIMxgFmxpVMvXPKG0W/r/mhd
|
|
95
|
-
owtSNth3QCT87VxyeiPlL7tr
|
|
96
|
-
-----END CERTIFICATE-----
|
package/jest/jest.setup.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
2
|
-
import 'jest-canvas-mock';
|
|
3
|
-
import ResizeObserver from 'resize-observer-polyfill';
|
|
4
|
-
|
|
5
|
-
// eslint-disable-next-line no-undef
|
|
6
|
-
jest.mock('js/hooks/useGetPlayers', () => {
|
|
7
|
-
// eslint-disable-next-line no-undef
|
|
8
|
-
return jest.fn().mockReturnValue({
|
|
9
|
-
isLoading: false,
|
|
10
|
-
data: {
|
|
11
|
-
items: [
|
|
12
|
-
{
|
|
13
|
-
account_id: 'test',
|
|
14
|
-
id: 'default',
|
|
15
|
-
name: 'default',
|
|
16
|
-
description: 'test',
|
|
17
|
-
branches: { master: { configuration: {} } },
|
|
18
|
-
created_at: 'test',
|
|
19
|
-
embed_count: 2,
|
|
20
|
-
url: 'test',
|
|
21
|
-
},
|
|
22
|
-
],
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
// eslint-disable-next-line no-undef
|
|
28
|
-
jest.mock('react-i18next', () => ({
|
|
29
|
-
useTranslation: () => {
|
|
30
|
-
return {
|
|
31
|
-
t: (str) => str,
|
|
32
|
-
i18n: {
|
|
33
|
-
changeLanguage: () =>
|
|
34
|
-
new Promise(() => {
|
|
35
|
-
return;
|
|
36
|
-
}),
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
},
|
|
40
|
-
initReactI18next: {
|
|
41
|
-
type: '3rdParty',
|
|
42
|
-
init: () => {
|
|
43
|
-
return;
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
Trans: () => '<div/>',
|
|
47
|
-
}));
|
|
48
|
-
|
|
49
|
-
const evaluateMediaQuery = (query) => {
|
|
50
|
-
const minWidth = /min-width:\s*(\d+)px/.exec(query);
|
|
51
|
-
const maxWidth = /max-width:\s*(\d+)px/.exec(query);
|
|
52
|
-
|
|
53
|
-
if (minWidth && window.innerWidth < Number(minWidth[1])) {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
if (maxWidth && window.innerWidth > Number(maxWidth[1])) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
return true;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const noop = () => {
|
|
63
|
-
return;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
window.matchMedia = (query) => ({
|
|
67
|
-
matches: evaluateMediaQuery(query),
|
|
68
|
-
media: query,
|
|
69
|
-
onchange: null,
|
|
70
|
-
addEventListener: noop,
|
|
71
|
-
removeEventListener: noop,
|
|
72
|
-
addListener: noop,
|
|
73
|
-
removeListener: noop,
|
|
74
|
-
dispatchEvent: () => false,
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
global.StudioModule = {
|
|
78
|
-
config: {
|
|
79
|
-
product: {
|
|
80
|
-
env: 'qa',
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
getCurrentUserAccount: () => {
|
|
84
|
-
return {
|
|
85
|
-
roles: [],
|
|
86
|
-
};
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
global.ResizeObserver = ResizeObserver;
|
package/jest/jest.stub.js
DELETED
package/jest.config.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
transform: {
|
|
3
|
-
'\\.(css|sass)$': '<rootDir>/jest/jest.stub.js',
|
|
4
|
-
'^.+\\.(t|j)sx?$': 'babel-jest',
|
|
5
|
-
},
|
|
6
|
-
moduleNameMapper: {
|
|
7
|
-
'^js/(.*)$': '<rootDir>/src/js/$1',
|
|
8
|
-
'^styles/(.*)$': '<rootDir>/src/styles/$1',
|
|
9
|
-
'^mocks/(.*)$': '<rootDir>/__mocks__/$1',
|
|
10
|
-
'^translations/(.*)$': '<rootDir>/src/translations/$1',
|
|
11
|
-
'\\.(css|sass)$': '<rootDir>/jest/jest.stub.js',
|
|
12
|
-
},
|
|
13
|
-
testPathIgnorePatterns : [
|
|
14
|
-
'./build/',
|
|
15
|
-
],
|
|
16
|
-
setupFilesAfterEnv: ['<rootDir>/jest/jest.setup.js'],
|
|
17
|
-
coveragePathIgnorePatterns: [
|
|
18
|
-
'/node_modules/',
|
|
19
|
-
'/jest/',
|
|
20
|
-
'/locales/',
|
|
21
|
-
'/styles/',
|
|
22
|
-
],
|
|
23
|
-
testEnvironment: 'jest-environment-jsdom',
|
|
24
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const pkg = require('../package.json');
|
|
4
|
-
|
|
5
|
-
const BUILD_DIR = path.resolve(__dirname, '..', 'build');
|
|
6
|
-
|
|
7
|
-
pkg.name = '@brightcove/components-embed-code-modal'
|
|
8
|
-
pkg.main = './index.js';
|
|
9
|
-
pkg.module = './index.js';
|
|
10
|
-
|
|
11
|
-
delete pkg.scripts.prepare;
|
|
12
|
-
delete pkg.scripts['lint:staged'];
|
|
13
|
-
delete pkg['lint-staged'];
|
|
14
|
-
|
|
15
|
-
fs.writeFileSync(
|
|
16
|
-
path.join(BUILD_DIR, 'package.json'),
|
|
17
|
-
JSON.stringify(pkg, null, 2)
|
|
18
|
-
);
|
package/src/index.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import EmbedCodeModal, { type EmbedCodeModalProps } from './js/EmbedCodeModal';
|
|
2
|
-
import {
|
|
3
|
-
type VideoPayload,
|
|
4
|
-
type PlayerPayload,
|
|
5
|
-
type ProjectPayload,
|
|
6
|
-
EmbedCodeModalTypes,
|
|
7
|
-
} from 'js/types/EmbedCodeModalProps';
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
EmbedCodeModal,
|
|
11
|
-
VideoPayload,
|
|
12
|
-
PlayerPayload,
|
|
13
|
-
ProjectPayload,
|
|
14
|
-
EmbedCodeModalTypes,
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export type { EmbedCodeModalProps };
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react';
|
|
2
|
-
|
|
3
|
-
import { I18nextProvider } from 'react-i18next';
|
|
4
|
-
import { initialize } from '@brightcove/studio-components';
|
|
5
|
-
import { QueryClient, QueryClientProvider } from 'react-query';
|
|
6
|
-
|
|
7
|
-
import { ModalContainer } from 'js/components';
|
|
8
|
-
|
|
9
|
-
import i18n from 'js/i18n';
|
|
10
|
-
import {
|
|
11
|
-
EmbedCodeModalTypes,
|
|
12
|
-
EmbedCodeProperties,
|
|
13
|
-
ModalDataPayload,
|
|
14
|
-
} from './types/EmbedCodeModalProps';
|
|
15
|
-
|
|
16
|
-
// Theme initialization moved inside component to support dynamic theme prop
|
|
17
|
-
|
|
18
|
-
const queryClient = new QueryClient();
|
|
19
|
-
|
|
20
|
-
export interface EmbedCodeModalProps {
|
|
21
|
-
data: ModalDataPayload;
|
|
22
|
-
language?: 'en' | 'es' | 'fr' | 'ko' | 'ja' | 'zh';
|
|
23
|
-
theme?: 'blueSteel' | 'prism';
|
|
24
|
-
embedCodeModalType?: EmbedCodeModalTypes;
|
|
25
|
-
// Parameters to be passed in case the the type is Player
|
|
26
|
-
embedCodeProperties?: EmbedCodeProperties;
|
|
27
|
-
isOutstreamPlayer?: boolean;
|
|
28
|
-
showDVR?: boolean;
|
|
29
|
-
onDVRClick?: (newValue: boolean) => void;
|
|
30
|
-
dvrTime?: number;
|
|
31
|
-
showLowLatency?: boolean;
|
|
32
|
-
onLowLatencyClick?: (newValue: boolean) => void;
|
|
33
|
-
ssai?: boolean;
|
|
34
|
-
adConfigOptions?: Array<{ label: string; value: string }>;
|
|
35
|
-
onAdConfigChange?: (value: string) => void;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const EmbedModal = ({
|
|
39
|
-
data,
|
|
40
|
-
language,
|
|
41
|
-
theme,
|
|
42
|
-
embedCodeModalType,
|
|
43
|
-
embedCodeProperties,
|
|
44
|
-
isOutstreamPlayer,
|
|
45
|
-
showDVR,
|
|
46
|
-
onDVRClick,
|
|
47
|
-
dvrTime,
|
|
48
|
-
showLowLatency,
|
|
49
|
-
onLowLatencyClick,
|
|
50
|
-
ssai,
|
|
51
|
-
adConfigOptions,
|
|
52
|
-
onAdConfigChange,
|
|
53
|
-
}: EmbedCodeModalProps) => {
|
|
54
|
-
const [componentKey, setComponentKey] = useState(0);
|
|
55
|
-
const [hasCreatedPlayer, setHasCreatedPlayer] = useState(false);
|
|
56
|
-
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
// Default to 'blueSteel' to maintain existing behavior
|
|
59
|
-
const studioComponentsTheme =
|
|
60
|
-
theme === 'prism' ? 'blueSteel' : theme || 'blueSteel';
|
|
61
|
-
initialize({ theme: studioComponentsTheme });
|
|
62
|
-
}, [theme]);
|
|
63
|
-
|
|
64
|
-
useEffect(() => {
|
|
65
|
-
i18n.changeLanguage(language || window.StudioModule.config.lang);
|
|
66
|
-
}, [language]);
|
|
67
|
-
|
|
68
|
-
const handleSetComponentKey = () => {
|
|
69
|
-
setComponentKey(componentKey + 1);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const handleSetHasCreatedPlayer = (value: boolean) => {
|
|
73
|
-
setHasCreatedPlayer(value);
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
// avoid calling anything if there is not data
|
|
77
|
-
return data ? (
|
|
78
|
-
<QueryClientProvider client={queryClient}>
|
|
79
|
-
<I18nextProvider i18n={i18n}>
|
|
80
|
-
<ModalContainer
|
|
81
|
-
key={componentKey}
|
|
82
|
-
handleSetComponentKey={handleSetComponentKey}
|
|
83
|
-
data={data}
|
|
84
|
-
language={language}
|
|
85
|
-
theme={theme}
|
|
86
|
-
embedCodeModalType={embedCodeModalType}
|
|
87
|
-
handleSetHasCreatedPlayer={handleSetHasCreatedPlayer}
|
|
88
|
-
hasCreatedPlayer={hasCreatedPlayer}
|
|
89
|
-
embedCodeProperties={embedCodeProperties}
|
|
90
|
-
isOutstreamPlayer={isOutstreamPlayer}
|
|
91
|
-
showDVR={showDVR}
|
|
92
|
-
onDVRClick={onDVRClick}
|
|
93
|
-
dvrTime={dvrTime}
|
|
94
|
-
showLowLatency={showLowLatency}
|
|
95
|
-
onLowLatencyClick={onLowLatencyClick}
|
|
96
|
-
ssai={ssai}
|
|
97
|
-
adConfigOptions={adConfigOptions}
|
|
98
|
-
onAdConfigChange={onAdConfigChange}
|
|
99
|
-
/>
|
|
100
|
-
</I18nextProvider>
|
|
101
|
-
</QueryClientProvider>
|
|
102
|
-
) : null;
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export default EmbedModal;
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
RadioGroup,
|
|
4
|
-
Select,
|
|
5
|
-
Input,
|
|
6
|
-
Icon,
|
|
7
|
-
ICONS,
|
|
8
|
-
Fadeable,
|
|
9
|
-
} from '@brightcove/studio-components';
|
|
10
|
-
import { useTranslation } from 'react-i18next';
|
|
11
|
-
|
|
12
|
-
import css from 'styles/CustomSettingsDropdown.sass';
|
|
13
|
-
import {
|
|
14
|
-
EmbedCodeAspectRatio,
|
|
15
|
-
EmbedCodeProperties,
|
|
16
|
-
EmbedCodeUnits,
|
|
17
|
-
} from 'js/types/EmbedCodeModalProps';
|
|
18
|
-
import {
|
|
19
|
-
calculateDimensions,
|
|
20
|
-
calculateHeight,
|
|
21
|
-
shouldUpdateWidth,
|
|
22
|
-
} from 'js/utils/dimensions';
|
|
23
|
-
|
|
24
|
-
export enum Sizing {
|
|
25
|
-
FIXED = 'Fixed',
|
|
26
|
-
RESPONSIVE = 'Responsive',
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export const CustomSettingsDropdown = ({
|
|
30
|
-
setEmbedProperties,
|
|
31
|
-
embedProperties,
|
|
32
|
-
}: {
|
|
33
|
-
embedProperties: EmbedCodeProperties;
|
|
34
|
-
setEmbedProperties: (value: EmbedCodeProperties) => void;
|
|
35
|
-
}) => {
|
|
36
|
-
const { t } = useTranslation();
|
|
37
|
-
const [isHidden, setIsHidden] = useState<boolean>(true);
|
|
38
|
-
const [prevAspectRatio, setPrevAspectRatio] = useState(
|
|
39
|
-
embedProperties.aspectRatio,
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
const handlePropertiesUpdate = (
|
|
43
|
-
name: string,
|
|
44
|
-
value: string | boolean | number,
|
|
45
|
-
) => {
|
|
46
|
-
if (name === 'aspectRatio') {
|
|
47
|
-
const calculateNewWidth = shouldUpdateWidth(
|
|
48
|
-
prevAspectRatio,
|
|
49
|
-
value as EmbedCodeAspectRatio,
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
setPrevAspectRatio(value as EmbedCodeAspectRatio);
|
|
53
|
-
|
|
54
|
-
const dimensions = calculateDimensions(
|
|
55
|
-
calculateNewWidth,
|
|
56
|
-
value as EmbedCodeAspectRatio,
|
|
57
|
-
embedProperties.width,
|
|
58
|
-
embedProperties.height,
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
setEmbedProperties({
|
|
62
|
-
...embedProperties,
|
|
63
|
-
aspectRatio: value as EmbedCodeAspectRatio,
|
|
64
|
-
width: dimensions.width as number,
|
|
65
|
-
height: dimensions.height,
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
return;
|
|
69
|
-
} else if (
|
|
70
|
-
name === 'width' &&
|
|
71
|
-
embedProperties.aspectRatio !== EmbedCodeAspectRatio.CUSTOM
|
|
72
|
-
) {
|
|
73
|
-
const height = calculateHeight(
|
|
74
|
-
value as number,
|
|
75
|
-
embedProperties.aspectRatio,
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
setEmbedProperties({
|
|
79
|
-
...embedProperties,
|
|
80
|
-
width: value as number,
|
|
81
|
-
height,
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
setEmbedProperties({
|
|
88
|
-
...embedProperties,
|
|
89
|
-
[name]: value,
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
return (
|
|
94
|
-
<div className={css.featuresDropdown}>
|
|
95
|
-
<div className={css.topArea} onClick={() => setIsHidden(!isHidden)}>
|
|
96
|
-
<div className={css.title}>Custom settings</div>
|
|
97
|
-
<div className={css.right}>
|
|
98
|
-
<div className={css.description}>Sizing & ratio</div>
|
|
99
|
-
<Icon
|
|
100
|
-
name={isHidden ? ICONS.CARET_DOWN : ICONS.CARET_UP}
|
|
101
|
-
className={css.icon}
|
|
102
|
-
/>
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
<Fadeable show={!isHidden} className={css.hiddenArea}>
|
|
106
|
-
<div className={css.hiddenAreaContainer}>
|
|
107
|
-
<RadioGroup
|
|
108
|
-
inline
|
|
109
|
-
name='sizing'
|
|
110
|
-
label={t('customSettings.sizing')}
|
|
111
|
-
value={
|
|
112
|
-
embedProperties.responsive ? Sizing.RESPONSIVE : Sizing.FIXED
|
|
113
|
-
}
|
|
114
|
-
options={[Sizing.FIXED, Sizing.RESPONSIVE]}
|
|
115
|
-
onChange={(value: string) =>
|
|
116
|
-
handlePropertiesUpdate('responsive', value === Sizing.RESPONSIVE)
|
|
117
|
-
}
|
|
118
|
-
testName='embed-sizing-radio-group'
|
|
119
|
-
/>
|
|
120
|
-
<Select
|
|
121
|
-
label={t('customSettings.aspectRatio')}
|
|
122
|
-
value={embedProperties.aspectRatio}
|
|
123
|
-
options={[
|
|
124
|
-
EmbedCodeAspectRatio.SIXTEEN_NINE,
|
|
125
|
-
EmbedCodeAspectRatio.NINE_SIXTEEN,
|
|
126
|
-
EmbedCodeAspectRatio.ONE_ONE,
|
|
127
|
-
EmbedCodeAspectRatio.FOUR_THREE,
|
|
128
|
-
EmbedCodeAspectRatio.CUSTOM,
|
|
129
|
-
]}
|
|
130
|
-
className={css.aspectRatioSelect}
|
|
131
|
-
onChange={(value: string) =>
|
|
132
|
-
handlePropertiesUpdate('aspectRatio', value)
|
|
133
|
-
}
|
|
134
|
-
testName='embed-aspect-ratio-select'
|
|
135
|
-
/>
|
|
136
|
-
<div className={css.sizeEdit}>
|
|
137
|
-
<Input
|
|
138
|
-
label={t('customSettings.playerWidth')}
|
|
139
|
-
value={embedProperties.width}
|
|
140
|
-
onChange={(value: string) =>
|
|
141
|
-
handlePropertiesUpdate('width', value)
|
|
142
|
-
}
|
|
143
|
-
error={
|
|
144
|
-
embedProperties.width <= 0
|
|
145
|
-
? 'Can only be positive integers'
|
|
146
|
-
: ''
|
|
147
|
-
}
|
|
148
|
-
testName='embed-width-input'
|
|
149
|
-
/>
|
|
150
|
-
<Input
|
|
151
|
-
label={t('customSettings.playerHeight')}
|
|
152
|
-
value={embedProperties.height}
|
|
153
|
-
onChange={(value: string) =>
|
|
154
|
-
handlePropertiesUpdate('height', value)
|
|
155
|
-
}
|
|
156
|
-
disabled={
|
|
157
|
-
embedProperties.aspectRatio !== EmbedCodeAspectRatio.CUSTOM
|
|
158
|
-
}
|
|
159
|
-
error={
|
|
160
|
-
embedProperties.height <= 0
|
|
161
|
-
? 'Can only be positive integers'
|
|
162
|
-
: ''
|
|
163
|
-
}
|
|
164
|
-
testName='embed-height-input'
|
|
165
|
-
/>
|
|
166
|
-
<Select
|
|
167
|
-
label={t('customSettings.units')}
|
|
168
|
-
value={embedProperties.units}
|
|
169
|
-
options={[
|
|
170
|
-
EmbedCodeUnits.PX,
|
|
171
|
-
EmbedCodeUnits.EM,
|
|
172
|
-
EmbedCodeUnits.PERCENT,
|
|
173
|
-
]}
|
|
174
|
-
onChange={(value: string) =>
|
|
175
|
-
handlePropertiesUpdate('units', value)
|
|
176
|
-
}
|
|
177
|
-
testName='embed-units-select'
|
|
178
|
-
/>
|
|
179
|
-
</div>
|
|
180
|
-
</div>
|
|
181
|
-
</Fadeable>
|
|
182
|
-
</div>
|
|
183
|
-
);
|
|
184
|
-
};
|