diff options
| author | Leah <kevinlukej@gmail.com> | 2024-05-23 21:40:25 +0000 |
|---|---|---|
| committer | Amelia Yukii <amelia.yukii@shourai.de> | 2024-05-23 21:40:25 +0000 |
| commit | f9a7cd0daa869b23b100f6d32e71f0faaa7873fc (patch) | |
| tree | 852c6ec825ee817d98abce4cee5cace9bb858632 /packages/frontend/src/components/global | |
| parent | merge: Ported cutiekeys followmouse mfm (!524) (diff) | |
| download | sharkey-f9a7cd0daa869b23b100f6d32e71f0faaa7873fc.tar.gz sharkey-f9a7cd0daa869b23b100f6d32e71f0faaa7873fc.tar.bz2 sharkey-f9a7cd0daa869b23b100f6d32e71f0faaa7873fc.zip | |
Ported firefish crop and fade mfm
Diffstat (limited to 'packages/frontend/src/components/global')
| -rw-r--r-- | packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts index 2f699ccd84..69fe41e2d5 100644 --- a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts +++ b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts @@ -228,6 +228,22 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven } return h(MkSparkle, {}, genEl(token.children, scale)); } + case 'fade': { + // Dont run with reduced motion on + if (!defaultStore.state.animation) { + style = ''; + break; + } + + const direction = token.props.args.out + ? 'alternate-reverse' + : 'alternate'; + const speed = validTime(token.props.args.speed) ?? '1.5s'; + const delay = validTime(token.props.args.delay) ?? '0s'; + const loop = safeParseFloat(token.props.args.loop) ?? 'infinite'; + style = `animation: mfm-fade ${speed} ${delay} linear ${loop}; animation-direction: ${direction};`; + break; + } case 'rotate': { const degrees = safeParseFloat(token.props.args.deg) ?? 90; style = `transform: rotate(${degrees}deg); transform-origin: center center;`; @@ -262,6 +278,22 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven style = `transform: translateX(${x}em) translateY(${y}em);`; break; } + case 'crop': { + const top = Number.parseFloat( + (token.props.args.top ?? '0').toString(), + ); + const right = Number.parseFloat( + (token.props.args.right ?? '0').toString(), + ); + const bottom = Number.parseFloat( + (token.props.args.bottom ?? '0').toString(), + ); + const left = Number.parseFloat( + (token.props.args.left ?? '0').toString(), + ); + style = `clip-path: inset(${top}% ${right}% ${bottom}% ${left}%);`; + break; + } case 'scale': { if (!defaultStore.state.advancedMfm) { style = ''; |