From bb6cd258f3b811cd10bdd2618af7e24c65d2549b Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 24 Mar 2021 12:23:05 +0900 Subject: syuilo/misskey --> misskey-dev/misskey --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package.json') diff --git a/package.json b/package.json index ba41f0ddf5..94915dc78b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "codename": "indigo", "repository": { "type": "git", - "url": "https://github.com/syuilo/misskey.git" + "url": "https://github.com/misskey-dev/misskey.git" }, "main": "./index.js", "private": true, -- cgit v1.2.3-freya From 2210d1053a52e469273559836745f203f5ef92ff Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 27 Mar 2021 11:08:15 +0900 Subject: Update vue --- package.json | 4 +-- yarn.lock | 115 +++++++++++++++++++++++++++++++---------------------------- 2 files changed, 62 insertions(+), 57 deletions(-) (limited to 'package.json') diff --git a/package.json b/package.json index 94915dc78b..90a80cdad3 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "@types/websocket": "1.0.2", "@types/ws": "7.4.0", "@typescript-eslint/parser": "4.18.0", - "@vue/compiler-sfc": "3.0.7", + "@vue/compiler-sfc": "3.0.8", "abort-controller": "3.0.0", "apexcharts": "3.26.0", "autobind-decorator": "2.4.0", @@ -245,7 +245,7 @@ "uuid": "8.3.2", "v-debounce": "0.1.2", "vanilla-tilt": "1.7.0", - "vue": "3.0.7", + "vue": "3.0.8", "vue-color": "2.8.1", "vue-json-pretty": "1.7.1", "vue-loader": "16.1.2", diff --git a/yarn.lock b/yarn.lock index 398c51f3c4..c85ab3b9c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -113,6 +113,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99" integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw== +"@babel/parser@^7.13.9": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df" + integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw== + "@babel/plugin-transform-runtime@7.13.10": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz#a1e40d22e2bf570c591c9c7e5ab42d6bf1e419e1" @@ -1200,36 +1205,36 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@vue/compiler-core@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.7.tgz#421782a4c67cc3f2b7c30457ef446d74f8524f74" - integrity sha512-JFohgBXoyUc3mdeI2WxlhjQZ5fakfemJkZHX8Gu/nFbEg3+lKVUZmNKWmmnp9aOzJQZKoj77LjmFxiP+P+7lMQ== +"@vue/compiler-core@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.8.tgz#8e24a63877232f7c5d00e97201609da7de1a3191" + integrity sha512-TFusP6wemgJPgmXyxHiYshtYci1PdAjX0bOSJqxPDXf2ykojRGq9RcTKj85b1fWyC9fnT5HK73OHe6rqZUa8vA== dependencies: "@babel/parser" "^7.12.0" "@babel/types" "^7.12.0" - "@vue/shared" "3.0.7" + "@vue/shared" "3.0.8" estree-walker "^2.0.1" source-map "^0.6.1" -"@vue/compiler-dom@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.7.tgz#54d2e12fb9a7aff53abd19dac2c2679533f0c919" - integrity sha512-VnIH9EbWQm/Tkcp+8dCaNVsVvhm/vxCrIKWRkXY9215hTqOqQOvejT8IMjd2kc++nIsYMsdQk6H9qqBvoLe/Cw== +"@vue/compiler-dom@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.8.tgz#97b1a56998472247b8944b6ef71dacbdd708eb6c" + integrity sha512-uMUtpFqWOXlbnV167ihPJehVa/84k5xfTrYHJh2bqKaSL7sA2b1bkhFjTXAfOss9LcrGnQSk/CjOPZGZfExEVw== dependencies: - "@vue/compiler-core" "3.0.7" - "@vue/shared" "3.0.7" + "@vue/compiler-core" "3.0.8" + "@vue/shared" "3.0.8" -"@vue/compiler-sfc@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.7.tgz#900414750cc726553b870490f48073451fd14f07" - integrity sha512-37/QILpGE+J3V+bP9Slg9e6xGqfk+MmS2Yj8ChR4fS0/qWUU/YoYHE0GPIzjmBdH0JVOOmJqunxowIXmqNiHng== +"@vue/compiler-sfc@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.8.tgz#f3515814708895406c5215329c57f30571e39f01" + integrity sha512-KDSvOVopKwwxdVlktkUlCYv2KUvJz/2sgkflb1LmqSSNMwQ1Yso934fNstd4Su0u25JIYl1piqISBIcBnxtFBA== dependencies: - "@babel/parser" "^7.12.0" - "@babel/types" "^7.12.0" - "@vue/compiler-core" "3.0.7" - "@vue/compiler-dom" "3.0.7" - "@vue/compiler-ssr" "3.0.7" - "@vue/shared" "3.0.7" + "@babel/parser" "^7.13.9" + "@babel/types" "^7.13.0" + "@vue/compiler-core" "3.0.8" + "@vue/compiler-dom" "3.0.8" + "@vue/compiler-ssr" "3.0.8" + "@vue/shared" "3.0.8" consolidate "^0.16.0" estree-walker "^2.0.1" hash-sum "^2.0.0" @@ -1241,42 +1246,42 @@ postcss-selector-parser "^6.0.4" source-map "^0.6.1" -"@vue/compiler-ssr@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.7.tgz#28b85d497381d75fe44234057b140b0065ca9dbf" - integrity sha512-nHRbHeSpfXwjypettjrA16TjgfDcPEwq3m/zHnGyLC1QqdLtklXmpSM43/CPwwTCRa/qdt0pldJf22MiCEuTSQ== +"@vue/compiler-ssr@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.8.tgz#2be3221c82873c47a9d71311efe19f8de0f459aa" + integrity sha512-9xQO9IOK3B+7jCPIkqe8MmoRd17UxDvyjnsGXQfMkGrK+eONPB5/Ic6b1P2oZTXuTI2IAdnXnwDWXBSB6Cphag== dependencies: - "@vue/compiler-dom" "3.0.7" - "@vue/shared" "3.0.7" + "@vue/compiler-dom" "3.0.8" + "@vue/shared" "3.0.8" -"@vue/reactivity@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.7.tgz#e6ccc7bef7fc10b0972e4d974bad71679d3b26ad" - integrity sha512-FotWcNNaKhqpFZrdgsUOZ1enlJ5lhTt01CNTtLSyK7jYFgZBTuw8vKsEutZKDYZ1XKotOfoeO8N3pZQqmM6Etw== +"@vue/reactivity@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.8.tgz#c09afb698af2fc30fe47d2a9a918e7262e59288a" + integrity sha512-W0oEQ005rUa6r1Rq/fEw/Nx3FN+AoAYV2Kf+qI8RGOXHYuUdgVEf//o0UUmlT7ocnniOEf46l+eLfgvilWYJoA== dependencies: - "@vue/shared" "3.0.7" + "@vue/shared" "3.0.8" -"@vue/runtime-core@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.7.tgz#d44c0b0a57d7e392912a87362a4430ccf446ecea" - integrity sha512-DBAZAwVvdmMXuyd6/9qqj/kYr/GaLTmn1L2/QLxLwP+UfhIboiTSBc/tUUb8MRk7Bb98GzNeAWkkT6AfooS3dQ== +"@vue/runtime-core@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.8.tgz#d17860ab416fd483ffe768a53b1065d9d5180789" + integrity sha512-H7d+s56RPFMWT7SOwabRo9Rx6auQ4AsoY7dZ0lmT2fmgwQ+knEnqmL1KWSPQIruleYU5yCtbgyqByVz8ej5e1A== dependencies: - "@vue/reactivity" "3.0.7" - "@vue/shared" "3.0.7" + "@vue/reactivity" "3.0.8" + "@vue/shared" "3.0.8" -"@vue/runtime-dom@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.7.tgz#b70668d729020bc4ad608c20367223f259576ba6" - integrity sha512-Oij4ruOtnpQpCj+/Q3JPzgpTJ1Q7+N67pA53A8KVITEtxfvKL46NN6dhAZ5NGqwX6RWZpYqWQNewITeF0pHr8g== +"@vue/runtime-dom@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.8.tgz#6d39d1304a1b14f9a1422b394e8d3a5a7af7f0ad" + integrity sha512-ijW6ycxydtE92rx4nRZDLONhNxtPqX09fQXEukHYv2bNnvO1Q4qY/KZ0E6wqOG0d4ZEmIabjAzG9IbNzalkFnQ== dependencies: - "@vue/runtime-core" "3.0.7" - "@vue/shared" "3.0.7" + "@vue/runtime-core" "3.0.8" + "@vue/shared" "3.0.8" csstype "^2.6.8" -"@vue/shared@3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.7.tgz#96d52988efc07444c108c7c6803ba7cc93e40045" - integrity sha512-dn5FyfSc4ky424jH4FntiHno7Ss5yLkqKNmM/NXwANRnlkmqu74pnGetexDFVG5phMk9/FhwovUZCWGxsotVKg== +"@vue/shared@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.8.tgz#b18d3a912299c0360c41bb42f03f502c5016bb1e" + integrity sha512-zDdHjJjzgWYFw8TTUW08JjdERTlBik5/N5LuTAqU0e4wS6wElcvftiNHrD0ONr79O3fi66Z3Ug4jgPhBomPQUA== "@webassemblyjs/ast@1.11.0": version "1.11.0" @@ -10963,14 +10968,14 @@ vue-style-loader@4.1.3: hash-sum "^1.0.2" loader-utils "^1.0.2" -vue@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.7.tgz#8bcff51f8be570f9e4ce8cc5f52e2ab0fe3c74a1" - integrity sha512-8h4TikD+JabbMK9aRlBO4laG0AtNHRPHynxYgWZ9sq1YUPfzynd9Jeeb27XNyZytC7aCQRX9xe1+TQJuc181Tw== +vue@3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.8.tgz#14fc72a9ab0291f8461c94450bf45b9df82fc45a" + integrity sha512-EE6mfGnPkQgTl1A9Vl2Jld9i4cN7KUDYTC0xPSfNRff6mwYDAqjtesdFo+Sk4/BkRfFSPgR1VnzNB7YbMLdrjw== dependencies: - "@vue/compiler-dom" "3.0.7" - "@vue/runtime-dom" "3.0.7" - "@vue/shared" "3.0.7" + "@vue/compiler-dom" "3.0.8" + "@vue/runtime-dom" "3.0.8" + "@vue/shared" "3.0.8" vuedraggable@4.0.1: version "4.0.1" -- cgit v1.2.3-freya From 1f4ae2f63a609d51942daa23772439379496064e Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 2 Apr 2021 10:36:11 +0900 Subject: Use mfm-js for MFM parsing (#7415) * wip * Update mfm.ts * wip * update mfmjs * refactor * nanka * Update mfm.ts * Update to-html.ts * Update to-html.ts * wip * fix test * fix test --- package.json | 2 +- src/client/components/mfm.ts | 89 +- src/client/components/note-detailed.vue | 23 +- src/client/components/note.vue | 23 +- src/client/components/page/page.text.vue | 10 +- src/client/components/post-form.vue | 6 +- src/client/pages/about-misskey.vue | 1 + .../pages/messaging/messaging-room.message.vue | 9 +- src/client/ui/chat/note.vue | 23 +- src/client/ui/chat/post-form.vue | 6 +- src/mfm/from-html.ts | 4 +- src/mfm/language.ts | 191 ---- src/mfm/normalize.ts | 31 - src/mfm/parse.ts | 19 - src/mfm/prelude.ts | 40 - src/mfm/to-html.ts | 102 +- src/mfm/to-string.ts | 99 -- src/misc/extract-custom-emojis-from-mfm.ts | 18 + src/misc/extract-emojis.ts | 9 - src/misc/extract-hashtags.ts | 19 +- src/misc/extract-mentions.ts | 17 +- src/misc/extract-url-from-mfm.ts | 34 + src/models/repositories/note.ts | 13 +- src/prelude/tree.ts | 36 - src/remote/activitypub/misc/get-note-html.ts | 4 +- src/remote/activitypub/renderer/person.ts | 4 +- src/server/api/endpoints/i/update.ts | 12 +- src/services/note/create.ts | 14 +- test/extract-mentions.ts | 8 +- test/mfm.ts | 1150 +------------------- yarn.lock | 17 +- 31 files changed, 262 insertions(+), 1771 deletions(-) delete mode 100644 src/mfm/language.ts delete mode 100644 src/mfm/normalize.ts delete mode 100644 src/mfm/parse.ts delete mode 100644 src/mfm/prelude.ts delete mode 100644 src/mfm/to-string.ts create mode 100644 src/misc/extract-custom-emojis-from-mfm.ts delete mode 100644 src/misc/extract-emojis.ts create mode 100644 src/misc/extract-url-from-mfm.ts delete mode 100644 src/prelude/tree.ts (limited to 'package.json') diff --git a/package.json b/package.json index 90a80cdad3..b604c75f9c 100644 --- a/package.json +++ b/package.json @@ -180,6 +180,7 @@ "markdown-it": "12.0.4", "markdown-it-anchor": "7.1.0", "matter-js": "0.16.1", + "mfm-js": "0.12.0", "mocha": "8.3.2", "moji": "0.5.1", "ms": "2.1.3", @@ -190,7 +191,6 @@ "object-assign-deep": "0.4.0", "os-utils": "0.0.14", "parse5": "6.0.1", - "parsimmon": "1.16.0", "pg": "8.5.1", "portscanner": "2.2.0", "postcss": "8.2.8", diff --git a/src/client/components/mfm.ts b/src/client/components/mfm.ts index 28ac9b8942..b8e948a188 100644 --- a/src/client/components/mfm.ts +++ b/src/client/components/mfm.ts @@ -1,6 +1,5 @@ import { VNode, defineComponent, h } from 'vue'; -import { MfmForest } from '@client/../mfm/prelude'; -import { parse, parsePlain } from '@client/../mfm/parse'; +import * as mfm from 'mfm-js'; import MkUrl from '@client/components/global/url.vue'; import MkLink from '@client/components/link.vue'; import MkMention from '@client/components/mention.vue'; @@ -46,17 +45,17 @@ export default defineComponent({ render() { if (this.text == null || this.text == '') return; - const ast = (this.plain ? parsePlain : parse)(this.text); + const ast = (this.plain ? mfm.parsePlain : mfm.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) { + const genEl = (ast: mfm.MfmNode[]) => concat(ast.map((token): VNode[] => { + switch (token.type) { case 'text': { - const text = token.node.props.text.replace(/(\r\n|\n|\r)/g, '\n'); + const text = token.props.text.replace(/(\r\n|\n|\r)/g, '\n'); if (!this.plain) { const x = text.split('\n') @@ -83,38 +82,38 @@ export default defineComponent({ } case 'fn': { - // TODO: CSSを文字列で組み立てていくと token.node.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる + // TODO: CSSを文字列で組み立てていくと token.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる let style; - switch (token.node.props.name) { + switch (token.props.name) { case 'tada': { style = `font-size: 150%;` + (this.$store.state.animatedMfm ? 'animation: tada 1s linear infinite both;' : ''); break; } case 'jelly': { - const speed = validTime(token.node.props.args.speed) || '1s'; + const speed = validTime(token.props.args.speed) || '1s'; style = (this.$store.state.animatedMfm ? `animation: mfm-rubberBand ${speed} linear infinite both;` : ''); break; } case 'twitch': { - const speed = validTime(token.node.props.args.speed) || '0.5s'; + const speed = validTime(token.props.args.speed) || '0.5s'; style = this.$store.state.animatedMfm ? `animation: mfm-twitch ${speed} ease infinite;` : ''; break; } case 'shake': { - const speed = validTime(token.node.props.args.speed) || '0.5s'; + const speed = validTime(token.props.args.speed) || '0.5s'; style = this.$store.state.animatedMfm ? `animation: mfm-shake ${speed} ease infinite;` : ''; break; } case 'spin': { const direction = - token.node.props.args.left ? 'reverse' : - token.node.props.args.alternate ? 'alternate' : + token.props.args.left ? 'reverse' : + token.props.args.alternate ? 'alternate' : 'normal'; const anime = - token.node.props.args.x ? 'mfm-spinX' : - token.node.props.args.y ? 'mfm-spinY' : + token.props.args.x ? 'mfm-spinX' : + token.props.args.y ? 'mfm-spinY' : 'mfm-spin'; - const speed = validTime(token.node.props.args.speed) || '1.5s'; + const speed = validTime(token.props.args.speed) || '1.5s'; style = this.$store.state.animatedMfm ? `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};` : ''; break; } @@ -128,8 +127,8 @@ export default defineComponent({ } case 'flip': { const transform = - (token.node.props.args.h && token.node.props.args.v) ? 'scale(-1, -1)' : - token.node.props.args.v ? 'scaleY(-1)' : + (token.props.args.h && token.props.args.v) ? 'scale(-1, -1)' : + token.props.args.v ? 'scaleY(-1)' : 'scaleX(-1)'; style = `transform: ${transform};`; break; @@ -148,12 +147,12 @@ export default defineComponent({ } case 'font': { const family = - token.node.props.args.serif ? 'serif' : - token.node.props.args.monospace ? 'monospace' : - token.node.props.args.cursive ? 'cursive' : - token.node.props.args.fantasy ? 'fantasy' : - token.node.props.args.emoji ? 'emoji' : - token.node.props.args.math ? 'math' : + token.props.args.serif ? 'serif' : + token.props.args.monospace ? 'monospace' : + token.props.args.cursive ? 'cursive' : + token.props.args.fantasy ? 'fantasy' : + token.props.args.emoji ? 'emoji' : + token.props.args.math ? 'math' : null; if (family) style = `font-family: ${family};`; break; @@ -165,7 +164,7 @@ export default defineComponent({ } } if (style == null) { - return h('span', {}, ['[', token.node.props.name, ...genEl(token.children), ']']); + return h('span', {}, ['[', token.props.name, ...genEl(token.children), ']']); } else { return h('span', { style: 'display: inline-block;' + style, @@ -188,7 +187,7 @@ export default defineComponent({ case 'url': { return [h(MkUrl, { key: Math.random(), - url: token.node.props.url, + url: token.props.url, rel: 'nofollow noopener', })]; } @@ -196,7 +195,7 @@ export default defineComponent({ case 'link': { return [h(MkLink, { key: Math.random(), - url: token.node.props.url, + url: token.props.url, rel: 'nofollow noopener', }, genEl(token.children))]; } @@ -204,32 +203,31 @@ export default defineComponent({ case 'mention': { return [h(MkMention, { key: Math.random(), - host: (token.node.props.host == null && this.author && this.author.host != null ? this.author.host : token.node.props.host) || host, - username: token.node.props.username + host: (token.props.host == null && this.author && this.author.host != null ? this.author.host : token.props.host) || host, + username: token.props.username })]; } case 'hashtag': { return [h(MkA, { key: Math.random(), - to: this.isNote ? `/tags/${encodeURIComponent(token.node.props.hashtag)}` : `/explore/tags/${encodeURIComponent(token.node.props.hashtag)}`, + to: this.isNote ? `/tags/${encodeURIComponent(token.props.hashtag)}` : `/explore/tags/${encodeURIComponent(token.props.hashtag)}`, style: 'color:var(--hashtag);' - }, `#${token.node.props.hashtag}`)]; + }, `#${token.props.hashtag}`)]; } case 'blockCode': { return [h(MkCode, { key: Math.random(), - code: token.node.props.code, - lang: token.node.props.lang, + code: token.props.code, + lang: token.props.lang, })]; } case 'inlineCode': { return [h(MkCode, { key: Math.random(), - code: token.node.props.code, - lang: token.node.props.lang, + code: token.props.code, inline: true })]; } @@ -246,10 +244,19 @@ export default defineComponent({ } } - case 'emoji': { + case 'emojiCode': { return [h(MkEmoji, { key: Math.random(), - emoji: token.node.props.name ? `:${token.node.props.name}:` : token.node.props.emoji, + emoji: `:${token.props.name}:`, + customEmojis: this.customEmojis, + normal: this.plain + })]; + } + + case 'unicodeEmoji': { + return [h(MkEmoji, { + key: Math.random(), + emoji: token.props.emoji, customEmojis: this.customEmojis, normal: this.plain })]; @@ -258,7 +265,7 @@ export default defineComponent({ case 'mathInline': { return [h(MkFormula, { key: Math.random(), - formula: token.node.props.formula, + formula: token.props.formula, block: false })]; } @@ -266,7 +273,7 @@ export default defineComponent({ case 'mathBlock': { return [h(MkFormula, { key: Math.random(), - formula: token.node.props.formula, + formula: token.props.formula, block: true })]; } @@ -274,12 +281,12 @@ export default defineComponent({ case 'search': { return [h(MkGoogle, { key: Math.random(), - q: token.node.props.query + q: token.props.query })]; } default: { - console.error('unrecognized ast type:', token.node.type); + console.error('unrecognized ast type:', token.type); return []; } diff --git a/src/client/components/note-detailed.vue b/src/client/components/note-detailed.vue index fb4f9502b3..5124b2a88c 100644 --- a/src/client/components/note-detailed.vue +++ b/src/client/components/note-detailed.vue @@ -120,11 +120,11 @@