chore: bump blocksuite (#8230)

## 0.17.11

### Patch Changes

- [3c61be5](3c61be5ded): - Refactor drag handle widget
  - Split embed blocks to `@blocksuite/affine-block-embed`
  - Fix latex selected state in edgeless mode
  - Fix unclear naming
  - Fix prototype pollution
  - Fix portal interaction in affine modal
  - Fix paste linked block on edgeless
  - Add scroll anchoring widget
  - Add highlight selection
This commit is contained in:
fundon
2024-09-18 12:11:14 +00:00
parent b73d3b3d55
commit f397815ad1
21 changed files with 424 additions and 300 deletions

View File

@@ -3,8 +3,8 @@
"private": true, "private": true,
"type": "module", "type": "module",
"devDependencies": { "devDependencies": {
"@blocksuite/global": "0.17.10", "@blocksuite/global": "0.17.11",
"@blocksuite/store": "0.17.10", "@blocksuite/store": "0.17.11",
"vitest": "2.1.0" "vitest": "2.1.0"
}, },
"exports": { "exports": {

View File

@@ -14,10 +14,10 @@
"@affine/debug": "workspace:*", "@affine/debug": "workspace:*",
"@affine/env": "workspace:*", "@affine/env": "workspace:*",
"@affine/templates": "workspace:*", "@affine/templates": "workspace:*",
"@blocksuite/blocks": "0.17.10", "@blocksuite/blocks": "0.17.11",
"@blocksuite/global": "0.17.10", "@blocksuite/global": "0.17.11",
"@blocksuite/presets": "0.17.10", "@blocksuite/presets": "0.17.11",
"@blocksuite/store": "0.17.10", "@blocksuite/store": "0.17.11",
"@datastructures-js/binary-search-tree": "^5.3.2", "@datastructures-js/binary-search-tree": "^5.3.2",
"foxact": "^0.2.33", "foxact": "^0.2.33",
"fuse.js": "^7.0.0", "fuse.js": "^7.0.0",
@@ -34,7 +34,7 @@
"devDependencies": { "devDependencies": {
"@affine-test/fixtures": "workspace:*", "@affine-test/fixtures": "workspace:*",
"@affine/templates": "workspace:*", "@affine/templates": "workspace:*",
"@blocksuite/presets": "0.17.10", "@blocksuite/presets": "0.17.11",
"@testing-library/react": "^16.0.0", "@testing-library/react": "^16.0.0",
"fake-indexeddb": "^6.0.0", "fake-indexeddb": "^6.0.0",
"react": "^18.2.0", "react": "^18.2.0",

View File

@@ -28,7 +28,7 @@
"@affine/core": "workspace:*", "@affine/core": "workspace:*",
"@affine/i18n": "workspace:*", "@affine/i18n": "workspace:*",
"@affine/native": "workspace:*", "@affine/native": "workspace:*",
"@blocksuite/global": "0.17.10", "@blocksuite/global": "0.17.11",
"@electron-forge/cli": "^7.3.0", "@electron-forge/cli": "^7.3.0",
"@electron-forge/core": "^7.3.0", "@electron-forge/core": "^7.3.0",
"@electron-forge/core-utils": "^7.3.0", "@electron-forge/core-utils": "^7.3.0",

View File

@@ -13,7 +13,7 @@
"@affine/component": "workspace:*", "@affine/component": "workspace:*",
"@affine/core": "workspace:*", "@affine/core": "workspace:*",
"@affine/i18n": "workspace:*", "@affine/i18n": "workspace:*",
"@blocksuite/blocks": "0.17.10", "@blocksuite/blocks": "0.17.11",
"@blocksuite/icons": "^2.1.67", "@blocksuite/icons": "^2.1.67",
"@sentry/react": "^8.0.0", "@sentry/react": "^8.0.0",
"react": "^18.2.0", "react": "^18.2.0",

View File

@@ -63,7 +63,7 @@
"zod": "^3.22.4" "zod": "^3.22.4"
}, },
"devDependencies": { "devDependencies": {
"@blocksuite/global": "0.17.10", "@blocksuite/global": "0.17.11",
"@blocksuite/icons": "2.1.67", "@blocksuite/icons": "2.1.67",
"@chromatic-com/storybook": "^2.0.0", "@chromatic-com/storybook": "^2.0.0",
"@storybook/addon-essentials": "^8.2.9", "@storybook/addon-essentials": "^8.2.9",

View File

@@ -16,13 +16,13 @@
"@affine/i18n": "workspace:*", "@affine/i18n": "workspace:*",
"@affine/templates": "workspace:*", "@affine/templates": "workspace:*",
"@affine/track": "workspace:*", "@affine/track": "workspace:*",
"@blocksuite/block-std": "0.17.10", "@blocksuite/block-std": "0.17.11",
"@blocksuite/blocks": "0.17.10", "@blocksuite/blocks": "0.17.11",
"@blocksuite/global": "0.17.10", "@blocksuite/global": "0.17.11",
"@blocksuite/icons": "2.1.67", "@blocksuite/icons": "2.1.67",
"@blocksuite/inline": "0.17.10", "@blocksuite/inline": "0.17.11",
"@blocksuite/presets": "0.17.10", "@blocksuite/presets": "0.17.11",
"@blocksuite/store": "0.17.10", "@blocksuite/store": "0.17.11",
"@dnd-kit/core": "^6.1.0", "@dnd-kit/core": "^6.1.0",
"@dnd-kit/modifiers": "^7.0.0", "@dnd-kit/modifiers": "^7.0.0",
"@dnd-kit/sortable": "^8.0.0", "@dnd-kit/sortable": "^8.0.0",

View File

@@ -34,7 +34,6 @@ import type {
DocMode, DocMode,
DocModeProvider, DocModeProvider,
QuickSearchResult, QuickSearchResult,
ReferenceParams,
RootService, RootService,
} from '@blocksuite/blocks'; } from '@blocksuite/blocks';
import { import {
@@ -42,12 +41,10 @@ import {
DocModeExtension, DocModeExtension,
EdgelessRootBlockComponent, EdgelessRootBlockComponent,
EmbedLinkedDocBlockComponent, EmbedLinkedDocBlockComponent,
EmbedOptionProvider,
NotificationExtension, NotificationExtension,
ParseDocUrlExtension, ParseDocUrlExtension,
PeekViewExtension, PeekViewExtension,
QuickSearchExtension, QuickSearchExtension,
QuickSearchProvider,
ReferenceNodeConfigExtension, ReferenceNodeConfigExtension,
} from '@blocksuite/blocks'; } from '@blocksuite/blocks';
import { AIChatBlockSchema } from '@blocksuite/presets'; import { AIChatBlockSchema } from '@blocksuite/presets';
@@ -62,6 +59,7 @@ import {
import { type TemplateResult } from 'lit'; import { type TemplateResult } from 'lit';
import { customElement } from 'lit/decorators.js'; import { customElement } from 'lit/decorators.js';
import { literal } from 'lit/static-html.js'; import { literal } from 'lit/static-html.js';
import { pick } from 'lodash-es';
export type ReferenceReactRenderer = ( export type ReferenceReactRenderer = (
reference: AffineReference reference: AffineReference
@@ -318,14 +316,13 @@ export function patchQuickSearchService(framework: FrameworkProvider) {
} }
if (result.source === 'link') { if (result.source === 'link') {
const { docId, blockIds, elementIds, mode } = result.payload;
resolve({ resolve({
docId, docId: result.payload.docId,
params: { params: pick(result.payload, [
blockIds, 'mode',
elementIds, 'blockIds',
mode, 'elementIds',
}, ]),
}); });
return; return;
} }
@@ -349,13 +346,8 @@ export function patchQuickSearchService(framework: FrameworkProvider) {
primaryMode: mode, primaryMode: mode,
docProps, docProps,
}); });
track.doc.editor.quickSearch.createDoc({
mode,
});
resolve({ resolve({ docId: newDoc.id });
docId: newDoc.id,
});
return; return;
} }
}, },
@@ -373,6 +365,7 @@ export function patchQuickSearchService(framework: FrameworkProvider) {
return searchResult; return searchResult;
}, },
}); });
const SlashMenuQuickSearchExtension = patchSpecService<RootService>( const SlashMenuQuickSearchExtension = patchSpecService<RootService>(
'affine:page', 'affine:page',
() => {}, () => {},
@@ -383,51 +376,38 @@ export function patchQuickSearchService(framework: FrameworkProvider) {
'action' in item && 'action' in item &&
(item.name === 'Linked Doc' || item.name === 'Link') (item.name === 'Linked Doc' || item.name === 'Link')
) { ) {
const oldAction = item.action; item.action = async ({ rootComponent }) => {
item.action = async ({ model, rootComponent }) => { // TODO(@Mirone): fix the type
const { host, std } = rootComponent; // @ts-expect-error fixme
const quickSearchService = const { success, insertedLinkType } =
component.std.getOptional(QuickSearchProvider); // @ts-expect-error fixme
rootComponent.std.command.exec('insertLinkByQuickSearch');
if (!quickSearchService) if (!success) return;
return oldAction({ model, rootComponent });
const result = await quickSearchService.openQuickSearch(); // TODO(@Mirone): fix the type
if (result === null) return; insertedLinkType
?.then(
(type: {
flavour?: 'affine:embed-linked-doc' | 'affine:bookmark';
}) => {
const flavour = type?.flavour;
if (!flavour) return;
if ('docId' in result) { if (flavour === 'affine:embed-linked-doc') {
const linkedDoc = std.collection.getDoc(result.docId); track.doc.editor.slashMenu.linkDoc({
if (!linkedDoc) return; control: 'linkDoc',
});
return;
}
const props: { if (flavour === 'affine:bookmark') {
flavour: string; track.doc.editor.slashMenu.bookmark();
pageId: string; return;
params?: ReferenceParams; }
} = { }
flavour: 'affine:embed-linked-doc', )
pageId: linkedDoc.id, .catch(console.error);
};
if (result.params) {
props.params = result.params;
}
host.doc.addSiblingBlocks(model, [props]);
track.doc.editor.slashMenu.linkDoc({ control: 'linkDoc' });
} else if (result.externalUrl) {
const embedOptions = std
.get(EmbedOptionProvider)
.getEmbedBlockOptions(result.externalUrl);
if (!embedOptions) return;
host.doc.addSiblingBlocks(model, [
{
flavour: embedOptions.flavour,
url: result.externalUrl,
},
]);
}
}; };
} }
}); });

