diff --git a/blocksuite/affine/all/package.json b/blocksuite/affine/all/package.json index 4d1f9236dc..9ebc581a19 100644 --- a/blocksuite/affine/all/package.json +++ b/blocksuite/affine/all/package.json @@ -42,6 +42,7 @@ "@blocksuite/affine-inline-footnote": "workspace:*", "@blocksuite/affine-inline-latex": "workspace:*", "@blocksuite/affine-inline-link": "workspace:*", + "@blocksuite/affine-inline-mention": "workspace:*", "@blocksuite/affine-inline-preset": "workspace:*", "@blocksuite/affine-inline-reference": "workspace:*", "@blocksuite/affine-model": "workspace:*", @@ -106,6 +107,7 @@ "./inlines/preset": "./src/inlines/preset.ts", "./inlines/footnote": "./src/inlines/footnote.ts", "./inlines/latex": "./src/inlines/latex.ts", + "./inlines/mention": "./src/inlines/mention.ts", "./widgets/drag-handle": "./src/widgets/drag-handle.ts", "./widgets/edgeless-auto-connect": "./src/widgets/edgeless-auto-connect.ts", "./widgets/edgeless-toolbar": "./src/widgets/edgeless-toolbar.ts", diff --git a/blocksuite/affine/all/src/effects.ts b/blocksuite/affine/all/src/effects.ts index fcbdfe45f8..45afee1c44 100644 --- a/blocksuite/affine/all/src/effects.ts +++ b/blocksuite/affine/all/src/effects.ts @@ -48,6 +48,7 @@ import { effects as fragmentOutlineEffects } from '@blocksuite/affine-fragment-o import { effects as inlineFootnoteEffects } from '@blocksuite/affine-inline-footnote/effects'; import { effects as inlineLatexEffects } from '@blocksuite/affine-inline-latex/effects'; import { effects as inlineLinkEffects } from '@blocksuite/affine-inline-link/effects'; +import { effects as inlineMentionEffects } from '@blocksuite/affine-inline-mention'; import { effects as inlinePresetEffects } from '@blocksuite/affine-inline-preset/effects'; import { effects as inlineReferenceEffects } from '@blocksuite/affine-inline-reference/effects'; import { effects as richTextEffects } from '@blocksuite/affine-rich-text/effects'; @@ -123,6 +124,7 @@ export function effects() { inlineLinkEffects(); inlineFootnoteEffects(); inlineLatexEffects(); + inlineMentionEffects(); blockNoteEffects(); blockAttachmentEffects(); diff --git a/blocksuite/affine/all/src/inlines/mention.ts b/blocksuite/affine/all/src/inlines/mention.ts new file mode 100644 index 0000000000..d6a132af41 --- /dev/null +++ b/blocksuite/affine/all/src/inlines/mention.ts @@ -0,0 +1 @@ +export * from '@blocksuite/affine-inline-mention'; diff --git a/blocksuite/affine/all/tsconfig.json b/blocksuite/affine/all/tsconfig.json index dd3ddee2e0..d1920e6738 100644 --- a/blocksuite/affine/all/tsconfig.json +++ b/blocksuite/affine/all/tsconfig.json @@ -39,6 +39,7 @@ { "path": "../inlines/footnote" }, { "path": "../inlines/latex" }, { "path": "../inlines/link" }, + { "path": "../inlines/mention" }, { "path": "../inlines/preset" }, { "path": "../inlines/reference" }, { "path": "../model" }, diff --git a/blocksuite/affine/blocks/block-attachment/package.json b/blocksuite/affine/blocks/block-attachment/package.json index 3c20d45a38..e062eae2a4 100644 --- a/blocksuite/affine/blocks/block-attachment/package.json +++ b/blocksuite/affine/blocks/block-attachment/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-bookmark/package.json b/blocksuite/affine/blocks/block-bookmark/package.json index e3748fe842..24c6de8a6b 100644 --- a/blocksuite/affine/blocks/block-bookmark/package.json +++ b/blocksuite/affine/blocks/block-bookmark/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/blocks/block-callout/package.json b/blocksuite/affine/blocks/block-callout/package.json index 4be535dbe6..f819146ff0 100644 --- a/blocksuite/affine/blocks/block-callout/package.json +++ b/blocksuite/affine/blocks/block-callout/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@emoji-mart/data": "^1.2.1", "@floating-ui/dom": "^1.6.10", diff --git a/blocksuite/affine/blocks/block-code/package.json b/blocksuite/affine/blocks/block-code/package.json index a1eae7218f..c24e9d8c2e 100644 --- a/blocksuite/affine/blocks/block-code/package.json +++ b/blocksuite/affine/blocks/block-code/package.json @@ -20,7 +20,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-data-view/package.json b/blocksuite/affine/blocks/block-data-view/package.json index 45d9769028..8732f9f29d 100644 --- a/blocksuite/affine/blocks/block-data-view/package.json +++ b/blocksuite/affine/blocks/block-data-view/package.json @@ -18,7 +18,7 @@ "@blocksuite/block-std": "workspace:*", "@blocksuite/data-view": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-database/package.json b/blocksuite/affine/blocks/block-database/package.json index 6c12a57466..576f725a03 100644 --- a/blocksuite/affine/blocks/block-database/package.json +++ b/blocksuite/affine/blocks/block-database/package.json @@ -21,7 +21,7 @@ "@blocksuite/block-std": "workspace:*", "@blocksuite/data-view": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-edgeless-text/package.json b/blocksuite/affine/blocks/block-edgeless-text/package.json index 707f8fb03c..a5ee7a5f64 100644 --- a/blocksuite/affine/blocks/block-edgeless-text/package.json +++ b/blocksuite/affine/blocks/block-edgeless-text/package.json @@ -19,7 +19,7 @@ "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-embed/package.json b/blocksuite/affine/blocks/block-embed/package.json index 374c06b39c..119081f479 100644 --- a/blocksuite/affine/blocks/block-embed/package.json +++ b/blocksuite/affine/blocks/block-embed/package.json @@ -19,7 +19,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-frame/package.json b/blocksuite/affine/blocks/block-frame/package.json index 807fbb2bdc..4319886e0a 100644 --- a/blocksuite/affine/blocks/block-frame/package.json +++ b/blocksuite/affine/blocks/block-frame/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-frame-title": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-image/package.json b/blocksuite/affine/blocks/block-image/package.json index 687b2e8a25..31e670b515 100644 --- a/blocksuite/affine/blocks/block-image/package.json +++ b/blocksuite/affine/blocks/block-image/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-latex/package.json b/blocksuite/affine/blocks/block-latex/package.json index 2358ba140a..0fa7703c33 100644 --- a/blocksuite/affine/blocks/block-latex/package.json +++ b/blocksuite/affine/blocks/block-latex/package.json @@ -19,7 +19,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-list/package.json b/blocksuite/affine/blocks/block-list/package.json index 706c320f16..d5ebc67970 100644 --- a/blocksuite/affine/blocks/block-list/package.json +++ b/blocksuite/affine/blocks/block-list/package.json @@ -17,7 +17,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-note/package.json b/blocksuite/affine/blocks/block-note/package.json index fa4031fb10..fe5192ed6f 100644 --- a/blocksuite/affine/blocks/block-note/package.json +++ b/blocksuite/affine/blocks/block-note/package.json @@ -21,7 +21,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/blocks/block-root/package.json b/blocksuite/affine/blocks/block-root/package.json index b2db2bb5b8..8e063a72f3 100644 --- a/blocksuite/affine/blocks/block-root/package.json +++ b/blocksuite/affine/blocks/block-root/package.json @@ -50,7 +50,7 @@ "@blocksuite/block-std": "workspace:*", "@blocksuite/data-view": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-surface-ref/package.json b/blocksuite/affine/blocks/block-surface-ref/package.json index 58cc918331..e8f06e1b8d 100644 --- a/blocksuite/affine/blocks/block-surface-ref/package.json +++ b/blocksuite/affine/blocks/block-surface-ref/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-slash-menu": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/blocks/block-table/package.json b/blocksuite/affine/blocks/block-table/package.json index b5e672c8d4..a78804e995 100644 --- a/blocksuite/affine/blocks/block-table/package.json +++ b/blocksuite/affine/blocks/block-table/package.json @@ -20,7 +20,7 @@ "@blocksuite/block-std": "workspace:*", "@blocksuite/data-view": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/components/package.json b/blocksuite/affine/components/package.json index 9ffcd23975..77a777e3a7 100644 --- a/blocksuite/affine/components/package.json +++ b/blocksuite/affine/components/package.json @@ -14,7 +14,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/data-view/package.json b/blocksuite/affine/data-view/package.json index af663854a7..88c458f4af 100644 --- a/blocksuite/affine/data-view/package.json +++ b/blocksuite/affine/data-view/package.json @@ -14,7 +14,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@emotion/hash": "^0.9.2", "@floating-ui/dom": "^1.6.13", diff --git a/blocksuite/affine/fragments/fragment-doc-title/package.json b/blocksuite/affine/fragments/fragment-doc-title/package.json index 291d849969..09851d9c9c 100644 --- a/blocksuite/affine/fragments/fragment-doc-title/package.json +++ b/blocksuite/affine/fragments/fragment-doc-title/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/fragments/fragment-frame-panel/package.json b/blocksuite/affine/fragments/fragment-frame-panel/package.json index 775711204e..e2aa3734c1 100644 --- a/blocksuite/affine/fragments/fragment-frame-panel/package.json +++ b/blocksuite/affine/fragments/fragment-frame-panel/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/fragments/fragment-outline/package.json b/blocksuite/affine/fragments/fragment-outline/package.json index 41b03c1ccc..5f4e81d088 100644 --- a/blocksuite/affine/fragments/fragment-outline/package.json +++ b/blocksuite/affine/fragments/fragment-outline/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/gfx/connector/package.json b/blocksuite/affine/gfx/connector/package.json index 011260d4ba..134ef096d7 100644 --- a/blocksuite/affine/gfx/connector/package.json +++ b/blocksuite/affine/gfx/connector/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/gfx/mindmap/package.json b/blocksuite/affine/gfx/mindmap/package.json index b90f1f413e..de4ada0b97 100644 --- a/blocksuite/affine/gfx/mindmap/package.json +++ b/blocksuite/affine/gfx/mindmap/package.json @@ -22,7 +22,7 @@ "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/gfx/note/package.json b/blocksuite/affine/gfx/note/package.json index 27c0bb0081..04c9c3f2fa 100644 --- a/blocksuite/affine/gfx/note/package.json +++ b/blocksuite/affine/gfx/note/package.json @@ -21,7 +21,7 @@ "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/gfx/shape/package.json b/blocksuite/affine/gfx/shape/package.json index d9f04e08a5..8dc6e627e9 100644 --- a/blocksuite/affine/gfx/shape/package.json +++ b/blocksuite/affine/gfx/shape/package.json @@ -19,7 +19,7 @@ "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/gfx/text/package.json b/blocksuite/affine/gfx/text/package.json index da76121424..c5c5cb8582 100644 --- a/blocksuite/affine/gfx/text/package.json +++ b/blocksuite/affine/gfx/text/package.json @@ -19,7 +19,7 @@ "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/inlines/footnote/package.json b/blocksuite/affine/inlines/footnote/package.json index e1d31d23bb..91c07faae1 100644 --- a/blocksuite/affine/inlines/footnote/package.json +++ b/blocksuite/affine/inlines/footnote/package.json @@ -16,7 +16,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/inlines/latex/package.json b/blocksuite/affine/inlines/latex/package.json index b6ff6ad5cf..d31350c1e7 100644 --- a/blocksuite/affine/inlines/latex/package.json +++ b/blocksuite/affine/inlines/latex/package.json @@ -17,7 +17,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/inlines/link/package.json b/blocksuite/affine/inlines/link/package.json index 659db5c67b..dfcdbf1b22 100644 --- a/blocksuite/affine/inlines/link/package.json +++ b/blocksuite/affine/inlines/link/package.json @@ -16,7 +16,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/inlines/mention/package.json b/blocksuite/affine/inlines/mention/package.json new file mode 100644 index 0000000000..9fc9e4eaab --- /dev/null +++ b/blocksuite/affine/inlines/mention/package.json @@ -0,0 +1,45 @@ +{ + "name": "@blocksuite/affine-inline-mention", + "description": "Inline mention for BlockSuite.", + "type": "module", + "scripts": { + "build": "tsc" + }, + "sideEffects": false, + "keywords": [], + "author": "toeverything", + "license": "MIT", + "dependencies": { + "@blocksuite/affine-components": "workspace:*", + "@blocksuite/affine-model": "workspace:*", + "@blocksuite/affine-shared": "workspace:*", + "@blocksuite/block-std": "workspace:*", + "@blocksuite/global": "workspace:*", + "@blocksuite/icons": "^2.2.8", + "@blocksuite/store": "workspace:*", + "@floating-ui/dom": "^1.6.13", + "@lit/context": "^1.1.2", + "@preact/signals-core": "^1.8.0", + "@toeverything/theme": "^1.1.12", + "@types/lodash-es": "^4.17.12", + "collapse-white-space": "^2.1.0", + "date-fns": "^4.0.0", + "lit": "^3.2.0", + "lit-html": "^3.2.1", + "lodash-es": "^4.17.21", + "rxjs": "^7.8.1", + "yjs": "^13.6.21", + "zod": "^3.23.8" + }, + "exports": { + ".": "./src/index.ts", + "./effects": "./src/effects.ts" + }, + "files": [ + "src", + "dist", + "!src/__tests__", + "!dist/__tests__" + ], + "version": "0.20.0" +} diff --git a/blocksuite/affine/inlines/mention/src/affine-mention.ts b/blocksuite/affine/inlines/mention/src/affine-mention.ts new file mode 100644 index 0000000000..5ee6b9edf2 --- /dev/null +++ b/blocksuite/affine/inlines/mention/src/affine-mention.ts @@ -0,0 +1,149 @@ +import { UserProvider } from '@blocksuite/affine-shared/services'; +import { unsafeCSSVarV2 } from '@blocksuite/affine-shared/theme'; +import type { AffineTextAttributes } from '@blocksuite/affine-shared/types'; +import type { BlockStdScope } from '@blocksuite/block-std'; +import { ShadowlessElement } from '@blocksuite/block-std'; +import { + ZERO_WIDTH_NON_JOINER, + ZERO_WIDTH_SPACE, +} from '@blocksuite/block-std/inline'; +import { SignalWatcher, WithDisposable } from '@blocksuite/global/lit'; +import type { DeltaInsert } from '@blocksuite/store'; +import { css, html } from 'lit'; +import { property } from 'lit/decorators.js'; + +export class AffineMention extends SignalWatcher( + WithDisposable(ShadowlessElement) +) { + static override styles = css` + .affine-mention { + color: ${unsafeCSSVarV2('text/primary')}; + font-feature-settings: + 'liga' off, + 'clig' off; + /* Client/baseMedium */ + font-family: Inter; + font-size: 15px; + font-style: normal; + font-weight: 500; + line-height: 24px; /* 160% */ + padding: 0 4px; + border-radius: 4px; + } + .affine-mention:hover { + background: var(--affine-hover-color); + } + .affine-mention[data-selected='true'] { + background: var(--affine-hover-color); + } + .affine-mention[data-type='default'] { + color: ${unsafeCSSVarV2('text/primary')}; + } + .affine-mention[data-type='removed'] { + color: ${unsafeCSSVarV2('text/disable')}; + } + .affine-mention[data-type='error'] { + color: ${unsafeCSSVarV2('text/disable')}; + } + .affine-mention[data-type='loading'] { + color: ${unsafeCSSVarV2('text/placeholder')}; + background: ${unsafeCSSVarV2('skeleton/skeleton')}; + } + .loading-text { + display: inline-block; + } + .dots { + display: inline-block; + } + .dot { + display: inline-block; + opacity: 0; + animation: pulse 1.2s infinite; + } + .dots > .dot:nth-child(2) { + animation-delay: 0.4s; + } + .dots > .dot:nth-child(3) { + animation-delay: 0.8s; + } + @keyframes pulse { + 0% { + opacity: 0; + } + 33.333% { + opacity: 1; + } + 66.666% { + opacity: 1; + } + 100% { + opacity: 0; + } + } + `; + + override render() { + const errorContent = html`@Unknown Member`; + + const userService = this.std.getOptional(UserProvider); + const memberId = this.delta.attributes?.mention?.member; + if (!userService || !memberId) { + return errorContent; + } + + userService.revalidateUserInfo(memberId); + const isLoading$ = userService.isLoading$(memberId); + const userInfo$ = userService.userInfo$(memberId); + + if (userInfo$.value) { + if (userInfo$.value.removed) { + return html`@Inactive Member`; + } else { + return html`@${userInfo$.value.name ?? 'Unknown'}`; + } + } + + if (isLoading$.value) { + return html`@loading...`; + } + + return errorContent; + } + + @property({ type: Object }) + accessor delta: DeltaInsert = { + insert: ZERO_WIDTH_SPACE, + attributes: {}, + }; + + @property({ type: Boolean }) + accessor selected = false; + + @property({ attribute: false }) + accessor std!: BlockStdScope; +} diff --git a/blocksuite/affine/inlines/mention/src/effects.ts b/blocksuite/affine/inlines/mention/src/effects.ts new file mode 100644 index 0000000000..046ceafcce --- /dev/null +++ b/blocksuite/affine/inlines/mention/src/effects.ts @@ -0,0 +1,11 @@ +import { AffineMention } from './affine-mention'; + +export function effects() { + customElements.define('affine-mention', AffineMention); +} + +declare global { + interface HTMLElementTagNameMap { + 'affine-mention': AffineMention; + } +} diff --git a/blocksuite/affine/inlines/mention/src/exts.ts b/blocksuite/affine/inlines/mention/src/exts.ts new file mode 100644 index 0000000000..210b1df1d9 --- /dev/null +++ b/blocksuite/affine/inlines/mention/src/exts.ts @@ -0,0 +1,7 @@ +import type { ExtensionType } from '@blocksuite/store'; + +import { MentionInlineSpecExtension } from './inline-spec'; + +export const inlineMentionExtensions: ExtensionType[] = [ + MentionInlineSpecExtension, +]; diff --git a/blocksuite/affine/inlines/mention/src/index.ts b/blocksuite/affine/inlines/mention/src/index.ts new file mode 100644 index 0000000000..7064ecf895 --- /dev/null +++ b/blocksuite/affine/inlines/mention/src/index.ts @@ -0,0 +1,4 @@ +export * from './affine-mention'; +export * from './effects'; +export * from './exts'; +export * from './inline-spec'; diff --git a/blocksuite/affine/inlines/mention/src/inline-spec.ts b/blocksuite/affine/inlines/mention/src/inline-spec.ts new file mode 100644 index 0000000000..dd9eec5088 --- /dev/null +++ b/blocksuite/affine/inlines/mention/src/inline-spec.ts @@ -0,0 +1,32 @@ +import type { AffineTextAttributes } from '@blocksuite/affine-shared/types'; +import { StdIdentifier } from '@blocksuite/block-std'; +import { InlineSpecExtension } from '@blocksuite/block-std/inline'; +import { html } from 'lit'; +import { z } from 'zod'; + +export const MentionInlineSpecExtension = + InlineSpecExtension('mention', provider => { + const std = provider.get(StdIdentifier); + return { + name: 'mention', + schema: z + .object({ + member: z.string(), + notification: z.string(), + }) + .optional() + .nullable() + .catch(undefined), + match: delta => { + return !!delta.attributes?.mention?.member; + }, + renderer: ({ delta, selected }) => { + return html``; + }, + embed: true, + }; + }); diff --git a/blocksuite/affine/inlines/mention/tsconfig.json b/blocksuite/affine/inlines/mention/tsconfig.json new file mode 100644 index 0000000000..1e2cb0da10 --- /dev/null +++ b/blocksuite/affine/inlines/mention/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo" + }, + "include": ["./src"], + "references": [ + { "path": "../../components" }, + { "path": "../../model" }, + { "path": "../../shared" }, + { "path": "../../../framework/block-std" }, + { "path": "../../../framework/global" }, + { "path": "../../../framework/store" } + ] +} diff --git a/blocksuite/affine/inlines/preset/package.json b/blocksuite/affine/inlines/preset/package.json index d8193742fe..9761743377 100644 --- a/blocksuite/affine/inlines/preset/package.json +++ b/blocksuite/affine/inlines/preset/package.json @@ -14,13 +14,14 @@ "@blocksuite/affine-inline-footnote": "workspace:*", "@blocksuite/affine-inline-latex": "workspace:*", "@blocksuite/affine-inline-link": "workspace:*", + "@blocksuite/affine-inline-mention": "workspace:*", "@blocksuite/affine-inline-reference": "workspace:*", "@blocksuite/affine-model": "workspace:*", "@blocksuite/affine-rich-text": "workspace:*", "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/inlines/preset/src/default-inline-manager.ts b/blocksuite/affine/inlines/preset/src/default-inline-manager.ts index b4351d9d83..1ea6501d7b 100644 --- a/blocksuite/affine/inlines/preset/src/default-inline-manager.ts +++ b/blocksuite/affine/inlines/preset/src/default-inline-manager.ts @@ -1,6 +1,7 @@ import { FootNoteInlineSpecExtension } from '@blocksuite/affine-inline-footnote'; import { LatexInlineSpecExtension } from '@blocksuite/affine-inline-latex'; import { LinkInlineSpecExtension } from '@blocksuite/affine-inline-link'; +import { MentionInlineSpecExtension } from '@blocksuite/affine-inline-mention'; import { ReferenceInlineSpecExtension } from '@blocksuite/affine-inline-reference'; import type { AffineTextAttributes } from '@blocksuite/affine-shared/types'; import { InlineManagerExtension } from '@blocksuite/block-std/inline'; @@ -30,5 +31,6 @@ export const DefaultInlineManagerExtension = ReferenceInlineSpecExtension.identifier, LinkInlineSpecExtension.identifier, FootNoteInlineSpecExtension.identifier, + MentionInlineSpecExtension.identifier, ], }); diff --git a/blocksuite/affine/inlines/preset/src/inline-spec.ts b/blocksuite/affine/inlines/preset/src/inline-spec.ts index 1200e09666..5281d0fde3 100644 --- a/blocksuite/affine/inlines/preset/src/inline-spec.ts +++ b/blocksuite/affine/inlines/preset/src/inline-spec.ts @@ -1,6 +1,7 @@ import { inlineFootnoteExtensions } from '@blocksuite/affine-inline-footnote'; import { inlineLatexExtensions } from '@blocksuite/affine-inline-latex'; import { inlineLinkExtensions } from '@blocksuite/affine-inline-link'; +import { inlineMentionExtensions } from '@blocksuite/affine-inline-mention'; import { inlineReferenceExtensions } from '@blocksuite/affine-inline-reference'; import type { AffineTextAttributes } from '@blocksuite/affine-shared/types'; import { @@ -109,4 +110,5 @@ export const InlineSpecExtensions: ExtensionType[] = [ ...inlineReferenceExtensions, ...inlineLatexExtensions, ...inlineFootnoteExtensions, + ...inlineMentionExtensions, ]; diff --git a/blocksuite/affine/inlines/preset/tsconfig.json b/blocksuite/affine/inlines/preset/tsconfig.json index a2d342afa1..c1af92419b 100644 --- a/blocksuite/affine/inlines/preset/tsconfig.json +++ b/blocksuite/affine/inlines/preset/tsconfig.json @@ -11,6 +11,7 @@ { "path": "../footnote" }, { "path": "../latex" }, { "path": "../link" }, + { "path": "../mention" }, { "path": "../reference" }, { "path": "../../model" }, { "path": "../../rich-text" }, diff --git a/blocksuite/affine/inlines/reference/package.json b/blocksuite/affine/inlines/reference/package.json index 967fa918d9..41c8b2803e 100644 --- a/blocksuite/affine/inlines/reference/package.json +++ b/blocksuite/affine/inlines/reference/package.json @@ -15,7 +15,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/rich-text/package.json b/blocksuite/affine/rich-text/package.json index 3a0c352ee8..02499558f9 100644 --- a/blocksuite/affine/rich-text/package.json +++ b/blocksuite/affine/rich-text/package.json @@ -15,7 +15,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/shared/package.json b/blocksuite/affine/shared/package.json index d3bea7189e..5c3cd9f914 100644 --- a/blocksuite/affine/shared/package.json +++ b/blocksuite/affine/shared/package.json @@ -13,7 +13,7 @@ "@blocksuite/affine-model": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/shared/src/types/index.ts b/blocksuite/affine/shared/src/types/index.ts index e83c394e17..3f4cf5191b 100644 --- a/blocksuite/affine/shared/src/types/index.ts +++ b/blocksuite/affine/shared/src/types/index.ts @@ -73,6 +73,10 @@ export interface AffineTextAttributes { color?: string | null; latex?: string | null; footnote?: FootNote | null; + mention?: { + member: string; + notification: string; + } | null; } export type AffineInlineEditor = InlineEditor; diff --git a/blocksuite/affine/widgets/widget-drag-handle/package.json b/blocksuite/affine/widgets/widget-drag-handle/package.json index 999a7f5435..b8f3f12dd8 100644 --- a/blocksuite/affine/widgets/widget-drag-handle/package.json +++ b/blocksuite/affine/widgets/widget-drag-handle/package.json @@ -20,7 +20,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", diff --git a/blocksuite/affine/widgets/widget-edgeless-auto-connect/package.json b/blocksuite/affine/widgets/widget-edgeless-auto-connect/package.json index 96219a9a09..d8a3566655 100644 --- a/blocksuite/affine/widgets/widget-edgeless-auto-connect/package.json +++ b/blocksuite/affine/widgets/widget-edgeless-auto-connect/package.json @@ -17,7 +17,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@preact/signals-core": "^1.8.0", "@toeverything/theme": "^1.1.12", "lit": "^3.2.0", diff --git a/blocksuite/affine/widgets/widget-edgeless-toolbar/package.json b/blocksuite/affine/widgets/widget-edgeless-toolbar/package.json index 3225c13385..4b4aef0538 100644 --- a/blocksuite/affine/widgets/widget-edgeless-toolbar/package.json +++ b/blocksuite/affine/widgets/widget-edgeless-toolbar/package.json @@ -17,7 +17,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.2", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/widgets/widget-remote-selection/package.json b/blocksuite/affine/widgets/widget-remote-selection/package.json index 3d56e767e7..7056b27dfd 100644 --- a/blocksuite/affine/widgets/widget-remote-selection/package.json +++ b/blocksuite/affine/widgets/widget-remote-selection/package.json @@ -16,7 +16,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@preact/signals-core": "^1.8.0", "@toeverything/theme": "^1.1.12", "@types/lodash-es": "^4.17.12", diff --git a/blocksuite/affine/widgets/widget-slash-menu/package.json b/blocksuite/affine/widgets/widget-slash-menu/package.json index 6933909bab..8fdf332a19 100644 --- a/blocksuite/affine/widgets/widget-slash-menu/package.json +++ b/blocksuite/affine/widgets/widget-slash-menu/package.json @@ -15,7 +15,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/store": "workspace:*", "@floating-ui/dom": "^1.6.13", "@preact/signals-core": "^1.8.0", diff --git a/blocksuite/affine/widgets/widget-toolbar/package.json b/blocksuite/affine/widgets/widget-toolbar/package.json index d180ee5394..4d6e876466 100644 --- a/blocksuite/affine/widgets/widget-toolbar/package.json +++ b/blocksuite/affine/widgets/widget-toolbar/package.json @@ -18,7 +18,7 @@ "@blocksuite/affine-shared": "workspace:*", "@blocksuite/block-std": "workspace:*", "@blocksuite/global": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@floating-ui/dom": "^1.6.13", "@preact/signals-core": "^1.8.0", "@toeverything/theme": "^1.1.12", diff --git a/blocksuite/integration-test/package.json b/blocksuite/integration-test/package.json index 5f7a36ddd7..d12cf613bc 100644 --- a/blocksuite/integration-test/package.json +++ b/blocksuite/integration-test/package.json @@ -14,7 +14,7 @@ "license": "MIT", "dependencies": { "@blocksuite/affine": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@floating-ui/dom": "^1.6.13", "@lit/context": "^1.1.3", "@lottiefiles/dotlottie-wc": "^0.4.0", diff --git a/blocksuite/playground/package.json b/blocksuite/playground/package.json index ca60588492..f60a5a0165 100644 --- a/blocksuite/playground/package.json +++ b/blocksuite/playground/package.json @@ -14,7 +14,7 @@ "@blocksuite/affine-model": "workspace:*", "@blocksuite/affine-shared": "workspace:*", "@blocksuite/data-view": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@blocksuite/integration-test": "workspace:*", "@preact/signals-core": "^1.8.0", "@shoelace-style/shoelace": "2.20.1", diff --git a/packages/frontend/admin/package.json b/packages/frontend/admin/package.json index b371d79728..74a42ff870 100644 --- a/packages/frontend/admin/package.json +++ b/packages/frontend/admin/package.json @@ -6,7 +6,7 @@ "@affine/component": "workspace:*", "@affine/core": "workspace:*", "@affine/graphql": "workspace:*", - "@blocksuite/icons": "^2.2.4", + "@blocksuite/icons": "^2.2.8", "@radix-ui/react-accordion": "^1.2.2", "@radix-ui/react-alert-dialog": "^1.1.3", "@radix-ui/react-aspect-ratio": "^1.1.1", diff --git a/packages/frontend/apps/android/package.json b/packages/frontend/apps/android/package.json index aed36b0ff2..28945db478 100644 --- a/packages/frontend/apps/android/package.json +++ b/packages/frontend/apps/android/package.json @@ -13,7 +13,7 @@ "@affine/i18n": "workspace:*", "@affine/nbstore": "workspace:*", "@blocksuite/affine": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@capacitor/android": "^7.0.0", "@capacitor/app": "^7.0.0", "@capacitor/core": "^7.0.0", diff --git a/packages/frontend/apps/ios/package.json b/packages/frontend/apps/ios/package.json index 4b83b2449c..c3d71925f5 100644 --- a/packages/frontend/apps/ios/package.json +++ b/packages/frontend/apps/ios/package.json @@ -17,7 +17,7 @@ "@affine/i18n": "workspace:*", "@affine/nbstore": "workspace:*", "@blocksuite/affine": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@capacitor/app": "^7.0.0", "@capacitor/browser": "^7.0.0", "@capacitor/core": "^7.0.0", diff --git a/packages/frontend/apps/mobile/package.json b/packages/frontend/apps/mobile/package.json index 8d9998a21d..a7a9289e4b 100644 --- a/packages/frontend/apps/mobile/package.json +++ b/packages/frontend/apps/mobile/package.json @@ -14,7 +14,7 @@ "@affine/i18n": "workspace:*", "@affine/nbstore": "workspace:*", "@blocksuite/affine": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@sentry/react": "^9.2.0", "@toeverything/infra": "workspace:*", "react": "^19.0.0", diff --git a/packages/frontend/component/package.json b/packages/frontend/component/package.json index 28b3451908..22f9989d24 100644 --- a/packages/frontend/component/package.json +++ b/packages/frontend/component/package.json @@ -27,7 +27,7 @@ "@affine/i18n": "workspace:*", "@atlaskit/pragmatic-drag-and-drop": "^1.4.0", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@radix-ui/react-avatar": "^1.1.2", diff --git a/packages/frontend/core/package.json b/packages/frontend/core/package.json index 3cc2609c41..af97c59db4 100644 --- a/packages/frontend/core/package.json +++ b/packages/frontend/core/package.json @@ -19,7 +19,7 @@ "@affine/templates": "workspace:*", "@affine/track": "workspace:*", "@blocksuite/affine": "workspace:*", - "@blocksuite/icons": "^2.2.6", + "@blocksuite/icons": "^2.2.8", "@dotlottie/player-component": "^2.7.12", "@emotion/cache": "^11.14.0", "@emotion/react": "^11.14.0", diff --git a/packages/frontend/core/src/modules/at-menu-config/index.ts b/packages/frontend/core/src/modules/at-menu-config/index.ts index c54a715268..85b9bad666 100644 --- a/packages/frontend/core/src/modules/at-menu-config/index.ts +++ b/packages/frontend/core/src/modules/at-menu-config/index.ts @@ -1,10 +1,12 @@ import { type Framework } from '@toeverything/infra'; +import { WorkspaceServerService } from '../cloud'; import { WorkspaceDialogService } from '../dialogs'; import { DocsService } from '../doc'; import { DocDisplayMetaService } from '../doc-display-meta'; import { EditorSettingService } from '../editor-setting'; import { JournalService } from '../journal'; +import { MemberSearchService } from '../permissions'; import { SearchMenuService } from '../search-menu/services'; import { WorkspaceScope } from '../workspace'; import { AtMenuConfigService } from './services'; @@ -19,5 +21,7 @@ export function configAtMenuConfigModule(framework: Framework) { EditorSettingService, DocsService, SearchMenuService, + WorkspaceServerService, + MemberSearchService, ]); } diff --git a/packages/frontend/core/src/modules/at-menu-config/services/index.ts b/packages/frontend/core/src/modules/at-menu-config/services/index.ts index 44de379822..50e48bf659 100644 --- a/packages/frontend/core/src/modules/at-menu-config/services/index.ts +++ b/packages/frontend/core/src/modules/at-menu-config/services/index.ts @@ -1,6 +1,13 @@ +import { notify } from '@affine/component'; +import { UserFriendlyError } from '@affine/error'; +import { type DocMode as GraphqlDocMode } from '@affine/graphql'; import { I18n, i18nTime } from '@affine/i18n'; import track from '@affine/track'; -import type { EditorHost } from '@blocksuite/affine/block-std'; +import { + BLOCK_ID_ATTR, + type BlockComponent, + type EditorHost, +} from '@blocksuite/affine/block-std'; import { type LinkedMenuGroup, type LinkedMenuItem, @@ -8,24 +15,29 @@ import { LinkedWidgetUtils, } from '@blocksuite/affine/blocks/root'; import type { DocMode } from '@blocksuite/affine/model'; +import { DocModeProvider } from '@blocksuite/affine/shared/services'; import type { AffineInlineEditor } from '@blocksuite/affine/shared/types'; import type { DocMeta } from '@blocksuite/affine/store'; import { Text } from '@blocksuite/affine/store'; import { DateTimeIcon, + MainAvatarIcon, NewXxxEdgelessIcon, NewXxxPageIcon, } from '@blocksuite/icons/lit'; -import { computed, Signal } from '@preact/signals-core'; +import { computed, Signal, signal } from '@preact/signals-core'; import { Service } from '@toeverything/infra'; import { cssVarV2 } from '@toeverything/theme/v2'; import { html } from 'lit'; +import type { WorkspaceServerService } from '../../cloud'; import type { WorkspaceDialogService } from '../../dialogs'; import type { DocsService } from '../../doc'; import type { DocDisplayMetaService } from '../../doc-display-meta'; import type { EditorSettingService } from '../../editor-setting'; import { type JournalService, suggestJournalDate } from '../../journal'; +import { NotificationService } from '../../notification'; +import type { Member, MemberSearchService } from '../../permissions'; import type { SearchMenuService } from '../../search-menu/services'; function resolveSignal(data: T | Signal): T { @@ -45,7 +57,9 @@ export class AtMenuConfigService extends Service { private readonly dialogService: WorkspaceDialogService, private readonly editorSettingService: EditorSettingService, private readonly docsService: DocsService, - private readonly searchMenuService: SearchMenuService + private readonly searchMenuService: SearchMenuService, + private readonly workspaceServerService: WorkspaceServerService, + private readonly memberSearchService: MemberSearchService ) { super(); } @@ -310,12 +324,123 @@ export class AtMenuConfigService extends Service { return result; } + private memberGroup( + query: string, + close: () => void, + inlineEditor: AffineInlineEditor, + _: AbortSignal + ): LinkedMenuGroup { + const inviteItem: LinkedMenuItem = { + key: 'invite', + name: 'Invite...', + icon: MainAvatarIcon(), + action: () => { + close(); + + this.dialogService.open('setting', { + activeTab: 'workspace:members', + }); + }, + }; + const convertMemberToMenuItem = (member: Member) => { + const { id, name, avatarUrl } = member; + const icon = avatarUrl + ? html`` + : MainAvatarIcon(); + return { + key: id, + name: name ?? 'Unknown', + icon, + action: () => { + close(); + + const root = inlineEditor.rootElement; + const block = root?.closest(`[${BLOCK_ID_ATTR}]`); + if (!block) return; + + const notificationService = + this.workspaceServerService.server?.scope.get(NotificationService); + if (!notificationService) return; + + const doc = block.doc; + const workspaceId = doc.workspace.id; + const docId = doc.id; + const docTitle = doc.meta?.title ?? ''; + const mode = block.std.get(DocModeProvider).getEditorMode() ?? 'page'; + + notificationService + .mentionUser(id, workspaceId, { + id: docId, + title: docTitle, + blockId: block.blockId, + mode: mode as GraphqlDocMode, + }) + .then(notificationId => { + const inlineRange = inlineEditor.getInlineRange(); + if (inlineRange && inlineRange.length === 0) { + inlineEditor.insertText(inlineRange, ' ', { + mention: { + member: id, + notification: notificationId, + }, + }); + inlineEditor.setInlineRange({ + index: inlineRange.index + 1, + length: 0, + }); + } + + notify.success({ + title: I18n.t('com.affine.editor.at-menu.mention-success'), + }); + }) + .catch(error => { + const err = UserFriendlyError.fromAny(error); + notify.error({ + title: I18n[`error.${err.name}`](err.data), + }); + }); + }, + }; + }; + + if (query.length === 0) { + return { + name: I18n.t('com.affine.editor.at-menu.mention-member'), + items: [ + ...this.memberSearchService.result$.value + .slice(0, 3) + .map(member => convertMemberToMenuItem(member)), + inviteItem, + ], + }; + } + this.memberSearchService.reset(); + + const items = signal([inviteItem]); + const loading = this.memberSearchService.isLoading$.signal; + this.memberSearchService.result$.subscribe(members => { + items.value = [ + ...members.map(member => convertMemberToMenuItem(member)), + inviteItem, + ]; + }); + this.memberSearchService.search(query); + + return { + name: I18n.t('com.affine.editor.at-menu.mention-member'), + items, + loading, + }; + } + private getMenusFn(): LinkedWidgetConfig['getMenus'] { return (query, close, editorHost, inlineEditor, abortSignal) => { return [ this.journalGroup(query, close, inlineEditor), this.linkToDocGroup(query, close, inlineEditor, abortSignal), this.newDocMenuGroup(query, close, editorHost, inlineEditor), + this.memberGroup(query, close, inlineEditor, abortSignal), ]; }; } diff --git a/packages/frontend/i18n/src/i18n-completenesses.json b/packages/frontend/i18n/src/i18n-completenesses.json index 2683fe5302..69e6db8ae2 100644 --- a/packages/frontend/i18n/src/i18n-completenesses.json +++ b/packages/frontend/i18n/src/i18n-completenesses.json @@ -1,26 +1,26 @@ { - "ar": 95, + "ar": 94, "ca": 4, "da": 4, - "de": 95, - "el-GR": 95, + "de": 94, + "el-GR": 94, "en": 100, - "es-AR": 95, + "es-AR": 94, "es-CL": 96, - "es": 95, - "fa": 95, - "fr": 95, + "es": 94, + "fa": 94, + "fr": 94, "hi": 2, - "it-IT": 95, + "it-IT": 94, "it": 1, - "ja": 95, + "ja": 94, "ko": 60, - "pl": 95, - "pt-BR": 95, - "ru": 95, - "sv-SE": 95, - "uk": 95, + "pl": 94, + "pt-BR": 94, + "ru": 94, + "sv-SE": 94, + "uk": 94, "ur": 2, - "zh-Hans": 95, - "zh-Hant": 95 + "zh-Hans": 94, + "zh-Hant": 94 } diff --git a/packages/frontend/i18n/src/i18n.gen.ts b/packages/frontend/i18n/src/i18n.gen.ts index d05c04694d..012b92cca6 100644 --- a/packages/frontend/i18n/src/i18n.gen.ts +++ b/packages/frontend/i18n/src/i18n.gen.ts @@ -6915,6 +6915,14 @@ export function useAFFiNEI18N(): { * `Select a specific date` */ ["com.affine.editor.at-menu.date-picker"](): string; + /** + * `Mention Member` + */ + ["com.affine.editor.at-menu.mention-member"](): string; + /** + * `Successfully mentioned the member` + */ + ["com.affine.editor.at-menu.mention-success"](): string; /** * `Show` */ diff --git a/packages/frontend/i18n/src/resources/en.json b/packages/frontend/i18n/src/resources/en.json index ec480000e2..26f283f94f 100644 --- a/packages/frontend/i18n/src/resources/en.json +++ b/packages/frontend/i18n/src/resources/en.json @@ -1717,6 +1717,8 @@ "com.affine.editor.at-menu.more-docs-hint": "{{count}} more docs", "com.affine.editor.at-menu.journal": "Journal", "com.affine.editor.at-menu.date-picker": "Select a specific date", + "com.affine.editor.at-menu.mention-member": "Mention Member", + "com.affine.editor.at-menu.mention-success": "Successfully mentioned the member", "com.affine.editor.bi-directional-link-panel.show": "Show", "com.affine.editor.bi-directional-link-panel.hide": "Hide", "com.affine.editor.edgeless-note-header.fold-page-block": "Fold page block", diff --git a/tools/utils/src/workspace.gen.ts b/tools/utils/src/workspace.gen.ts index b12f056ddf..dd2d81485d 100644 --- a/tools/utils/src/workspace.gen.ts +++ b/tools/utils/src/workspace.gen.ts @@ -37,6 +37,7 @@ export const PackageList = [ 'blocksuite/affine/inlines/footnote', 'blocksuite/affine/inlines/latex', 'blocksuite/affine/inlines/link', + 'blocksuite/affine/inlines/mention', 'blocksuite/affine/inlines/preset', 'blocksuite/affine/inlines/reference', 'blocksuite/affine/model', @@ -580,6 +581,18 @@ export const PackageList = [ 'blocksuite/framework/store', ], }, + { + location: 'blocksuite/affine/inlines/mention', + name: '@blocksuite/affine-inline-mention', + workspaceDependencies: [ + 'blocksuite/affine/components', + 'blocksuite/affine/model', + 'blocksuite/affine/shared', + 'blocksuite/framework/block-std', + 'blocksuite/framework/global', + 'blocksuite/framework/store', + ], + }, { location: 'blocksuite/affine/inlines/preset', name: '@blocksuite/affine-inline-preset', @@ -588,6 +601,7 @@ export const PackageList = [ 'blocksuite/affine/inlines/footnote', 'blocksuite/affine/inlines/latex', 'blocksuite/affine/inlines/link', + 'blocksuite/affine/inlines/mention', 'blocksuite/affine/inlines/reference', 'blocksuite/affine/model', 'blocksuite/affine/rich-text', @@ -1123,6 +1137,7 @@ export type PackageName = | '@blocksuite/affine-inline-footnote' | '@blocksuite/affine-inline-latex' | '@blocksuite/affine-inline-link' + | '@blocksuite/affine-inline-mention' | '@blocksuite/affine-inline-preset' | '@blocksuite/affine-inline-reference' | '@blocksuite/affine-model' diff --git a/tsconfig.json b/tsconfig.json index 035de53e3a..1a0930d39e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -84,6 +84,7 @@ { "path": "./blocksuite/affine/inlines/footnote" }, { "path": "./blocksuite/affine/inlines/latex" }, { "path": "./blocksuite/affine/inlines/link" }, + { "path": "./blocksuite/affine/inlines/mention" }, { "path": "./blocksuite/affine/inlines/preset" }, { "path": "./blocksuite/affine/inlines/reference" }, { "path": "./blocksuite/affine/model" }, diff --git a/yarn.lock b/yarn.lock index 9349075e2d..d31e3692eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -174,7 +174,7 @@ __metadata: "@affine/component": "workspace:*" "@affine/core": "workspace:*" "@affine/graphql": "workspace:*" - "@blocksuite/icons": "npm:^2.2.4" + "@blocksuite/icons": "npm:^2.2.8" "@radix-ui/react-accordion": "npm:^1.2.2" "@radix-ui/react-alert-dialog": "npm:^1.1.3" "@radix-ui/react-aspect-ratio": "npm:^1.1.1" @@ -240,7 +240,7 @@ __metadata: "@affine/i18n": "workspace:*" "@affine/nbstore": "workspace:*" "@blocksuite/affine": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@capacitor/android": "npm:^7.0.0" "@capacitor/app": "npm:^7.0.0" "@capacitor/cli": "npm:^7.0.0" @@ -298,7 +298,7 @@ __metadata: "@atlaskit/pragmatic-drag-and-drop": "npm:^1.4.0" "@atlaskit/pragmatic-drag-and-drop-hitbox": "npm:^1.0.3" "@blocksuite/affine": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@chromatic-com/storybook": "npm:^3.2.2" "@emotion/react": "npm:^11.14.0" "@emotion/styled": "npm:^11.14.0" @@ -386,7 +386,7 @@ __metadata: "@affine/templates": "workspace:*" "@affine/track": "workspace:*" "@blocksuite/affine": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@dotlottie/player-component": "npm:^2.7.12" "@emotion/cache": "npm:^11.14.0" "@emotion/react": "npm:^11.14.0" @@ -647,7 +647,7 @@ __metadata: "@affine/native": "workspace:*" "@affine/nbstore": "workspace:*" "@blocksuite/affine": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@capacitor/app": "npm:^7.0.0" "@capacitor/browser": "npm:^7.0.0" "@capacitor/cli": "npm:^7.0.0" @@ -716,7 +716,7 @@ __metadata: "@affine/i18n": "workspace:*" "@affine/nbstore": "workspace:*" "@blocksuite/affine": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@sentry/react": "npm:^9.2.0" "@toeverything/infra": "workspace:*" "@types/react": "npm:^19.0.1" @@ -2315,7 +2315,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2341,7 +2341,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -2366,7 +2366,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@emoji-mart/data": "npm:^1.2.1" "@floating-ui/dom": "npm:^1.6.10" @@ -2396,7 +2396,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2423,7 +2423,7 @@ __metadata: "@blocksuite/block-std": "workspace:*" "@blocksuite/data-view": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2452,7 +2452,7 @@ __metadata: "@blocksuite/block-std": "workspace:*" "@blocksuite/data-view": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2504,7 +2504,7 @@ __metadata: "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2530,7 +2530,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2559,7 +2559,7 @@ __metadata: "@blocksuite/affine-widget-frame-title": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2586,7 +2586,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2613,7 +2613,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2641,7 +2641,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2671,7 +2671,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -2756,7 +2756,7 @@ __metadata: "@blocksuite/block-std": "workspace:*" "@blocksuite/data-view": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2790,7 +2790,7 @@ __metadata: "@blocksuite/affine-widget-slash-menu": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2848,7 +2848,7 @@ __metadata: "@blocksuite/block-std": "workspace:*" "@blocksuite/data-view": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@preact/signals-core": "npm:^1.8.0" @@ -2868,7 +2868,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2905,7 +2905,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2930,7 +2930,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2957,7 +2957,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -2983,7 +2983,7 @@ __metadata: "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -3014,7 +3014,7 @@ __metadata: "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -3045,7 +3045,7 @@ __metadata: "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -3073,7 +3073,7 @@ __metadata: "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -3101,7 +3101,7 @@ __metadata: "@blocksuite/affine-widget-edgeless-toolbar": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -3139,7 +3139,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3168,7 +3168,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3201,7 +3201,34 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" + "@blocksuite/store": "workspace:*" + "@floating-ui/dom": "npm:^1.6.13" + "@lit/context": "npm:^1.1.2" + "@preact/signals-core": "npm:^1.8.0" + "@toeverything/theme": "npm:^1.1.12" + "@types/lodash-es": "npm:^4.17.12" + collapse-white-space: "npm:^2.1.0" + date-fns: "npm:^4.0.0" + lit: "npm:^3.2.0" + lit-html: "npm:^3.2.1" + lodash-es: "npm:^4.17.21" + rxjs: "npm:^7.8.1" + yjs: "npm:^13.6.21" + zod: "npm:^3.23.8" + languageName: unknown + linkType: soft + +"@blocksuite/affine-inline-mention@workspace:*, @blocksuite/affine-inline-mention@workspace:blocksuite/affine/inlines/mention": + version: 0.0.0-use.local + resolution: "@blocksuite/affine-inline-mention@workspace:blocksuite/affine/inlines/mention" + dependencies: + "@blocksuite/affine-components": "workspace:*" + "@blocksuite/affine-model": "workspace:*" + "@blocksuite/affine-shared": "workspace:*" + "@blocksuite/block-std": "workspace:*" + "@blocksuite/global": "workspace:*" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3227,13 +3254,14 @@ __metadata: "@blocksuite/affine-inline-footnote": "workspace:*" "@blocksuite/affine-inline-latex": "workspace:*" "@blocksuite/affine-inline-link": "workspace:*" + "@blocksuite/affine-inline-mention": "workspace:*" "@blocksuite/affine-inline-reference": "workspace:*" "@blocksuite/affine-model": "workspace:*" "@blocksuite/affine-rich-text": "workspace:*" "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3266,7 +3294,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3310,7 +3338,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3335,7 +3363,7 @@ __metadata: "@blocksuite/affine-model": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3387,7 +3415,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" @@ -3413,7 +3441,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@preact/signals-core": "npm:^1.8.0" "@toeverything/theme": "npm:^1.1.12" lit: "npm:^3.2.0" @@ -3432,7 +3460,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.2" "@preact/signals-core": "npm:^1.8.0" @@ -3472,7 +3500,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@preact/signals-core": "npm:^1.8.0" "@toeverything/theme": "npm:^1.1.12" "@types/lodash-es": "npm:^4.17.12" @@ -3506,7 +3534,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@floating-ui/dom": "npm:^1.6.13" "@preact/signals-core": "npm:^1.8.0" @@ -3530,7 +3558,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@floating-ui/dom": "npm:^1.6.13" "@preact/signals-core": "npm:^1.8.0" "@toeverything/theme": "npm:^1.1.12" @@ -3582,6 +3610,7 @@ __metadata: "@blocksuite/affine-inline-footnote": "workspace:*" "@blocksuite/affine-inline-latex": "workspace:*" "@blocksuite/affine-inline-link": "workspace:*" + "@blocksuite/affine-inline-mention": "workspace:*" "@blocksuite/affine-inline-preset": "workspace:*" "@blocksuite/affine-inline-reference": "workspace:*" "@blocksuite/affine-model": "workspace:*" @@ -3653,7 +3682,7 @@ __metadata: "@blocksuite/affine-shared": "workspace:*" "@blocksuite/block-std": "workspace:*" "@blocksuite/global": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/store": "workspace:*" "@emotion/hash": "npm:^0.9.2" "@floating-ui/dom": "npm:^1.6.13" @@ -3684,9 +3713,9 @@ __metadata: languageName: unknown linkType: soft -"@blocksuite/icons@npm:^2.2.4, @blocksuite/icons@npm:^2.2.6": - version: 2.2.6 - resolution: "@blocksuite/icons@npm:2.2.6" +"@blocksuite/icons@npm:^2.2.8": + version: 2.2.8 + resolution: "@blocksuite/icons@npm:2.2.8" peerDependencies: "@types/react": ^18.0.25 change-case: 4.1.2 @@ -3697,7 +3726,7 @@ __metadata: optional: true react: optional: true - checksum: 10/6ab9de7a0e39d4e3c0712134403dc2fcb9df07086afe1808574e72319ca5443ec58bc7ad68ee3db7cff0581ce435d0d00cc21874811c7a7735516dc16ec008ae + checksum: 10/0b5a80c67cd5c5896406948de95f60c825453598ff8f17de2ff2b6c8784a8ba8e23bd0c39f5461d87ff46e13883714db31bbfcff4215062b730039cc141a8c6a languageName: node linkType: hard @@ -3706,7 +3735,7 @@ __metadata: resolution: "@blocksuite/integration-test@workspace:blocksuite/integration-test" dependencies: "@blocksuite/affine": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@floating-ui/dom": "npm:^1.6.13" "@lit/context": "npm:^1.1.3" "@lottiefiles/dotlottie-wc": "npm:^0.4.0" @@ -3734,7 +3763,7 @@ __metadata: "@blocksuite/affine-model": "workspace:*" "@blocksuite/affine-shared": "workspace:*" "@blocksuite/data-view": "workspace:*" - "@blocksuite/icons": "npm:^2.2.6" + "@blocksuite/icons": "npm:^2.2.8" "@blocksuite/integration-test": "workspace:*" "@preact/signals-core": "npm:^1.8.0" "@shoelace-style/shoelace": "npm:2.20.1"