diff --git a/package.json b/package.json index 2c5c9154ee..a31b172e4a 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dependencies": { "@emotion/react": "11.11.1", "@emotion/styled": "11.11.0", + "@vidstack/react": "^1.12.12", "core-js": "3.7.0", "lodash": "^4.17.5", "react": "18.3.1", @@ -86,6 +87,7 @@ "prettier": "^2.8.7", "react-test-renderer": "18.3.1", "storybook": "^8.3.6", + "style-loader": "^4.0.0", "svgo": "^1.3.2", "syncpack": "^10.9.3", "ts-jest": "29.1.1", diff --git a/packages/gamut-icons/src/svg/mini/mini-accessibility-icon.svg b/packages/gamut-icons/src/svg/mini/mini-accessibility-icon.svg new file mode 100644 index 0000000000..cc5612ef7d --- /dev/null +++ b/packages/gamut-icons/src/svg/mini/mini-accessibility-icon.svg @@ -0,0 +1,3 @@ + +accessibility + \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/mini/mini-audio-description-icon.svg b/packages/gamut-icons/src/svg/mini/mini-audio-description-icon.svg new file mode 100644 index 0000000000..b136e6c222 --- /dev/null +++ b/packages/gamut-icons/src/svg/mini/mini-audio-description-icon.svg @@ -0,0 +1,2 @@ + +audio-description \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/mini/mini-close-captioning-icon.svg b/packages/gamut-icons/src/svg/mini/mini-close-captioning-icon.svg new file mode 100644 index 0000000000..cf90ca78e6 --- /dev/null +++ b/packages/gamut-icons/src/svg/mini/mini-close-captioning-icon.svg @@ -0,0 +1,2 @@ + +close-captioning \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/mini/mini-live-video-icon.svg b/packages/gamut-icons/src/svg/mini/mini-live-video-icon.svg new file mode 100644 index 0000000000..b6148c90bf --- /dev/null +++ b/packages/gamut-icons/src/svg/mini/mini-live-video-icon.svg @@ -0,0 +1,2 @@ + +live-video \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/closed-caption-disabled-icon.svg b/packages/gamut-icons/src/svg/regular/closed-caption-disabled-icon.svg new file mode 100644 index 0000000000..fff3d47a7e --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/closed-caption-disabled-icon.svg @@ -0,0 +1,4 @@ + +closed-caption-disabled + + \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/closed-caption-icon.svg b/packages/gamut-icons/src/svg/regular/closed-caption-icon.svg new file mode 100644 index 0000000000..9897ea5cc8 --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/closed-caption-icon.svg @@ -0,0 +1,3 @@ + +closed-caption + \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/pip-exit-icon.svg b/packages/gamut-icons/src/svg/regular/pip-exit-icon.svg new file mode 100644 index 0000000000..80866dfbaa --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/pip-exit-icon.svg @@ -0,0 +1,3 @@ + +pip-exit + \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/pip-icon.svg b/packages/gamut-icons/src/svg/regular/pip-icon.svg new file mode 100644 index 0000000000..6b78687b3b --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/pip-icon.svg @@ -0,0 +1,2 @@ + +pip \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/timer-10-icon.svg b/packages/gamut-icons/src/svg/regular/timer-10-icon.svg new file mode 100644 index 0000000000..acd57b24ff --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/timer-10-icon.svg @@ -0,0 +1,2 @@ + +timer-10 \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/volume-control-full-icon.svg b/packages/gamut-icons/src/svg/regular/volume-control-full-icon.svg new file mode 100644 index 0000000000..83bb534d85 --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/volume-control-full-icon.svg @@ -0,0 +1,4 @@ + + +volume-control-full + \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/volume-control-medium-icon.svg b/packages/gamut-icons/src/svg/regular/volume-control-medium-icon.svg new file mode 100644 index 0000000000..c443e8d648 --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/volume-control-medium-icon.svg @@ -0,0 +1,2 @@ + +volume-control-medium \ No newline at end of file diff --git a/packages/gamut-icons/src/svg/regular/volume-control-mute-icon.svg b/packages/gamut-icons/src/svg/regular/volume-control-mute-icon.svg new file mode 100644 index 0000000000..d63da4854d --- /dev/null +++ b/packages/gamut-icons/src/svg/regular/volume-control-mute-icon.svg @@ -0,0 +1,2 @@ + +volume-control-mute \ No newline at end of file diff --git a/packages/gamut/jest.config.ts b/packages/gamut/jest.config.ts index 4c754b1fbb..89cacf4d8c 100644 --- a/packages/gamut/jest.config.ts +++ b/packages/gamut/jest.config.ts @@ -8,4 +8,5 @@ export default base('gamut', { setupFiles: ['/../../script/jest/base-setup.js'], setupFilesAfterEnv: ['/../../script/jest/rtl-setup.js'], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transformIgnorePatterns: ['node_modules/(?!(@vidstack/react)/)'], }); diff --git a/packages/gamut/package.json b/packages/gamut/package.json index 2f463b0a93..b1ce27ba68 100644 --- a/packages/gamut/package.json +++ b/packages/gamut/package.json @@ -25,7 +25,8 @@ "react-select": "^5.2.2", "react-truncate-markup": "^5.1.2", "react-use": "^15.3.8", - "sanitize-markdown": "^2.6.7" + "sanitize-markdown": "^2.6.7", + "@vidstack/react": "^1.12.12" }, "files": [ "dist" diff --git a/packages/gamut/src/Markdown/__tests__/Markdown.test.tsx b/packages/gamut/src/Markdown/__tests__/Markdown.test.tsx index 3bc4705e62..1885d8ab62 100644 --- a/packages/gamut/src/Markdown/__tests__/Markdown.test.tsx +++ b/packages/gamut/src/Markdown/__tests__/Markdown.test.tsx @@ -13,6 +13,15 @@ jest.mock('react-player', () => ({ __esModule: true, default: () =>
- - + ### Video `video`s with an `src` or a `source` video file will be rendered by our Video component, otherwise they'll render the original code. Videos with a `style` prop or another restricted prop will be stripped of that property. +Insert `track` to add subtitles / captions to the video. - + diff --git a/yarn.lock b/yarn.lock index 393aafe53d..f1036a8d80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1541,6 +1541,14 @@ "@floating-ui/core" "^1.6.0" "@floating-ui/utils" "^0.2.8" +"@floating-ui/dom@^1.6.10": + version "1.6.12" + resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz#6333dcb5a8ead3b2bf82f33d6bc410e95f54e556" + integrity sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + "@floating-ui/utils@^0.2.8": version "0.2.8" resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" @@ -3997,6 +4005,14 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@vidstack/react@^1.12.12": + version "1.12.12" + resolved "https://registry.npmjs.org/@vidstack/react/-/react-1.12.12.tgz#abf8b794edb461bc4b7de6e97be355a19d75e102" + integrity sha512-rEwCkZdp/K0FopUU76lgYJqzOZa3AGM2FumQnTPPSCP9jwShYReY9mXgl4/UP5CH3v7MkaVl5ZT67rhfjPxx9Q== + dependencies: + "@floating-ui/dom" "^1.6.10" + media-captions "^1.0.4" + "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" @@ -7674,12 +7690,12 @@ fraction.js@^4.3.7: integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== framer-motion@^11.18.0: - version "11.18.0" - resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.0.tgz#574f311dd91333fad59214cc8e2dee0f5bab99c4" - integrity sha512-Vmjl5Al7XqKHzDFnVqzi1H9hzn5w4eN/bdqXTymVpU2UuMQuz9w6UPdsL9dFBeH7loBlnu4qcEXME+nvbkcIOw== + version "11.18.2" + resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz#0c6bd05677f4cfd3b3bdead4eb5ecdd5ed245718" + integrity sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w== dependencies: - motion-dom "^11.16.4" - motion-utils "^11.16.0" + motion-dom "^11.18.1" + motion-utils "^11.18.1" tslib "^2.4.0" fresh@0.5.2: @@ -10282,6 +10298,11 @@ mdn-data@2.0.4: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +media-captions@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/media-captions/-/media-captions-1.0.4.tgz#aaacb6a554f7549fc7308b6b7cf766686cf42fad" + integrity sha512-cyDNmuZvvO4H27rcBq2Eudxo9IZRDCOX/I7VEyqbxsEiD2Ei7UYUhG/Sc5fvMZjmathgz3fEK7iAKqvpY+Ux1w== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -10592,17 +10613,17 @@ modify-values@^1.0.0, modify-values@^1.0.1: resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -motion-dom@^11.16.4: - version "11.16.4" - resolved "https://registry.npmjs.org/motion-dom/-/motion-dom-11.16.4.tgz#7c18dbe8f8b0d4210a89992cda30f5926f003777" - integrity sha512-2wuCie206pCiP2K23uvwJeci4pMFfyQKpWI0Vy6HrCTDzDCer4TsYtT7IVnuGbDeoIV37UuZiUr6SZMHEc1Vww== +motion-dom@^11.18.1: + version "11.18.1" + resolved "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz#e7fed7b7dc6ae1223ef1cce29ee54bec826dc3f2" + integrity sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw== dependencies: - motion-utils "^11.16.0" + motion-utils "^11.18.1" -motion-utils@^11.16.0: - version "11.16.0" - resolved "https://registry.npmjs.org/motion-utils/-/motion-utils-11.16.0.tgz#e75865442278be49e411ca9105c9139edc572811" - integrity sha512-ngdWPjg31rD4WGXFi0eZ00DQQqKKu04QExyv/ymlC+3k+WIgYVFbt6gS5JsFPbJODTF/r8XiE/X+SsoT9c0ocw== +motion-utils@^11.18.1: + version "11.18.1" + resolved "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz#671227669833e991c55813cf337899f41327db5b" + integrity sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA== ms@2.0.0: version "2.0.0" @@ -13544,16 +13565,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13657,14 +13669,7 @@ stringify-entities@^3.0.0: character-entities-legacy "^1.0.0" xtend "^4.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13743,6 +13748,11 @@ style-loader@^3.3.0, style-loader@^3.3.1: resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== +style-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz#0ea96e468f43c69600011e0589cb05c44f3b17a5" + integrity sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA== + stylehacks@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" @@ -15038,7 +15048,7 @@ wordwrap@^1.0.0: resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -15056,15 +15066,6 @@ wrap-ansi@^6.0.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"