View File

@@ -16,7 +16,10 @@ import {
WorkspaceService, WorkspaceService,
} from '@toeverything/infra'; } from '@toeverything/infra';
export function createLinkedWidgetConfig(framework: FrameworkProvider) { // TODO: fix the type
export function createLinkedWidgetConfig(
framework: FrameworkProvider
): Partial<Record<string, unknown>> {
return { return {
getMenus: ( getMenus: (
query: string, query: string,

View File

@@ -1,5 +1,6 @@
import { notify } from '@affine/component'; import { notify } from '@affine/component';
import { getAffineCloudBaseUrl } from '@affine/core/modules/cloud/services/fetch'; import { getAffineCloudBaseUrl } from '@affine/core/modules/cloud/services/fetch';
import { toURLSearchParams } from '@affine/core/utils';
import { useI18n } from '@affine/i18n'; import { useI18n } from '@affine/i18n';
import { track } from '@affine/track'; import { track } from '@affine/track';
import { type EditorHost } from '@blocksuite/block-std'; import { type EditorHost } from '@blocksuite/block-std';
@@ -34,20 +35,14 @@ export const generateUrl = ({
if (!baseUrl) return null; if (!baseUrl) return null;
try { try {
const url = new URL(`${baseUrl}/workspace/${workspaceId}/${pageId}`); const url = new URL(`/workspace/${workspaceId}/${pageId}`, baseUrl);
const search = url.searchParams; const search = toURLSearchParams({
if (shareMode) { mode: shareMode,
search.append('mode', shareMode); blockIds,
} elementIds,
if (blockIds && blockIds.length > 0) { xywh,
search.append('blockIds', blockIds.join(',')); });
} if (search) url.search = search.toString();
if (elementIds && elementIds.length > 0) {
search.append('elementIds', elementIds.join(','));
}
if (xywh) {
search.append('xywh', xywh);
}
return url.toString(); return url.toString();
} catch { } catch {
return null; return null;

View File

@@ -1,5 +1,5 @@
import { useAutoFocus } from '@affine/component'; import { useAutoFocus } from '@affine/component';
import { getSvgPath } from '@blocksuite/global/utils'; import { getFigmaSquircleSvgPath } from '@blocksuite/global/utils';
import { SearchIcon } from '@blocksuite/icons/rc'; import { SearchIcon } from '@blocksuite/icons/rc';
import clsx from 'clsx'; import clsx from 'clsx';
import { debounce } from 'lodash-es'; import { debounce } from 'lodash-es';
@@ -49,7 +49,13 @@ export const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(
const [inputValue, setInputValue] = useState(value); const [inputValue, setInputValue] = useState(value);
const clipPath = useMemo( const clipPath = useMemo(
() => getSvgPath({ width, height, cornerRadius, cornerSmoothing }), () =>
getFigmaSquircleSvgPath({
width,
height,
cornerRadius,
cornerSmoothing,
}),
[cornerRadius, cornerSmoothing, height, width] [cornerRadius, cornerSmoothing, height, width]
); );

View File

@@ -1,10 +1,15 @@
import type { DocMode, EdgelessRootService } from '@blocksuite/blocks'; import type {
DocMode,
EdgelessRootService,
ReferenceParams,
} from '@blocksuite/blocks';
import type { InlineEditor } from '@blocksuite/inline'; import type { InlineEditor } from '@blocksuite/inline';
import type { AffineEditorContainer, DocTitle } from '@blocksuite/presets'; import type { AffineEditorContainer, DocTitle } from '@blocksuite/presets';
import type { DocService, WorkspaceService } from '@toeverything/infra'; import type { DocService, WorkspaceService } from '@toeverything/infra';
import { Entity, LiveData } from '@toeverything/infra'; import { Entity, LiveData } from '@toeverything/infra';
import { isEqual } from 'lodash-es'; import { isEqual } from 'lodash-es';
import { paramsParseOptions, preprocessParams } from '../../navigation/utils';
import type { WorkbenchView } from '../../workbench'; import type { WorkbenchView } from '../../workbench';
import { EditorScope } from '../scopes/editor'; import { EditorScope } from '../scopes/editor';
import type { EditorSelector } from '../types'; import type { EditorSelector } from '../types';
@@ -58,22 +63,11 @@ export class Editor extends Entity {
*/ */
bindWorkbenchView(view: WorkbenchView) { bindWorkbenchView(view: WorkbenchView) {
// eslint-disable-next-line rxjs/finnish // eslint-disable-next-line rxjs/finnish
const viewParams$ = view.queryString$<{ const viewParams$ = view
mode?: DocMode; .queryString$<
blockIds?: string[]; ReferenceParams & { refreshKey?: string }
elementIds?: string[]; >(paramsParseOptions)
refreshKey?: string; .map(preprocessParams);
}>({
// Cannot handle single id situation correctly: `blockIds=xxx`
arrayFormat: 'none',
types: {
mode: value =>
value === 'page' || value === 'edgeless' ? value : undefined,
blockIds: value => (value.length ? value.split(',') : []),
elementIds: value => (value.length ? value.split(',') : []),
refreshKey: 'string',
},
});
const stablePrimaryMode = this.doc.getPrimaryMode(); const stablePrimaryMode = this.doc.getPrimaryMode();

View File

@@ -6,7 +6,6 @@ import type {
EdgelessRootService, EdgelessRootService,
PageRootService, PageRootService,
} from '@blocksuite/blocks'; } from '@blocksuite/blocks';
import { ZOOM_MAX } from '@blocksuite/blocks';
import { Bound, deserializeXYWH } from '@blocksuite/global/utils'; import { Bound, deserializeXYWH } from '@blocksuite/global/utils';
function scrollAnchoringInEdgelessMode( function scrollAnchoringInEdgelessMode(
@@ -47,8 +46,7 @@ function scrollAnchoringInEdgelessMode(
const { zoom, centerX, centerY } = service.getFitToScreenData( const { zoom, centerX, centerY } = service.getFitToScreenData(
[20, 20, 100, 20], [20, 20, 100, 20],
[bounds], [bounds]
ZOOM_MAX
); );
service.viewport.setCenter(centerX, centerY); service.viewport.setCenter(centerX, centerY);

View File

@@ -53,13 +53,37 @@ const testCases: [string, ReturnType<typeof resolveLinkToDoc>][] = [
}, },
], ],
[ [
'http//localhost:8000/workspace/48__RTCSwASvWZxyAk3Jw/-Uge-K6SYcAbcNYfQ5U-j?blockIds=xxxx', 'http//localhost:8000/workspace/48__RTCSwASvWZxyAk3Jw/-Uge-K6SYcAbcNYfQ5U-j?mode=page&blockIds=xxxx',
{ {
workspaceId: '48__RTCSwASvWZxyAk3Jw', workspaceId: '48__RTCSwASvWZxyAk3Jw',
docId: '-Uge-K6SYcAbcNYfQ5U-j', docId: '-Uge-K6SYcAbcNYfQ5U-j',
mode: 'page',
blockIds: ['xxxx'], blockIds: ['xxxx'],
}, },
], ],
[
'http//localhost:8000/workspace/48__RTCSwASvWZxyAk3Jw/-Uge-K6SYcAbcNYfQ5U-j?mode=&blockIds=',
{
workspaceId: '48__RTCSwASvWZxyAk3Jw',
docId: '-Uge-K6SYcAbcNYfQ5U-j',
},
],
[
'http//localhost:8000/workspace/48__RTCSwASvWZxyAk3Jw/-Uge-K6SYcAbcNYfQ5U-j?mode=edgeless&elementIds=yyyy',
{
workspaceId: '48__RTCSwASvWZxyAk3Jw',
docId: '-Uge-K6SYcAbcNYfQ5U-j',
mode: 'edgeless',
elementIds: ['yyyy'],
},
],
[
'http//localhost:8000/workspace/48__RTCSwASvWZxyAk3Jw/-Uge-K6SYcAbcNYfQ5U-j?mode=edgeles&elementId=yyyy',
{
workspaceId: '48__RTCSwASvWZxyAk3Jw',
docId: '-Uge-K6SYcAbcNYfQ5U-j',
},
],
]; ];
for (const [input, expected] of testCases) { for (const [input, expected] of testCases) {

View File

@@ -1,4 +1,6 @@
import type { DocMode } from '@blocksuite/blocks'; import type { ReferenceParams } from '@blocksuite/blocks';
import { isNil, pick, pickBy } from 'lodash-es';
import type { ParsedQuery, ParseOptions } from 'query-string';
import queryString from 'query-string'; import queryString from 'query-string';
function maybeAffineOrigin(origin: string) { function maybeAffineOrigin(origin: string) {
@@ -61,6 +63,23 @@ export const resolveRouteLinkMeta = (href: string) => {
} }
}; };
export const isLink = (href: string) => {
try {
const hasScheme = href.match(/^https?:\/\//);
if (!hasScheme) {
const dotIdx = href.indexOf('.');
if (dotIdx > 0 && dotIdx < href.length - 1) {
href = `https://${href}`;
}
}
return Boolean(URL.canParse?.(href) ?? new URL(href));
} catch {
return null;
}
};
/** /**
* @see /packages/frontend/core/src/router.tsx * @see /packages/frontend/core/src/router.tsx
*/ */
@@ -76,22 +95,49 @@ export const resolveLinkToDoc = (href: string) => {
const meta = resolveRouteLinkMeta(href); const meta = resolveRouteLinkMeta(href);
if (!meta || meta.moduleName !== 'doc') return null; if (!meta || meta.moduleName !== 'doc') return null;
const params: { const params = preprocessParams(
mode?: DocMode; queryString.parse(meta.location.search, paramsParseOptions)
blockIds?: string[]; );
elementIds?: string[];
} = queryString.parse(meta.location.search, {
arrayFormat: 'none',
types: {
mode: value => (value === 'edgeless' ? 'edgeless' : 'page') as DocMode,
blockIds: value => value.split(','),
elementIds: value => value.split(','),
},
});
return { return {
workspaceId: meta.workspaceId, ...pick(meta, ['workspaceId', 'docId']),
docId: meta.docId,
...params, ...params,
}; };
}; };
export const preprocessParams = (
params: ParsedQuery<string>
): ReferenceParams & { refreshKey?: string } => {
const result: ReferenceParams & { refreshKey?: string } = pickBy(
params,
value => {
if (isNil(value)) return false;
if (typeof value === 'string' && value.length === 0) return false;
if (Array.isArray(value) && value.length === 0) return false;
return true;
}
);
if (result.blockIds?.length) {
result.blockIds = result.blockIds.filter(v => v.length);
}
if (result.elementIds?.length) {
result.elementIds = result.elementIds.filter(v => v.length);
}
return pick(result, ['mode', 'blockIds', 'elementIds', 'refreshKey']);
};
export const paramsParseOptions: ParseOptions = {
// Cannot handle single id situation correctly: `blockIds=xxx`
arrayFormat: 'none',
types: {
mode: value =>
value === 'page' || value === 'edgeless' ? value : undefined,
blockIds: value =>
value.length ? value.split(',').filter(v => v.length) : [],
elementIds: value =>
value.length ? value.split(',').filter(v => v.length) : [],
refreshKey: 'string',
},
};

View File

@@ -3,6 +3,7 @@ import type { WorkspaceService } from '@toeverything/infra';
import { Entity, LiveData } from '@toeverything/infra'; import { Entity, LiveData } from '@toeverything/infra';
import { resolveLinkToDoc } from '../../navigation'; import { resolveLinkToDoc } from '../../navigation';
import { isLink } from '../../navigation/utils';
import type { QuickSearchSession } from '../providers/quick-search-provider'; import type { QuickSearchSession } from '../providers/quick-search-provider';
import type { QuickSearchItem } from '../types/item'; import type { QuickSearchItem } from '../types/item';
@@ -21,11 +22,10 @@ export class ExternalLinksQuickSearchSession
query$ = new LiveData(''); query$ = new LiveData('');
items$ = LiveData.computed(get => { items$ = LiveData.computed(get => {
const query = get(this.query$); const query = get(this.query$).trim();
if (!query) return []; if (!query) return [];
const isLink = query.startsWith('http://') || query.startsWith('https://'); if (!isLink(query)) return [];
if (!isLink) return [];
const resolvedDoc = resolveLinkToDoc(query); const resolvedDoc = resolveLinkToDoc(query);
if ( if (

View File

@@ -1,20 +1,16 @@
import type { DocMode } from '@blocksuite/blocks'; import type { ReferenceParams } from '@blocksuite/blocks';
import { BlockLinkIcon, EdgelessIcon, PageIcon } from '@blocksuite/icons/rc'; import { BlockLinkIcon, EdgelessIcon, PageIcon } from '@blocksuite/icons/rc';
import type { DocsService, WorkspaceService } from '@toeverything/infra'; import type { DocsService, WorkspaceService } from '@toeverything/infra';
import { Entity, LiveData } from '@toeverything/infra'; import { Entity, LiveData } from '@toeverything/infra';
import { truncate } from 'lodash-es'; import { omit, truncate } from 'lodash-es';
import { resolveLinkToDoc } from '../../navigation'; import { resolveLinkToDoc } from '../../navigation';
import { isLink } from '../../navigation/utils';
import type { QuickSearchSession } from '../providers/quick-search-provider'; import type { QuickSearchSession } from '../providers/quick-search-provider';
import type { DocDisplayMetaService } from '../services/doc-display-meta'; import type { DocDisplayMetaService } from '../services/doc-display-meta';
import type { QuickSearchItem } from '../types/item'; import type { QuickSearchItem } from '../types/item';
type LinkPayload = { type LinkPayload = { docId: string } & ReferenceParams;
docId: string;
blockIds?: string[];
elementIds?: string[];
mode?: DocMode;
};
export class LinksQuickSearchSession export class LinksQuickSearchSession
extends Entity extends Entity
@@ -31,11 +27,10 @@ export class LinksQuickSearchSession
query$ = new LiveData(''); query$ = new LiveData('');
items$ = LiveData.computed(get => { items$ = LiveData.computed(get => {
const query = get(this.query$); const query = get(this.query$).trim();
if (!query) return []; if (!query) return [];
const isLink = query.startsWith('http://') || query.startsWith('https://'); if (!isLink(query)) return [];
if (!isLink) return [];
const resolvedDoc = resolveLinkToDoc(query); const resolvedDoc = resolveLinkToDoc(query);
if ( if (
@@ -53,6 +48,13 @@ export class LinksQuickSearchSession
this.docDisplayMetaService.getDocDisplayMeta(doc); this.docDisplayMetaService.getDocDisplayMeta(doc);
const linkToNode = resolvedDoc.blockIds || resolvedDoc.elementIds; const linkToNode = resolvedDoc.blockIds || resolvedDoc.elementIds;
const score = 100; const score = 100;
const payload = omit(resolvedDoc, ['workspaceId']);
const icons = {
page: PageIcon,
edgeless: EdgelessIcon,
node: BlockLinkIcon,
other: icon,
};
return [ return [
{ {
@@ -67,23 +69,12 @@ export class LinksQuickSearchSession
score: 5, score: 5,
}, },
label: { label: {
title: title, title,
}, },
score, score,
icon: linkToNode icon: icons[linkToNode ? 'node' : (resolvedDoc.mode ?? 'other')],
? BlockLinkIcon
: resolvedDoc.mode === 'page'
? PageIcon
: resolvedDoc.mode === 'edgeless'
? EdgelessIcon
: icon,
timestamp: updatedDate, timestamp: updatedDate,
payload: { payload,
docId,
blockIds: resolvedDoc.blockIds,
elementIds: resolvedDoc.elementIds,
mode: resolvedDoc.mode,
},
} as QuickSearchItem<'link', LinkPayload>, } as QuickSearchItem<'link', LinkPayload>,
]; ];
}); });

View File

@@ -1,4 +1,5 @@
import { appInfo } from '@affine/electron-api'; import { appInfo } from '@affine/electron-api';
import { isNil } from 'lodash-es';
interface AppUrlOptions { interface AppUrlOptions {
desktop?: boolean | string; desktop?: boolean | string;
@@ -32,12 +33,24 @@ export function buildAppUrl(path: string, opts: AppUrlOptions = {}) {
} }
} }
export function toURLSearchParams(params?: Record<string, string | string[]>) { export function toURLSearchParams(
params?: Partial<Record<string, string | string[]>>
) {
if (!params) return; if (!params) return;
const items = Object.entries(params)
.filter(([_, v]) => !isNil(v))
.filter(([_, v]) => {
if (typeof v === 'string') {
return v.length > 0;
}
if (Array.isArray(v)) {
return v.length > 0;
}
return false;
}) as [string, string | string[]][];
return new URLSearchParams( return new URLSearchParams(
Object.entries(params).map(([k, v]) => [ items.map(([k, v]) => [k, Array.isArray(v) ? v.join(',') : v])
k,
Array.isArray(v) ? v.join(',') : v,
])
); );
} }

View File

@@ -45,7 +45,8 @@ type DocEvents =
| 'switchPageMode' | 'switchPageMode'
| 'openDocOptionsMenu' | 'openDocOptionsMenu'
| 'openDocInfo' | 'openDocInfo'
| 'copyBlockToLink'; | 'copyBlockToLink'
| 'bookmark';
type EditorEvents = 'bold' | 'italic' | 'underline' | 'strikeThrough'; type EditorEvents = 'bold' | 'italic' | 'underline' | 'strikeThrough';
// END SECTION // END SECTION
@@ -262,7 +263,7 @@ const PageEvents = {
}, },
doc: { doc: {
editor: { editor: {
slashMenu: ['linkDoc', 'createDoc'], slashMenu: ['linkDoc', 'createDoc', 'bookmark'],
atMenu: ['linkDoc'], atMenu: ['linkDoc'],
quickSearch: ['createDoc'], quickSearch: ['createDoc'],
formatToolbar: ['bold'], formatToolbar: ['bold'],

View File

@@ -572,3 +572,34 @@ test('can use slash menu to insert a newly created doc card', async ({
page.locator('.affine-embed-linked-doc-content-title') page.locator('.affine-embed-linked-doc-content-title')
).toContainText(testTitle); ).toContainText(testTitle);
}); });
test('can use slash menu to insert an external link', async ({ page }) => {
await openHomePage(page);
await clickNewPageButton(page);
// goto main content
await page.keyboard.press('Enter');
// open slash menu
await page.keyboard.type('/link', {
delay: 50,
});
await page.keyboard.press('Enter');
await expect(page.getByTestId('cmdk-quick-search')).toBeVisible();
const link = 'affine.pro';
await page.locator('[cmdk-input]').fill(link);
const insertLinkBtn = page.locator(
'[cmdk-item] [data-value="external-link:affine.pro"]'
);
await expect(insertLinkBtn).toBeVisible();
await insertLinkBtn.click();
await expect(page.locator('affine-bookmark')).toBeVisible();
await expect(page.locator('.affine-bookmark-content-url')).toContainText(
link
);
});

View File

@@ -6,7 +6,7 @@
"@affine/env": "workspace:*", "@affine/env": "workspace:*",
"@affine/templates": "workspace:*", "@affine/templates": "workspace:*",
"@aws-sdk/client-s3": "^3.620.0", "@aws-sdk/client-s3": "^3.620.0",
"@blocksuite/presets": "0.17.10", "@blocksuite/presets": "0.17.11",
"@clack/core": "^0.3.4", "@clack/core": "^0.3.4",
"@clack/prompts": "^0.7.0", "@clack/prompts": "^0.7.0",
"@magic-works/i18n-codegen": "^0.6.0", "@magic-works/i18n-codegen": "^0.6.0",

318
yarn.lock
View File

@@ -237,7 +237,7 @@ __metadata:
"@affine/env": "workspace:*" "@affine/env": "workspace:*"
"@affine/templates": "workspace:*" "@affine/templates": "workspace:*"
"@aws-sdk/client-s3": "npm:^3.620.0" "@aws-sdk/client-s3": "npm:^3.620.0"
"@blocksuite/presets": "npm:0.17.10" "@blocksuite/presets": "npm:0.17.11"
"@clack/core": "npm:^0.3.4" "@clack/core": "npm:^0.3.4"
"@clack/prompts": "npm:^0.7.0" "@clack/prompts": "npm:^0.7.0"
"@magic-works/i18n-codegen": "npm:^0.6.0" "@magic-works/i18n-codegen": "npm:^0.6.0"
@@ -294,7 +294,7 @@ __metadata:
"@affine/i18n": "workspace:*" "@affine/i18n": "workspace:*"
"@atlaskit/pragmatic-drag-and-drop": "npm:^1.2.1" "@atlaskit/pragmatic-drag-and-drop": "npm:^1.2.1"
"@atlaskit/pragmatic-drag-and-drop-hitbox": "npm:^1.0.3" "@atlaskit/pragmatic-drag-and-drop-hitbox": "npm:^1.0.3"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/icons": "npm:2.1.67" "@blocksuite/icons": "npm:2.1.67"
"@chromatic-com/storybook": "npm:^2.0.0" "@chromatic-com/storybook": "npm:^2.0.0"
"@emotion/react": "npm:^11.11.4" "@emotion/react": "npm:^11.11.4"
@@ -367,13 +367,13 @@ __metadata:
"@affine/i18n": "workspace:*" "@affine/i18n": "workspace:*"
"@affine/templates": "workspace:*" "@affine/templates": "workspace:*"
"@affine/track": "workspace:*" "@affine/track": "workspace:*"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/blocks": "npm:0.17.10" "@blocksuite/blocks": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/icons": "npm:2.1.67" "@blocksuite/icons": "npm:2.1.67"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/presets": "npm:0.17.10" "@blocksuite/presets": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@dnd-kit/core": "npm:^6.1.0" "@dnd-kit/core": "npm:^6.1.0"
"@dnd-kit/modifiers": "npm:^7.0.0" "@dnd-kit/modifiers": "npm:^7.0.0"
"@dnd-kit/sortable": "npm:^8.0.0" "@dnd-kit/sortable": "npm:^8.0.0"
@@ -478,7 +478,7 @@ __metadata:
"@affine/core": "workspace:*" "@affine/core": "workspace:*"
"@affine/i18n": "workspace:*" "@affine/i18n": "workspace:*"
"@affine/native": "workspace:*" "@affine/native": "workspace:*"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@electron-forge/cli": "npm:^7.3.0" "@electron-forge/cli": "npm:^7.3.0"
"@electron-forge/core": "npm:^7.3.0" "@electron-forge/core": "npm:^7.3.0"
"@electron-forge/core-utils": "npm:^7.3.0" "@electron-forge/core-utils": "npm:^7.3.0"
@@ -530,8 +530,8 @@ __metadata:
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "@affine/env@workspace:packages/common/env" resolution: "@affine/env@workspace:packages/common/env"
dependencies: dependencies:
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
vitest: "npm:2.1.0" vitest: "npm:2.1.0"
zod: "npm:^3.22.4" zod: "npm:^3.22.4"
peerDependencies: peerDependencies:
@@ -583,7 +583,7 @@ __metadata:
"@affine/component": "workspace:*" "@affine/component": "workspace:*"
"@affine/core": "workspace:*" "@affine/core": "workspace:*"
"@affine/i18n": "workspace:*" "@affine/i18n": "workspace:*"
"@blocksuite/blocks": "npm:0.17.10" "@blocksuite/blocks": "npm:0.17.11"
"@blocksuite/icons": "npm:^2.1.67" "@blocksuite/icons": "npm:^2.1.67"
"@sentry/react": "npm:^8.0.0" "@sentry/react": "npm:^8.0.0"
"@types/react": "npm:^18.2.75" "@types/react": "npm:^18.2.75"
@@ -2445,17 +2445,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/affine-block-list@npm:0.17.10": "@blocksuite/affine-block-embed@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/affine-block-list@npm:0.17.10" resolution: "@blocksuite/affine-block-embed@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-components": "npm:0.17.10" "@blocksuite/affine-block-surface": "npm:0.17.11"
"@blocksuite/affine-model": "npm:0.17.10" "@blocksuite/affine-components": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/icons": "npm:^2.1.67"
"@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
@@ -2463,21 +2465,21 @@ __metadata:
lit: "npm:^3.2.0" lit: "npm:^3.2.0"
minimatch: "npm:^10.0.1" minimatch: "npm:^10.0.1"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/1719b8300c90a48d891e12e638bf5f65d74703015cb384f9b6d5c474a88d0242efabd353f2d16e9aed8fd93521e12e93cd906bc3cf8c6eb6ae6f0b54f488e4c5 checksum: 10/7eb41ff2330a6281e14b0f986b0358976fe44d91200add2b417090dde44a112222ee87910f826cc66c25a157f8789d878283222d824c82522f884f7092c1ac02
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/affine-block-paragraph@npm:0.17.10": "@blocksuite/affine-block-list@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/affine-block-paragraph@npm:0.17.10" resolution: "@blocksuite/affine-block-list@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-components": "npm:0.17.10" "@blocksuite/affine-components": "npm:0.17.11"
"@blocksuite/affine-model": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
@@ -2485,20 +2487,43 @@ __metadata:
lit: "npm:^3.2.0" lit: "npm:^3.2.0"
minimatch: "npm:^10.0.1" minimatch: "npm:^10.0.1"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/0d7f964732a1b1572f0937acd1e75f129202fb9b1053d8e82abdefb6eb0ba0bd276c6dd9c1ba1bf55d3016bf6327b43ad1141144d17641521c5a94eb7142364d checksum: 10/c18b602eee8414b31cc72b65cfe8097fb7731d3f1006fb6a0fd1e33ff07385f8083204b6f23ba6d8bfd877c63853858c92b10bfca650ee40294fe48a750fd447
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/affine-block-surface@npm:0.17.10": "@blocksuite/affine-block-paragraph@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/affine-block-surface@npm:0.17.10" resolution: "@blocksuite/affine-block-paragraph@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-components": "npm:0.17.10" "@blocksuite/affine-components": "npm:0.17.11"
"@blocksuite/affine-model": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0"
"@toeverything/theme": "npm:^1.0.8"
lit: "npm:^3.2.0"
minimatch: "npm:^10.0.1"
zod: "npm:^3.23.8"
checksum: 10/ae307dd618faab8ebc5845cde3345039b206a99bd3f22f029cd0839450e942734ad8681f971f303fd758969477f2ed2505556e8267018dbb717c3f2f637b7f25
languageName: node
linkType: hard
"@blocksuite/affine-block-surface@npm:0.17.11":
version: 0.17.11
resolution: "@blocksuite/affine-block-surface@npm:0.17.11"
dependencies:
"@blocksuite/affine-components": "npm:0.17.11"
"@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.11"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
"@toeverything/theme": "npm:^1.0.8" "@toeverything/theme": "npm:^1.0.8"
@@ -2506,21 +2531,21 @@ __metadata:
lit: "npm:^3.2.0" lit: "npm:^3.2.0"
nanoid: "npm:^5.0.7" nanoid: "npm:^5.0.7"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/7f062f917617749e9f8ba2905a64bd8b5a8eefc8ba1f3c4f4cca8d53246a062e9483d492af9e0092cb2460aad5c6e4c938a25c9634992b2d343b4e3e6a74a5b1 checksum: 10/d8640fae0b87a53da451aadd52f7064d25ebc7558cd82aa8b4bf257a9cd3f6da2f7e013c78109ffbb15a26513e5d620b8b102cf8ea62b004d0745517c0ced08d
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/affine-components@npm:0.17.10": "@blocksuite/affine-components@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/affine-components@npm:0.17.10" resolution: "@blocksuite/affine-components@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-model": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/icons": "npm:^2.1.67" "@blocksuite/icons": "npm:^2.1.67"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@lottiefiles/dotlottie-wc": "npm:^0.2.16" "@lottiefiles/dotlottie-wc": "npm:^0.2.16"
@@ -2531,32 +2556,32 @@ __metadata:
lit: "npm:^3.2.0" lit: "npm:^3.2.0"
shiki: "npm:^1.12.0" shiki: "npm:^1.12.0"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/33142a4baff7920538ccf966933b4b89c798c17f6835eb4e3aa7adf4547d5219c4ab184707a308b520e7f1152dfcf138ae2b62dd406c2a7b561eeaccc0ab0a7f checksum: 10/e6717c3008d7255ddf7618cd57a4b9b987c1ff0cdf9fd3a3c29341e4fd87f23fa3595b52e25ab9f515bf60161f0feb4a7530bd1f1ddbf2e2043939b7aa786e11
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/affine-model@npm:0.17.10": "@blocksuite/affine-model@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/affine-model@npm:0.17.10" resolution: "@blocksuite/affine-model@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/d46edc80e3c1c5791f8e7c2c392b59fc27a226a56264f8b05c61586e83acb9b9bd08f072c5a3406b1c35f6dc8047a2d004102f8529a5062665cd8dd49c336ffa checksum: 10/4a4207eca8b978c17d10502c448c149710f8f73714681b997762e635302a2d3fa53ea96d138eac1893cc78b44c4e8affeb8bf8de94d92b30c46aa97304174a80
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/affine-shared@npm:0.17.10": "@blocksuite/affine-shared@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/affine-shared@npm:0.17.10" resolution: "@blocksuite/affine-shared@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-model": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
@@ -2566,17 +2591,32 @@ __metadata:
lodash.mergewith: "npm:^4.6.2" lodash.mergewith: "npm:^4.6.2"
minimatch: "npm:^10.0.1" minimatch: "npm:^10.0.1"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/2e685acdbbd0f686c2502bac0415c7e394627eeedf1af4e3dfefaf01e4718220f60bf9683b3d1f72a23047e17d13702be964a6c10e7fdbe886dd9a90699b41f3 checksum: 10/8252f6fe55cfcd6e2d102ea57588c6f9d9b9e4f6dfd9aa2bf1e56b2fca07f679178f5d09f56bfaa341fced6a7f4245f4435a2f6d8d9154c9729f894439f15ff4
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/block-std@npm:0.17.10": "@blocksuite/affine-widget-scroll-anchoring@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/block-std@npm:0.17.10" resolution: "@blocksuite/affine-widget-scroll-anchoring@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/global": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.11"
"@preact/signals-core": "npm:^1.8.0"
"@toeverything/theme": "npm:^1.0.8"
lit: "npm:^3.2.0"
checksum: 10/a8d5db1033aac80d9a4e1d67ee38d8f62f196dada09af683ccc8cd16caf5fd066422763c361ffd9f2adec22dc0a1ba847721de289afcd15ef0ec83da8735892f
languageName: node
linkType: hard
"@blocksuite/block-std@npm:0.17.11":
version: 0.17.11
resolution: "@blocksuite/block-std@npm:0.17.11"
dependencies:
"@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.11"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
"@types/hast": "npm:^3.0.4" "@types/hast": "npm:^3.0.4"
@@ -2588,26 +2628,28 @@ __metadata:
unified: "npm:^11.0.5" unified: "npm:^11.0.5"
w3c-keyname: "npm:^2.2.8" w3c-keyname: "npm:^2.2.8"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/8993b917c76569513ee60e89e739a82345fd324fe99b78dabf1263fbfea6237669775577f1bd99624e3188a5235d6057397467910e9c3379330a5269f7222f36 checksum: 10/e5169b8ea01aea2806e6bbc6b13b3e1c5401e9b9de83381e13a05ad20e0284b98bd1c77e4760720c5e2a85bad4a91713d9db3849139af2fdce0d8c4760b2635c
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/blocks@npm:0.17.10": "@blocksuite/blocks@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/blocks@npm:0.17.10" resolution: "@blocksuite/blocks@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-block-list": "npm:0.17.10" "@blocksuite/affine-block-embed": "npm:0.17.11"
"@blocksuite/affine-block-paragraph": "npm:0.17.10" "@blocksuite/affine-block-list": "npm:0.17.11"
"@blocksuite/affine-block-surface": "npm:0.17.10" "@blocksuite/affine-block-paragraph": "npm:0.17.11"
"@blocksuite/affine-components": "npm:0.17.10" "@blocksuite/affine-block-surface": "npm:0.17.11"
"@blocksuite/affine-model": "npm:0.17.10" "@blocksuite/affine-components": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-model": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/data-view": "npm:0.17.10" "@blocksuite/affine-widget-scroll-anchoring": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/data-view": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.11"
"@blocksuite/icons": "npm:^2.1.67" "@blocksuite/icons": "npm:^2.1.67"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
@@ -2645,20 +2687,20 @@ __metadata:
sortablejs: "npm:^1.15.2" sortablejs: "npm:^1.15.2"
unified: "npm:^11.0.5" unified: "npm:^11.0.5"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/d9c5c8d7669b67722991500bb53bb73066f58b2315ca4be33d12d856fc6428151564e8b4daf2f4034f48c925c46c28f6db2ad6f5190f9acc78e7a06ebfde263a checksum: 10/e122b2a08a15e38039d72275f18d9ccbcafdff719f9b275d4205754ef24d90f5423ebf7ba7ca61ebc93df3ee4070ffb6718d5b40c6be6a933cdfe1d8fa87495c
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/data-view@npm:0.17.10": "@blocksuite/data-view@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/data-view@npm:0.17.10" resolution: "@blocksuite/data-view@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-components": "npm:0.17.10" "@blocksuite/affine-components": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/icons": "npm:^2.1.67" "@blocksuite/icons": "npm:^2.1.67"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lit/context": "npm:^1.1.2" "@lit/context": "npm:^1.1.2"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
@@ -2667,17 +2709,17 @@ __metadata:
lit: "npm:^3.2.0" lit: "npm:^3.2.0"
sortablejs: "npm:^1.15.2" sortablejs: "npm:^1.15.2"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/68de55a3a6f48189d3ebc95d27b962258090fa5cab1edd9006e496ca9808c081048811a6e7ee3548eb10af933ffe2ab90cc59fbf994ebb8cbe0ce6190b9817ff checksum: 10/bcbd2b0db35c0f61f797fff52bf83a212a5e92389a0a2fd85cde3a4647a42f034c1b0822da0c48d6cba00828b3263c1eea9563d9bcdfb922fb685007c6f9d651
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/global@npm:0.17.10": "@blocksuite/global@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/global@npm:0.17.10" resolution: "@blocksuite/global@npm:0.17.11"
dependencies: dependencies:
lib0: "npm:^0.2.97" lib0: "npm:^0.2.97"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/4ccc854b28e7c3dc89ddf93eafefecec8b20c32cce3e3905bc29133265d1e0be4d21d3433bf5124864dfa69dbc81aa9173396d8bac4b6c495ffa3ff52347c52f checksum: 10/c23905faf72ff849e3dbdaf683ea0670133f7c4ee08279c645919895f447c453d702d6a91d59be0f93143d9d70078224f6b261e673b54a566ce46414ba72f5e8
languageName: node languageName: node
linkType: hard linkType: hard
@@ -2697,47 +2739,47 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/inline@npm:0.17.10": "@blocksuite/inline@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/inline@npm:0.17.10" resolution: "@blocksuite/inline@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
peerDependencies: peerDependencies:
lit: ^3.2.0 lit: ^3.2.0
yjs: ^13.6.18 yjs: ^13.6.18
checksum: 10/9aead8cd942811770e5bdfa7ff2bf7d38cdee05e39f824d4104cba3b0afec2400ae3cf0f94f8484f39d7ce04397af6996bbfe1d6b590042bb8d6bf63806efcf7 checksum: 10/d3e4d3548ed67b1290ea97ebe61b319801f5ed7d58d57a09e42524eab34175d7a031441894c2c600fa6f35a526382dbeb82ffa0b1e610c9c62f9707f7172b7c8
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/presets@npm:0.17.10": "@blocksuite/presets@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/presets@npm:0.17.10" resolution: "@blocksuite/presets@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/affine-block-surface": "npm:0.17.10" "@blocksuite/affine-block-surface": "npm:0.17.11"
"@blocksuite/affine-shared": "npm:0.17.10" "@blocksuite/affine-shared": "npm:0.17.11"
"@blocksuite/block-std": "npm:0.17.10" "@blocksuite/block-std": "npm:0.17.11"
"@blocksuite/blocks": "npm:0.17.10" "@blocksuite/blocks": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@floating-ui/dom": "npm:^1.6.10" "@floating-ui/dom": "npm:^1.6.10"
"@lottiefiles/dotlottie-wc": "npm:^0.2.16" "@lottiefiles/dotlottie-wc": "npm:^0.2.16"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
"@toeverything/theme": "npm:^1.0.8" "@toeverything/theme": "npm:^1.0.8"
lit: "npm:^3.2.0" lit: "npm:^3.2.0"
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
checksum: 10/316b88b2de2ea749f89bc80813006b2b1af1f1b64c9b1069ee11a84a2c73db3f22a6ff3cd032d524a35a58cb43662f33ac518796ddc4b4e1aff834787f1e239a checksum: 10/bf22f353ec70b2eae75037d0fad313444575d3b2a47cc6130655793fd6f7a314c54c2b46edfdde8eaadfabd7e57dc29545b6dc5c912874fabc182d2a1b77f9c0
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/store@npm:0.17.10": "@blocksuite/store@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/store@npm:0.17.10" resolution: "@blocksuite/store@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/inline": "npm:0.17.10" "@blocksuite/inline": "npm:0.17.11"
"@blocksuite/sync": "npm:0.17.10" "@blocksuite/sync": "npm:0.17.11"
"@preact/signals-core": "npm:^1.8.0" "@preact/signals-core": "npm:^1.8.0"
"@types/flexsearch": "npm:^0.7.6" "@types/flexsearch": "npm:^0.7.6"
"@types/lodash.ismatch": "npm:^4.4.9" "@types/lodash.ismatch": "npm:^4.4.9"
@@ -2752,21 +2794,21 @@ __metadata:
zod: "npm:^3.23.8" zod: "npm:^3.23.8"
peerDependencies: peerDependencies:
yjs: ^13.6.18 yjs: ^13.6.18
checksum: 10/a42d294a1ee68261d39d56302e2c3fce44cdfac13410e0e3e8e01bfdfba106fe919406c3295358a7904dbad842b79aee32ccaaa85b7523b7504ff60708ba7005 checksum: 10/2e9706df03f70c2b0151d0e5571cfdc23bf2c122bf0eb20b371866b594ddb2ad10227204ec25314e1a7b75fd73c05a23b3f864d00190df0eacc12f54cba5a61a
languageName: node languageName: node
linkType: hard linkType: hard
"@blocksuite/sync@npm:0.17.10": "@blocksuite/sync@npm:0.17.11":
version: 0.17.10 version: 0.17.11
resolution: "@blocksuite/sync@npm:0.17.10" resolution: "@blocksuite/sync@npm:0.17.11"
dependencies: dependencies:
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
idb: "npm:^8.0.0" idb: "npm:^8.0.0"
idb-keyval: "npm:^6.2.1" idb-keyval: "npm:^6.2.1"
y-protocols: "npm:^1.0.6" y-protocols: "npm:^1.0.6"
peerDependencies: peerDependencies:
yjs: ^13.6.15 yjs: ^13.6.15
checksum: 10/84d463791bac55ea0fd9a0ca9978fe3743c4b12783d7d530cb852998aeb02fa2dcdb9c9b367860138c179d60a6a5cfebc71e3640b53c5e540b758c662dd6dbd5 checksum: 10/2f0e379cd38fc0a67b4a57cd7970e12c41db4f188c183a5345ae2414e2718dda17c14eb69d162010e26204672ebacceac7e66b727d5637a9742e9bd9b794da45
languageName: node languageName: node
linkType: hard linkType: hard
@@ -12375,10 +12417,10 @@ __metadata:
"@affine/debug": "workspace:*" "@affine/debug": "workspace:*"
"@affine/env": "workspace:*" "@affine/env": "workspace:*"
"@affine/templates": "workspace:*" "@affine/templates": "workspace:*"
"@blocksuite/blocks": "npm:0.17.10" "@blocksuite/blocks": "npm:0.17.11"
"@blocksuite/global": "npm:0.17.10" "@blocksuite/global": "npm:0.17.11"
"@blocksuite/presets": "npm:0.17.10" "@blocksuite/presets": "npm:0.17.11"
"@blocksuite/store": "npm:0.17.10" "@blocksuite/store": "npm:0.17.11"
"@datastructures-js/binary-search-tree": "npm:^5.3.2" "@datastructures-js/binary-search-tree": "npm:^5.3.2"
"@testing-library/react": "npm:^16.0.0" "@testing-library/react": "npm:^16.0.0"
fake-indexeddb: "npm:^6.0.0" fake-indexeddb: "npm:^6.0.0"