ひとつの投稿内で使えるそれぞれの動きのあるMFM構文は3回までに制限

This commit is contained in:
syuilo 2018-08-05 19:36:19 +09:00
parent 5bbc95d659
commit 6ef28214df

View file

@ -41,6 +41,9 @@ export default Vue.component('misskey-flavored-markdown', {
ast = this.ast; ast = this.ast;
} }
let bigCount = 0;
let motionCount = 0;
// Parse ast to DOM // Parse ast to DOM
const els = flatten(ast.map(token => { const els = flatten(ast.map(token => {
switch (token.type) { switch (token.type) {
@ -62,12 +65,14 @@ export default Vue.component('misskey-flavored-markdown', {
} }
case 'big': { case 'big': {
bigCount++;
const isLong = length(token.big) > 10; const isLong = length(token.big) > 10;
const isMany = bigCount > 3;
return (createElement as any)('strong', { return (createElement as any)('strong', {
attrs: { attrs: {
style: 'display: inline-block; font-size: 200%;' style: `display: inline-block; font-size: ${ isMany ? '100%' : '200%' };`
}, },
directives: [this.$store.state.settings.disableAnimatedMfm || isLong ? {} : { directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
name: 'animate-css', name: 'animate-css',
value: { classes: 'tada', iteration: 'infinite' } value: { classes: 'tada', iteration: 'infinite' }
}] }]
@ -75,12 +80,14 @@ export default Vue.component('misskey-flavored-markdown', {
} }
case 'motion': { case 'motion': {
motionCount++;
const isLong = length(token.motion) > 10; const isLong = length(token.motion) > 10;
const isMany = motionCount > 3;
return (createElement as any)('span', { return (createElement as any)('span', {
attrs: { attrs: {
style: 'display: inline-block;' style: 'display: inline-block;'
}, },
directives: [this.$store.state.settings.disableAnimatedMfm || isLong ? {} : { directives: [this.$store.state.settings.disableAnimatedMfm || isLong || isMany ? {} : {
name: 'animate-css', name: 'animate-css',
value: { classes: 'rubberBand', iteration: 'infinite' } value: { classes: 'rubberBand', iteration: 'infinite' }
}] }]