diff --git a/.eslintignore b/.eslintignore index d14c7b1b68d..55b43acda07 100644 --- a/.eslintignore +++ b/.eslintignore @@ -11,3 +11,5 @@ **/vite.prod.config.js **/node_modules .ts-temp +**/.docusaurus +/playwright-report diff --git a/.eslintrc.js b/.eslintrc.js index 33924a3a770..b12491eb8b2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -76,13 +76,6 @@ module.exports = { 'header/header': [2, 'scripts/www/headerTemplate.js'], }, }, - { - // don't lint headers in entrypoint files so we can add TypeDoc module comments - files: ['packages/**/src/index.ts'], - rules: { - 'header/header': OFF, - }, - }, { // These aren't compiled, but they're written in module JS files: ['packages/lexical-playground/esm/*.mjs'], diff --git a/.prettierignore b/.prettierignore index 17e02cd3218..97fbe5bec01 100644 --- a/.prettierignore +++ b/.prettierignore @@ -16,3 +16,5 @@ packages/**/vite.prod.config.js flow-typed .github/CODEOWNERS .prettierignore +**/.docusaurus +/playwright-report diff --git a/package-lock.json b/package-lock.json index 487720c0ab9..acb72988fb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13397,7 +13397,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -31651,11 +31650,13 @@ "@radix-ui/react-tabs": "^1.0.4", "@vercel/analytics": "^1.0.1", "docusaurus-plugin-typedoc": "^0.22.0", + "fs-extra": "^10.0.0", "prism-react-renderer": "^2.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-import-partial": "^0.0.2", - "typedoc-plugin-markdown": "^3.17.1" + "typedoc-plugin-markdown": "^3.17.1", + "unist-util-visit": "^5.0.0" }, "devDependencies": { "buffer": "^6.0.3", @@ -35634,6 +35635,7 @@ "@vercel/analytics": "^1.0.1", "buffer": "^6.0.3", "docusaurus-plugin-typedoc": "^0.22.0", + "fs-extra": "^10.0.0", "prettier-plugin-tailwindcss": "^0.4.1", "prism-react-renderer": "^2.3.1", "react": "^18.2.0", @@ -35641,6 +35643,7 @@ "remark-import-partial": "^0.0.2", "tailwindcss": "^3.3.3", "typedoc-plugin-markdown": "^3.17.1", + "unist-util-visit": "^5.0.0", "webpack": "^5.76.0" }, "dependencies": { @@ -41675,7 +41678,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", diff --git a/packages/lexical-clipboard/src/index.ts b/packages/lexical-clipboard/src/index.ts index de0158e3a10..538ff4c56de 100644 --- a/packages/lexical-clipboard/src/index.ts +++ b/packages/lexical-clipboard/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/clipboard */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-code/src/index.ts b/packages/lexical-code/src/index.ts index 1114b3b120a..6b4c562013d 100644 --- a/packages/lexical-code/src/index.ts +++ b/packages/lexical-code/src/index.ts @@ -1,11 +1,9 @@ -/** @module @lexical/code */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * */ export { diff --git a/packages/lexical-devtools-core/README.md b/packages/lexical-devtools-core/README.md index 008d2198b68..88c323f373b 100644 --- a/packages/lexical-devtools-core/README.md +++ b/packages/lexical-devtools-core/README.md @@ -1,5 +1,5 @@ # `@lexical/devtools-core` -[![See API Documentation](https://lexical.dev/img/see-api-documentation.svg)](https://lexical.dev/docs/api/modules/lexical_devtools-core) +[![See API Documentation](https://lexical.dev/img/see-api-documentation.svg)](https://lexical.dev/docs/api/modules/lexical_devtools_core) This package contains tools necessary to debug and develop Lexical. diff --git a/packages/lexical-devtools-core/src/index.ts b/packages/lexical-devtools-core/src/index.ts index a6e35d23e59..0226e814ac8 100644 --- a/packages/lexical-devtools-core/src/index.ts +++ b/packages/lexical-devtools-core/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/devtools-core */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-dragon/src/index.ts b/packages/lexical-dragon/src/index.ts index b9cf6982f2a..328b2cb692f 100644 --- a/packages/lexical-dragon/src/index.ts +++ b/packages/lexical-dragon/src/index.ts @@ -1,11 +1,9 @@ -/** @module @lexical/dragon */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * */ import { diff --git a/packages/lexical-file/src/index.ts b/packages/lexical-file/src/index.ts index e2322386191..aa24b7fdb75 100644 --- a/packages/lexical-file/src/index.ts +++ b/packages/lexical-file/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/file */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-hashtag/src/index.ts b/packages/lexical-hashtag/src/index.ts index 54825e9df2b..f143c86f238 100644 --- a/packages/lexical-hashtag/src/index.ts +++ b/packages/lexical-hashtag/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/hashtag */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-headless/src/index.ts b/packages/lexical-headless/src/index.ts index d77e71a64e8..2b8eddb8ed3 100644 --- a/packages/lexical-headless/src/index.ts +++ b/packages/lexical-headless/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/headless */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-history/src/index.ts b/packages/lexical-history/src/index.ts index 3b33f9f4d76..9cbd84811fe 100644 --- a/packages/lexical-history/src/index.ts +++ b/packages/lexical-history/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/history */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-html/src/index.ts b/packages/lexical-html/src/index.ts index ad5e89e5cdd..52f946f8057 100644 --- a/packages/lexical-html/src/index.ts +++ b/packages/lexical-html/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/html */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-link/src/index.ts b/packages/lexical-link/src/index.ts index 8068e188c3a..0682ea6f14f 100644 --- a/packages/lexical-link/src/index.ts +++ b/packages/lexical-link/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/link */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-list/src/index.ts b/packages/lexical-list/src/index.ts index e22bb0948ec..157fe79de1d 100644 --- a/packages/lexical-list/src/index.ts +++ b/packages/lexical-list/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/list */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-mark/src/index.ts b/packages/lexical-mark/src/index.ts index ac4777fd5b4..5aa46e82ccc 100644 --- a/packages/lexical-mark/src/index.ts +++ b/packages/lexical-mark/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/mark */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-markdown/src/index.ts b/packages/lexical-markdown/src/index.ts index 1c6cb927aee..7c44b5ae516 100644 --- a/packages/lexical-markdown/src/index.ts +++ b/packages/lexical-markdown/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/markdown */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-offset/src/index.ts b/packages/lexical-offset/src/index.ts index 61446135341..328dc0d1405 100644 --- a/packages/lexical-offset/src/index.ts +++ b/packages/lexical-offset/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/offset */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-overflow/src/index.ts b/packages/lexical-overflow/src/index.ts index 7459939cece..8cdc0b0e8cc 100644 --- a/packages/lexical-overflow/src/index.ts +++ b/packages/lexical-overflow/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/overflow */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-plain-text/src/index.ts b/packages/lexical-plain-text/src/index.ts index 9a91a6b8baf..1df4cb1c1ca 100644 --- a/packages/lexical-plain-text/src/index.ts +++ b/packages/lexical-plain-text/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/plain-text */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-rich-text/src/index.ts b/packages/lexical-rich-text/src/index.ts index ed21e80313a..467cd43bb9f 100644 --- a/packages/lexical-rich-text/src/index.ts +++ b/packages/lexical-rich-text/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/rich-text */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-selection/src/index.ts b/packages/lexical-selection/src/index.ts index c43ce73f4a2..b8ec0137425 100644 --- a/packages/lexical-selection/src/index.ts +++ b/packages/lexical-selection/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/selection */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-table/src/index.ts b/packages/lexical-table/src/index.ts index 9e752be34c3..9c723b483e7 100644 --- a/packages/lexical-table/src/index.ts +++ b/packages/lexical-table/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/table */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-text/src/index.ts b/packages/lexical-text/src/index.ts index bb9463d1b53..333df2a9ad5 100644 --- a/packages/lexical-text/src/index.ts +++ b/packages/lexical-text/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/text */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-utils/src/index.ts b/packages/lexical-utils/src/index.ts index d3bc895718f..8d981b5e634 100644 --- a/packages/lexical-utils/src/index.ts +++ b/packages/lexical-utils/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/utils */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical-website/docs/packages/lexical-clipboard.md b/packages/lexical-website/docs/packages/lexical-clipboard.md index 21a38a6a412..b8ccd62108b 100644 --- a/packages/lexical-website/docs/packages/lexical-clipboard.md +++ b/packages/lexical-website/docs/packages/lexical-clipboard.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 7 sidebar_label: '@lexical/clipboard' -cache_reset: 1 --- {@import ../../../lexical-clipboard/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-code.md b/packages/lexical-website/docs/packages/lexical-code.md index cb5b0e4982d..059d41ca302 100644 --- a/packages/lexical-website/docs/packages/lexical-code.md +++ b/packages/lexical-website/docs/packages/lexical-code.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 13 sidebar_label: '@lexical/code' -cache_reset: 1 --- {@import ../../../lexical-code/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-devtools-core.md b/packages/lexical-website/docs/packages/lexical-devtools-core.md index b18a355e7ed..e649f09270d 100644 --- a/packages/lexical-website/docs/packages/lexical-devtools-core.md +++ b/packages/lexical-website/docs/packages/lexical-devtools-core.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 20 sidebar_label: '@lexical/devtools-core' -cache_reset: 1 --- {@import ../../../lexical-devtools-core/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-dragon.md b/packages/lexical-website/docs/packages/lexical-dragon.md index d78fba021be..0f94bb0b9b6 100644 --- a/packages/lexical-website/docs/packages/lexical-dragon.md +++ b/packages/lexical-website/docs/packages/lexical-dragon.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 15 sidebar_label: '@lexical/dragon' -cache_reset: 1 --- {@import ../../../lexical-dragon/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-file.md b/packages/lexical-website/docs/packages/lexical-file.md index b1e64f46581..83c5962a5c3 100644 --- a/packages/lexical-website/docs/packages/lexical-file.md +++ b/packages/lexical-website/docs/packages/lexical-file.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 15 sidebar_label: '@lexical/file' -cache_reset: 1 --- {@import ../../../lexical-file/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-hashtag.md b/packages/lexical-website/docs/packages/lexical-hashtag.md index d548603586a..af135d6d6d5 100644 --- a/packages/lexical-website/docs/packages/lexical-hashtag.md +++ b/packages/lexical-website/docs/packages/lexical-hashtag.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 14 sidebar_label: '@lexical/hashtag' -cache_reset: 1 --- {@import ../../../lexical-hashtag/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-headless.md b/packages/lexical-website/docs/packages/lexical-headless.md index 460dafe21e5..20c35591dfa 100644 --- a/packages/lexical-website/docs/packages/lexical-headless.md +++ b/packages/lexical-website/docs/packages/lexical-headless.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 16 sidebar_label: '@lexical/headless' -cache_reset: 1 --- {@import ../../../lexical-headless/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-history.md b/packages/lexical-website/docs/packages/lexical-history.md index e9d2b831cf7..ac72a152400 100644 --- a/packages/lexical-website/docs/packages/lexical-history.md +++ b/packages/lexical-website/docs/packages/lexical-history.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 8 sidebar_label: '@lexical/history' -cache_reset: 1 --- {@import ../../../lexical-history/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-html.md b/packages/lexical-website/docs/packages/lexical-html.md index 8741da457cd..0ebd9016399 100644 --- a/packages/lexical-website/docs/packages/lexical-html.md +++ b/packages/lexical-website/docs/packages/lexical-html.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 4 sidebar_label: '@lexical/html' -cache_reset: 1 --- {@import ../../../lexical-html/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-link.md b/packages/lexical-website/docs/packages/lexical-link.md index 844f2ac2053..eb748f61c17 100644 --- a/packages/lexical-website/docs/packages/lexical-link.md +++ b/packages/lexical-website/docs/packages/lexical-link.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 15 sidebar_label: '@lexical/link' -cache_reset: 1 --- {@import ../../../lexical-link/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-list.md b/packages/lexical-website/docs/packages/lexical-list.md index eaa519e8a09..f1bda7d938b 100644 --- a/packages/lexical-website/docs/packages/lexical-list.md +++ b/packages/lexical-website/docs/packages/lexical-list.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 9 sidebar_label: '@lexical/list' -cache_reset: 1 --- {@import ../../../lexical-list/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-mark.md b/packages/lexical-website/docs/packages/lexical-mark.md index ddc785b5c5e..33607576a8b 100644 --- a/packages/lexical-website/docs/packages/lexical-mark.md +++ b/packages/lexical-website/docs/packages/lexical-mark.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 4 sidebar_label: '@lexical/mark' -cache_reset: 1 --- {@import ../../../lexical-mark/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-markdown.md b/packages/lexical-website/docs/packages/lexical-markdown.md index 1aedfb451a0..8354cc5c9f1 100644 --- a/packages/lexical-website/docs/packages/lexical-markdown.md +++ b/packages/lexical-website/docs/packages/lexical-markdown.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 11 sidebar_label: '@lexical/markdown' -cache_reset: 1 --- {@import ../../../lexical-markdown/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-offset.md b/packages/lexical-website/docs/packages/lexical-offset.md index 65fc874777e..44f1e276001 100644 --- a/packages/lexical-website/docs/packages/lexical-offset.md +++ b/packages/lexical-website/docs/packages/lexical-offset.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 12 sidebar_label: '@lexical/offset' -cache_reset: 1 --- {@import ../../../lexical-offset/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-overflow.md b/packages/lexical-website/docs/packages/lexical-overflow.md index 95cb471d30f..d79d1b21327 100644 --- a/packages/lexical-website/docs/packages/lexical-overflow.md +++ b/packages/lexical-website/docs/packages/lexical-overflow.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 4 sidebar_label: '@lexical/overflow' -cache_reset: 1 --- {@import ../../../lexical-overflow/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-plain-text.md b/packages/lexical-website/docs/packages/lexical-plain-text.md index 38f18e57973..28043e3af05 100644 --- a/packages/lexical-website/docs/packages/lexical-plain-text.md +++ b/packages/lexical-website/docs/packages/lexical-plain-text.md @@ -1,6 +1,5 @@ --- title: '' -sidebar_position: 2 sidebar_label: '@lexical/plain-text' --- diff --git a/packages/lexical-website/docs/packages/lexical-react.md b/packages/lexical-website/docs/packages/lexical-react.md new file mode 100644 index 00000000000..fd26ef088b6 --- /dev/null +++ b/packages/lexical-website/docs/packages/lexical-react.md @@ -0,0 +1,6 @@ +--- +title: '' +sidebar_label: '@lexical/react' +--- + +{@import ../../../lexical-react/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-rich-text.md b/packages/lexical-website/docs/packages/lexical-rich-text.md index 076ae79d1e9..b38ef264a91 100644 --- a/packages/lexical-website/docs/packages/lexical-rich-text.md +++ b/packages/lexical-website/docs/packages/lexical-rich-text.md @@ -1,6 +1,5 @@ --- title: '' -sidebar_position: 3 sidebar_label: '@lexical/rich-text' --- diff --git a/packages/lexical-website/docs/packages/lexical-selection.md b/packages/lexical-website/docs/packages/lexical-selection.md index ca299087800..e0b47043c5a 100644 --- a/packages/lexical-website/docs/packages/lexical-selection.md +++ b/packages/lexical-website/docs/packages/lexical-selection.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 4 sidebar_label: '@lexical/selection' -cache_reset: 1 --- {@import ../../../lexical-selection/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-table.md b/packages/lexical-website/docs/packages/lexical-table.md index 17d70f49666..54c258f1e00 100644 --- a/packages/lexical-website/docs/packages/lexical-table.md +++ b/packages/lexical-website/docs/packages/lexical-table.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 10 sidebar_label: '@lexical/table' -cache_reset: 1 --- {@import ../../../lexical-table/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-text.md b/packages/lexical-website/docs/packages/lexical-text.md index 5917c934b18..df9dce9d194 100644 --- a/packages/lexical-website/docs/packages/lexical-text.md +++ b/packages/lexical-website/docs/packages/lexical-text.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 5 sidebar_label: '@lexical/text' -cache_reset: 1 --- {@import ../../../lexical-text/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-utils.md b/packages/lexical-website/docs/packages/lexical-utils.md index d62ba5467e3..3363ea8d9eb 100644 --- a/packages/lexical-website/docs/packages/lexical-utils.md +++ b/packages/lexical-website/docs/packages/lexical-utils.md @@ -1,8 +1,6 @@ --- title: '' -sidebar_position: 6 sidebar_label: '@lexical/utils' -cache_reset: 1 --- {@import ../../../lexical-utils/README.md} diff --git a/packages/lexical-website/docs/packages/lexical-yjs.md b/packages/lexical-website/docs/packages/lexical-yjs.md new file mode 100644 index 00000000000..9fc76e814a7 --- /dev/null +++ b/packages/lexical-website/docs/packages/lexical-yjs.md @@ -0,0 +1,6 @@ +--- +title: '' +sidebar_label: '@lexical/yjs' +--- + +{@import ../../../lexical-yjs/README.md} diff --git a/packages/lexical-website/docusaurus.config.js b/packages/lexical-website/docusaurus.config.js index 7b37f501622..bbd7ff80874 100644 --- a/packages/lexical-website/docusaurus.config.js +++ b/packages/lexical-website/docusaurus.config.js @@ -10,14 +10,44 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion +const fs = require('fs-extra'); const {github: lightCodeTheme, dracula: darkCodeTheme} = require('prism-react-renderer').themes; const importPlugin = require('remark-import-partial'); +const slugifyPlugin = require('./src/plugins/lexical-remark-slugify-anchors'); const TITLE = 'Lexical'; const GITHUB_REPO_URL = 'https://github.com/facebook/lexical'; // TODO: Update when repo name updated const IOS_GITHUB_REPO_URL = 'https://github.com/facebook/lexical-ios'; +function sourceLinkOptions() { + const sourceLinkTemplate = `${GITHUB_REPO_URL}/tree/{gitRevision}/{path}#L{line}`; + return { + disableGit: true, + gitRevision: 'main', + sourceLinkTemplate, + }; +} + +function lexicalReactEntryPoints() { + return Object.keys( + fs.readJsonSync('../lexical-react/package.json').exports, + ).flatMap((k) => { + const m = /\.\/([^.]+)$/.exec(k); + if (!m) { + return []; + } + const prefix = `../lexical-react/src/${m[1]}`; + for (const ext of ['.tsx', '.ts']) { + const fn = `${prefix}${ext}`; + if (fs.existsSync(fn)) { + return [fn]; + } + } + throw Error(`No entry point found for ${prefix}`); + }); +} + /** @type {import('@docusaurus/types').Config} */ const config = { baseUrl: '/', @@ -26,14 +56,17 @@ const config = { markdown: {format: 'md'}, - onBrokenLinks: 'warn', - onBrokenMarkdownLinks: 'warn', + onBrokenAnchors: 'throw', + // These are false positives when linking from API docs + onBrokenLinks: 'ignore', + onBrokenMarkdownLinks: 'throw', organizationName: 'facebook', plugins: [ './plugins/webpack-buffer', [ 'docusaurus-plugin-typedoc', { + ...sourceLinkOptions(), entryPoints: [ '../lexical/src/index.ts', '../lexical-clipboard/src/index.ts', @@ -51,6 +84,9 @@ const config = { '../lexical-markdown/src/index.ts', '../lexical-offset/src/index.ts', '../lexical-overflow/src/index.ts', + '../lexical-plain-text/src/index.ts', + ...lexicalReactEntryPoints(), + '../lexical-rich-text/src/index.ts', '../lexical-selection/src/index.ts', '../lexical-table/src/index.ts', '../lexical-text/src/index.ts', @@ -58,7 +94,10 @@ const config = { '../lexical-yjs/src/index.ts', ], excludeInternal: true, - plugin: ['./src/plugins/lexical-typedoc-plugin-no-inherit'], + plugin: [ + './src/plugins/lexical-typedoc-plugin-no-inherit', + './src/plugins/lexical-typedoc-plugin-module-name', + ], sidebar: { position: 5, }, @@ -87,9 +126,9 @@ const config = { showReadingTime: true, // TODO: Update when directory finalized }, docs: { + beforeDefaultRemarkPlugins: [importPlugin, slugifyPlugin], editUrl: `${GITHUB_REPO_URL}/tree/main/packages/lexical-website/`, path: 'docs', - remarkPlugins: [importPlugin], sidebarPath: require.resolve('./sidebars.js'), }, gtag: { diff --git a/packages/lexical-website/package.json b/packages/lexical-website/package.json index 1d68ca6180b..23d6a57c96e 100644 --- a/packages/lexical-website/package.json +++ b/packages/lexical-website/package.json @@ -21,11 +21,13 @@ "@radix-ui/react-tabs": "^1.0.4", "@vercel/analytics": "^1.0.1", "docusaurus-plugin-typedoc": "^0.22.0", + "fs-extra": "^10.0.0", "prism-react-renderer": "^2.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "remark-import-partial": "^0.0.2", - "typedoc-plugin-markdown": "^3.17.1" + "typedoc-plugin-markdown": "^3.17.1", + "unist-util-visit": "^5.0.0" }, "devDependencies": { "buffer": "^6.0.3", diff --git a/packages/lexical-website/sidebars.js b/packages/lexical-website/sidebars.js index deb7c5d1586..60fc26e38cf 100644 --- a/packages/lexical-website/sidebars.js +++ b/packages/lexical-website/sidebars.js @@ -71,11 +71,13 @@ const sidebars = { 'packages/lexical-offset', 'packages/lexical-overflow', 'packages/lexical-plain-text', + 'packages/lexical-react', 'packages/lexical-rich-text', 'packages/lexical-selection', 'packages/lexical-table', 'packages/lexical-text', 'packages/lexical-utils', + 'packages/lexical-yjs', ], label: 'Packages', type: 'category', diff --git a/packages/lexical-website/src/plugins/lexical-remark-slugify-anchors/index.js b/packages/lexical-website/src/plugins/lexical-remark-slugify-anchors/index.js new file mode 100644 index 00000000000..b176ffecc9e --- /dev/null +++ b/packages/lexical-website/src/plugins/lexical-remark-slugify-anchors/index.js @@ -0,0 +1,37 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ +const {visit} = require('unist-util-visit'); + +/** + * Resolve links to lexical functions that have $ in them. typedoc labels only allow `[a-z_][a-z0-9_]*` + * so any time we link to a symbol that starts with $ it generates a broken link in the final output. + * This plugin resolves these at link resolution time rather than requiring awkward links in the docs. + * + * + */ +module.exports = function lexicalRemarkSlugifyAnchors() { + return (/** @type import('mdast').Root */ tree) => { + visit(tree, (node) => { + if (node.type === 'link') { + // Fix url anchors with a preceding $, e.g. #$getroot to #getroot + node.url = node.url.replace(/#\$/, '#'); + // Remove module names from references, e.g. @lexical/html!$generateHtmlFromNodes to $generateHtmlFromNodes + if (node.children.length === 1) { + const [child] = node.children; + if (child.type === 'text') { + child.value = child.value.replace( + /^(lexical|@lexical\/[^!]+)!/, + '', + ); + } + } + } + }); + return tree; + }; +}; diff --git a/packages/lexical-website/src/plugins/lexical-typedoc-plugin-module-name/index.js b/packages/lexical-website/src/plugins/lexical-typedoc-plugin-module-name/index.js new file mode 100644 index 00000000000..244c5f24b19 --- /dev/null +++ b/packages/lexical-website/src/plugins/lexical-typedoc-plugin-module-name/index.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ +const typedoc = require('typedoc'); + +exports.load = function (/** @type typedoc.Application */ app) { + app.converter.on( + typedoc.Converter.EVENT_RESOLVE_BEGIN, + (/** @type typedoc.Context */ context) => { + context.project + .getReflectionsByKind(typedoc.ReflectionKind.Module) + .forEach((reflection) => { + // Replace "lexical-react/src/foo" with "@lexical/react/foo" + reflection.name = reflection.name + .replace(/^lexical-/, '@lexical/') + .replace(/\/src(\/|$)/, '$1'); + }); + }, + ); +}; diff --git a/packages/lexical-yjs/src/index.ts b/packages/lexical-yjs/src/index.ts index 65e989572f0..248e344268b 100644 --- a/packages/lexical-yjs/src/index.ts +++ b/packages/lexical-yjs/src/index.ts @@ -1,4 +1,3 @@ -/** @module @lexical/yjs */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical/src/index.ts b/packages/lexical/src/index.ts index 7a22b5f2c67..b8ba8fcd787 100644 --- a/packages/lexical/src/index.ts +++ b/packages/lexical/src/index.ts @@ -1,4 +1,3 @@ -/** @module lexical */ /** * Copyright (c) Meta Platforms, Inc. and affiliates. * diff --git a/packages/lexical/src/nodes/LexicalTextNode.ts b/packages/lexical/src/nodes/LexicalTextNode.ts index 583fadfa1c5..37410e74164 100644 --- a/packages/lexical/src/nodes/LexicalTextNode.ts +++ b/packages/lexical/src/nodes/LexicalTextNode.ts @@ -670,7 +670,7 @@ export class TextNode extends LexicalNode { * Sets the node detail to the provided TextDetailType or 32-bit integer. Note that the TextDetailType * version of the argument can only specify one detail value and doing so will remove all other detail values that * may be applied to the node. For toggling behavior, consider using {@link TextNode.toggleDirectionless} - * or {@link TextNode.togglerUnmergeable} + * or {@link TextNode.toggleUnmergeable} * * @param detail - TextDetailType or 32-bit integer representing the node detail. *