Spaces:
Runtime error
Runtime error
File size: 2,737 Bytes
92189dd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import LoadingStateScreen from '@/common/loading/LoadingStateScreen';
import DemoPage from '@/routes/DemoPage';
import stylex from '@stylexjs/stylex';
import {isFirefox} from 'react-device-detect';
const styles = stylex.create({
link: {
textDecorationLine: 'underline',
color: '#A7B3BF',
},
});
const REQUIRED_WINDOW_APIS = ['VideoEncoder', 'VideoDecoder', 'VideoFrame'];
function isBrowserSupported() {
for (const api of REQUIRED_WINDOW_APIS) {
if (!(api in window)) {
return false;
}
}
// Test if transferControlToOffscreen is supported. For example, this will
// fail on iOS version < 16.4
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen
const canvas = document.createElement('canvas');
if (typeof canvas.transferControlToOffscreen !== 'function') {
return false;
}
return true;
}
export default function DemoPageWrapper() {
const isBrowserUnsupported = !isBrowserSupported();
if (isBrowserUnsupported && isFirefox) {
const nightlyUrl = 'https://wiki.mozilla.org/Nightly';
return (
<LoadingStateScreen
title="Sorry Firefox!"
description={
<div>
This version of Firefox doesn’t support the video features we’ll
need to run this demo. You can either update Firefox to the latest
nightly build{' '}
<a
{...stylex.props(styles.link)}
href={nightlyUrl}
target="_blank"
rel="noreferrer">
here
</a>
, or try again using Chrome or Safari.
</div>
}
linkProps={{to: '..', label: 'Back to homepage'}}
/>
);
}
if (isBrowserUnsupported) {
return (
<LoadingStateScreen
title="Uh oh, this browser isn’t supported."
description="This browser doesn’t support the video features we’ll need to run this demo. Try again using Chrome, Safari, or Firefox Nightly."
linkProps={{to: '..', label: 'Back to homepage'}}
/>
);
}
return <DemoPage />;
}
|