summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorFineArchs <133759614+FineArchs@users.noreply.github.com>2024-01-13 21:17:00 +0900
committerGitHub <noreply@github.com>2024-01-13 21:17:00 +0900
commitbc8a741e14767fad081a08f470d757714d67560e (patch)
tree4cb4352eda3e15388a226f9378a7ccf5be88bacb /packages/frontend/src/components
parentenhance(drop-and-fusion): refactor and new mode(wip) (diff)
downloadmisskey-bc8a741e14767fad081a08f470d757714d67560e.tar.gz
misskey-bc8a741e14767fad081a08f470d757714d67560e.tar.bz2
misskey-bc8a741e14767fad081a08f470d757714d67560e.zip
feat: 枠線をつけるMFMを追加 (#12981)
* Update MkMisskeyFlavoredMarkdown.ts * Update const.ts * Update MkMisskeyFlavoredMarkdown.ts * Update MkMisskeyFlavoredMarkdown.ts * Update CHANGELOG.md
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts28
1 files changed, 23 insertions, 5 deletions
diff --git a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts
index 650c79dff7..f55069200d 100644
--- a/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts
+++ b/packages/frontend/src/components/global/MkMisskeyFlavoredMarkdown.ts
@@ -61,7 +61,12 @@ export default function(props: MfmProps, context: SetupContext<MfmEvents>) {
if (t == null) return null;
return t.match(/^[0-9.]+s$/) ? t : null;
};
-
+
+ const validColor = (c: string | null | undefined): string | null => {
+ if (c == null) return null;
+ return c.match(/^[0-9a-f]{3,6}$/i) ? c : null;
+ };
+
const useAnim = defaultStore.state.advancedMfm && defaultStore.state.animatedMfm;
/**
@@ -240,17 +245,30 @@ export default function(props: MfmProps, context: SetupContext<MfmEvents>) {
break;
}
case 'fg': {
- let color = token.props.args.color;
- if (!/^[0-9a-f]{3,6}$/i.test(color)) color = 'f00';
+ let color = validColor(token.props.args.color);
+ color = color ?? 'f00';
style = `color: #${color}; overflow-wrap: anywhere;`;
break;
}
case 'bg': {
- let color = token.props.args.color;
- if (!/^[0-9a-f]{3,6}$/i.test(color)) color = 'f00';
+ let color = validColor(token.props.args.color);
+ color = color ?? 'f00';
style = `background-color: #${color}; overflow-wrap: anywhere;`;
break;
}
+ case 'border': {
+ let color = validColor(token.props.args.color);
+ color = color ? `#${color}` : 'var(--accent)';
+ let b_style = token.props.args.style;
+ if (
+ !['hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset']
+ .includes(b_style)
+ ) b_style = 'solid';
+ const width = parseFloat(token.props.args.width ?? '1');
+ const radius = parseFloat(token.props.args.radius ?? '0');
+ style = `border: ${width}px ${b_style} ${color}; border-radius: ${radius}px`;
+ break;
+ }
case 'ruby': {
if (token.children.length === 1) {
const child = token.children[0];