Compare commits

...

2 Commits

Author SHA1 Message Date
semantic-release-bot
ea2e072085 chore(release): 0.9.0 [CI SKIP] 2022-06-09 01:59:56 +00:00
AAGaming
6324282b48 feat(custom-components): add SuspensefulImage 2022-06-08 21:59:12 -04:00
5 changed files with 53 additions and 1 deletions

View File

@@ -1,3 +1,10 @@
# [0.9.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.8.0...v0.9.0) (2022-06-09)
### Features
* **custom-components:** add SuspensefulImage ([6324282](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/6324282b480f358a3d5936ab6d08ab239d640997))
# [0.8.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v0.7.2...v0.8.0) (2022-06-09)

View File

@@ -1,6 +1,6 @@
{
"name": "decky-frontend-lib",
"version": "0.8.0",
"version": "0.9.0",
"description": "A library for building decky plugins",
"main": "dist/index.js",
"types": "dist/index.d.ts",

View File

@@ -0,0 +1,43 @@
import { Spinner } from '../deck-components';
import { useEffect } from 'react';
import { FC, ImgHTMLAttributes, useState } from 'react';
interface SuspensefulImageProps extends ImgHTMLAttributes<HTMLImageElement> {
suspenseWidth?: string | number;
suspenseHeight?: string | number;
}
const SuspensefulImage: FC<SuspensefulImageProps> = (props) => {
const [loading, setLoading] = useState(true);
const [error, setError] = useState(false);
useEffect(() => {
const img = new Image();
img.src = props.src || '';
img.addEventListener('load', () => {
setLoading(false);
});
img.addEventListener('error', () => {
setError(true);
});
}, []);
return loading ? (
<div
style={{
width: props.suspenseWidth || props.style?.width,
height: props.suspenseHeight || props.style?.height,
background: 'rgba(255, 255, 255, 0.2)',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
}}
>
{error ? 'Missing image' : <Spinner style={{ height: '48px' }} />}
</div>
) : (
<img {...props} />
);
};
export default SuspensefulImage;

View File

@@ -0,0 +1 @@
export * from './SuspensefulImage';

View File

@@ -1,4 +1,5 @@
// export * from './deck-libs';
export * from './custom-components';
export * from './deck-components';
export * from './plugin';
export * from './webpack';