summaryrefslogtreecommitdiff
path: root/src/client/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/components')
-rw-r--r--src/client/components/mfm.ts13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/client/components/mfm.ts b/src/client/components/mfm.ts
index 1590e29142..bca469a159 100644
--- a/src/client/components/mfm.ts
+++ b/src/client/components/mfm.ts
@@ -48,6 +48,11 @@ export default defineComponent({
const ast = (this.plain ? parsePlain : parse)(this.text);
+ const validTime = (t: string | null | undefined) => {
+ if (t == null) return null;
+ return t.match(/^[0-9.]+s$/) ? t : null;
+ };
+
const genEl = (ast: MfmForest) => concat(ast.map((token): VNode[] => {
switch (token.node.type) {
case 'text': {
@@ -86,17 +91,17 @@ export default defineComponent({
break;
}
case 'jelly': {
- const speed = token.node.props.args.speed || '1s';
+ const speed = validTime(token.node.props.args.speed) || '1s';
style = (this.$store.state.animatedMfm ? `animation: mfm-rubberBand ${speed} linear infinite both;` : '');
break;
}
case 'twitch': {
- const speed = token.node.props.args.speed || '0.5s';
+ const speed = validTime(token.node.props.args.speed) || '0.5s';
style = this.$store.state.animatedMfm ? `animation: mfm-twitch ${speed} ease infinite;` : '';
break;
}
case 'shake': {
- const speed = token.node.props.args.speed || '0.5s';
+ const speed = validTime(token.node.props.args.speed) || '0.5s';
style = this.$store.state.animatedMfm ? `animation: mfm-shake ${speed} ease infinite;` : '';
break;
}
@@ -109,7 +114,7 @@ export default defineComponent({
token.node.props.args.x ? 'mfm-spinX' :
token.node.props.args.y ? 'mfm-spinY' :
'mfm-spin';
- const speed = token.node.props.args.speed || '1.5s';
+ const speed = validTime(token.node.props.args.speed) || '1.5s';
style = this.$store.state.animatedMfm ? `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};` : '';
break;
}