mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-04 16:44:56 +00:00
Compare commits
11 Commits
v0.24.1-be
...
l-sun/enab
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac76e5b949 | ||
|
|
0bc1005b96 | ||
|
|
34a3c83d84 | ||
|
|
fd717af3db | ||
|
|
039976ee6d | ||
|
|
e158e11608 | ||
|
|
18faaa38a0 | ||
|
|
e2156ea135 | ||
|
|
795bfb2f95 | ||
|
|
0710da15c6 | ||
|
|
693ae9c834 |
@@ -2,6 +2,7 @@
|
||||
**/node_modules
|
||||
.yarn
|
||||
.github/helm
|
||||
.git
|
||||
.vscode
|
||||
.yarnrc.yml
|
||||
.docker
|
||||
|
||||
@@ -24,7 +24,7 @@ import {
|
||||
getPrevContentBlock,
|
||||
matchModels,
|
||||
} from '@blocksuite/affine-shared/utils';
|
||||
import { IS_MOBILE } from '@blocksuite/global/env';
|
||||
import { IS_ANDROID, IS_MOBILE } from '@blocksuite/global/env';
|
||||
import { BlockSelection, type EditorHost } from '@blocksuite/std';
|
||||
import type { BlockModel, Text } from '@blocksuite/store';
|
||||
|
||||
@@ -79,6 +79,28 @@ export function mergeWithPrev(editorHost: EditorHost, model: BlockModel) {
|
||||
index: lengthBeforeJoin,
|
||||
length: 0,
|
||||
}).catch(console.error);
|
||||
|
||||
// due to some IME like Microsoft Swift IME on Android will reset range after join text,
|
||||
// for example:
|
||||
//
|
||||
// $ZERO_WIDTH_FOR_EMPTY_LINE <--- p1
|
||||
// |aaa <--- p2
|
||||
//
|
||||
// after pressing backspace, during beforeinput event, the native range is (p1, 1) -> (p2, 0)
|
||||
// and after browser and IME handle the event, the native range is (p1, 1) -> (p1, 1)
|
||||
//
|
||||
// a|aa <--- p1
|
||||
//
|
||||
// so we need to set range again after join text.
|
||||
if (IS_ANDROID) {
|
||||
setTimeout(() => {
|
||||
asyncSetInlineRange(editorHost.std, prevBlock, {
|
||||
index: lengthBeforeJoin,
|
||||
length: 0,
|
||||
}).catch(console.error);
|
||||
});
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,12 +103,12 @@ export class MobileKanbanCell extends SignalWatcher(
|
||||
this.disposables.add(
|
||||
effect(() => {
|
||||
const isEditing = this.isSelectionEditing$.value;
|
||||
if (isEditing) {
|
||||
if (isEditing && !this.isEditing$.peek()) {
|
||||
this.isEditing$.value = true;
|
||||
requestAnimationFrame(() => {
|
||||
this._cell.value?.afterEnterEditingMode();
|
||||
});
|
||||
} else {
|
||||
} else if (!isEditing && this.isEditing$.peek()) {
|
||||
this._cell.value?.beforeExitEditingMode();
|
||||
this.isEditing$.value = false;
|
||||
}
|
||||
|
||||
@@ -105,13 +105,13 @@ export class MobileTableCell extends SignalWatcher(
|
||||
this.disposables.add(
|
||||
effect(() => {
|
||||
const isEditing = this.isSelectionEditing$.value;
|
||||
if (isEditing) {
|
||||
if (isEditing && !this.isEditing$.peek()) {
|
||||
this.isEditing$.value = true;
|
||||
const cell = this._cell.value;
|
||||
requestAnimationFrame(() => {
|
||||
cell?.afterEnterEditingMode();
|
||||
});
|
||||
} else {
|
||||
} else if (!isEditing && this.isEditing$.peek()) {
|
||||
this._cell.value?.beforeExitEditingMode();
|
||||
this.isEditing$.value = false;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { IS_IOS } from '@blocksuite/global/env';
|
||||
import { css } from '@emotion/css';
|
||||
import { cssVarV2 } from '@toeverything/theme/v2';
|
||||
|
||||
@@ -6,12 +5,6 @@ export const mobileTableViewWrapper = css({
|
||||
position: 'relative',
|
||||
width: '100%',
|
||||
paddingBottom: '4px',
|
||||
/**
|
||||
* Disable horizontal scrolling to prevent crashes on iOS Safari
|
||||
* See https://github.com/toeverything/AFFiNE/pull/12203
|
||||
* and https://github.com/toeverything/blocksuite/pull/8784
|
||||
*/
|
||||
overflowX: IS_IOS ? 'hidden' : undefined,
|
||||
overflowY: 'hidden',
|
||||
});
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { IS_MAC } from '@blocksuite/global/env';
|
||||
import { DisposableGroup } from '@blocksuite/global/disposable';
|
||||
import { IS_ANDROID, IS_MAC } from '@blocksuite/global/env';
|
||||
|
||||
import {
|
||||
type UIEventHandler,
|
||||
@@ -6,7 +7,7 @@ import {
|
||||
UIEventStateContext,
|
||||
} from '../base.js';
|
||||
import type { EventOptions, UIEventDispatcher } from '../dispatcher.js';
|
||||
import { bindKeymap } from '../keymap.js';
|
||||
import { androidBindKeymapPatch, bindKeymap } from '../keymap.js';
|
||||
import { KeyboardEventState } from '../state/index.js';
|
||||
import { EventScopeSourceType, EventSourceState } from '../state/source.js';
|
||||
|
||||
@@ -87,15 +88,29 @@ export class KeyboardControl {
|
||||
}
|
||||
|
||||
bindHotkey(keymap: Record<string, UIEventHandler>, options?: EventOptions) {
|
||||
return this._dispatcher.add(
|
||||
'keyDown',
|
||||
ctx => {
|
||||
if (this.composition) return false;
|
||||
const binding = bindKeymap(keymap);
|
||||
return binding(ctx);
|
||||
},
|
||||
options
|
||||
const disposables = new DisposableGroup();
|
||||
if (IS_ANDROID) {
|
||||
disposables.add(
|
||||
this._dispatcher.add('beforeInput', ctx => {
|
||||
if (this.composition) return false;
|
||||
const binding = androidBindKeymapPatch(keymap);
|
||||
return binding(ctx);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
disposables.add(
|
||||
this._dispatcher.add(
|
||||
'keyDown',
|
||||
ctx => {
|
||||
if (this.composition) return false;
|
||||
const binding = bindKeymap(keymap);
|
||||
return binding(ctx);
|
||||
},
|
||||
options
|
||||
)
|
||||
);
|
||||
return () => disposables.dispose();
|
||||
}
|
||||
|
||||
listen() {
|
||||
|
||||
@@ -103,3 +103,25 @@ export function bindKeymap(
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
// In some IME of Android like, the keypress event dose not contain
|
||||
// the information about what key is pressed. See
|
||||
// https://stackoverflow.com/a/68188679
|
||||
// https://stackoverflow.com/a/66724830
|
||||
export function androidBindKeymapPatch(
|
||||
bindings: Record<string, UIEventHandler>
|
||||
): UIEventHandler {
|
||||
return ctx => {
|
||||
const event = ctx.get('defaultState').event;
|
||||
if (!(event instanceof InputEvent)) return;
|
||||
|
||||
if (
|
||||
event.inputType === 'deleteContentBackward' &&
|
||||
'Backspace' in bindings
|
||||
) {
|
||||
return bindings['Backspace'](ctx);
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { IS_ANDROID } from '@blocksuite/global/env';
|
||||
import type { BaseTextAttributes } from '@blocksuite/store';
|
||||
|
||||
import type { InlineEditor } from '../inline-editor.js';
|
||||
@@ -41,11 +42,10 @@ export class EventService<TextAttributes extends BaseTextAttributes> {
|
||||
}
|
||||
};
|
||||
|
||||
private readonly _onBeforeInput = (event: InputEvent) => {
|
||||
private readonly _onBeforeInput = async (event: InputEvent) => {
|
||||
const range = this.editor.rangeService.getNativeRange();
|
||||
if (
|
||||
this.editor.isReadonly ||
|
||||
this._isComposing ||
|
||||
!range ||
|
||||
!this._isRangeCompletelyInRoot(range)
|
||||
)
|
||||
@@ -54,33 +54,29 @@ export class EventService<TextAttributes extends BaseTextAttributes> {
|
||||
let inlineRange = this.editor.toInlineRange(range);
|
||||
if (!inlineRange) return;
|
||||
|
||||
if (this._isComposing) {
|
||||
if (IS_ANDROID && event.inputType === 'insertCompositionText') {
|
||||
this._compositionInlineRange = inlineRange;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
let ifHandleTargetRange = true;
|
||||
|
||||
if (event.inputType.startsWith('delete')) {
|
||||
if (
|
||||
isInEmbedGap(range.commonAncestorContainer) &&
|
||||
inlineRange.length === 0 &&
|
||||
inlineRange.index > 0
|
||||
) {
|
||||
inlineRange = {
|
||||
index: inlineRange.index - 1,
|
||||
length: 1,
|
||||
};
|
||||
ifHandleTargetRange = false;
|
||||
} else if (
|
||||
isInEmptyLine(range.commonAncestorContainer) &&
|
||||
inlineRange.length === 0 &&
|
||||
inlineRange.index > 0
|
||||
// eslint-disable-next-line sonarjs/no-duplicated-branches
|
||||
) {
|
||||
// do not use target range when deleting across lines
|
||||
if (
|
||||
event.inputType.startsWith('delete') &&
|
||||
(isInEmbedGap(range.commonAncestorContainer) ||
|
||||
// https://github.com/toeverything/blocksuite/issues/5381
|
||||
inlineRange = {
|
||||
index: inlineRange.index - 1,
|
||||
length: 1,
|
||||
};
|
||||
ifHandleTargetRange = false;
|
||||
}
|
||||
isInEmptyLine(range.commonAncestorContainer)) &&
|
||||
inlineRange.length === 0 &&
|
||||
inlineRange.index > 0
|
||||
) {
|
||||
// do not use target range when deleting across lines
|
||||
inlineRange = {
|
||||
index: inlineRange.index - 1,
|
||||
length: 1,
|
||||
};
|
||||
ifHandleTargetRange = false;
|
||||
}
|
||||
|
||||
if (ifHandleTargetRange) {
|
||||
@@ -97,11 +93,24 @@ export class EventService<TextAttributes extends BaseTextAttributes> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!inlineRange) return;
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
if (IS_ANDROID) {
|
||||
this.editor.rerenderWholeEditor();
|
||||
await this.editor.waitForUpdate();
|
||||
if (
|
||||
event.inputType === 'deleteContentBackward' &&
|
||||
!(inlineRange.index === 0 && inlineRange.length === 0)
|
||||
) {
|
||||
// when press backspace at offset 1, double characters will be removed.
|
||||
// because we mock backspace key event `androidBindKeymapPatch` in blocksuite/framework/std/src/event/keymap.ts
|
||||
// so we need to stop the event propagation to prevent the double characters removal.
|
||||
event.stopPropagation();
|
||||
}
|
||||
}
|
||||
|
||||
const ctx: BeforeinputHookCtx<TextAttributes> = {
|
||||
inlineEditor: this.editor,
|
||||
raw: event,
|
||||
@@ -346,11 +355,9 @@ export class EventService<TextAttributes extends BaseTextAttributes> {
|
||||
return;
|
||||
}
|
||||
|
||||
this.editor.disposables.addFromEvent(
|
||||
eventSource,
|
||||
'beforeinput',
|
||||
this._onBeforeInput
|
||||
);
|
||||
this.editor.disposables.addFromEvent(eventSource, 'beforeinput', e => {
|
||||
this._onBeforeInput(e).catch(console.error);
|
||||
});
|
||||
this.editor.disposables.addFromEvent(
|
||||
eventSource,
|
||||
'compositionstart',
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
"**/node_modules",
|
||||
".yarn",
|
||||
".github/helm",
|
||||
".git",
|
||||
".vscode",
|
||||
".yarnrc.yml",
|
||||
".docker",
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^16.0.0",
|
||||
"msw": "^2.6.8",
|
||||
"oxlint": "^1.11.1",
|
||||
"oxlint": "^1.15.0",
|
||||
"prettier": "^3.4.2",
|
||||
"semver": "^7.6.3",
|
||||
"serve": "^14.2.4",
|
||||
|
||||
@@ -67,12 +67,17 @@ export class BlobModel extends BaseModel {
|
||||
});
|
||||
}
|
||||
|
||||
async list(workspaceId: string) {
|
||||
async list(
|
||||
workspaceId: string,
|
||||
options?: { where: Prisma.BlobWhereInput; select?: Prisma.BlobSelect }
|
||||
) {
|
||||
return await this.db.blob.findMany({
|
||||
where: {
|
||||
...options?.where,
|
||||
workspaceId,
|
||||
deletedAt: null,
|
||||
},
|
||||
select: options?.select,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -6,13 +6,14 @@ import { Prisma, PrismaClient } from '@prisma/client';
|
||||
|
||||
import { PaginationInput } from '../base';
|
||||
import { BaseModel } from './base';
|
||||
import type {
|
||||
BlobChunkSimilarity,
|
||||
CopilotWorkspaceFile,
|
||||
CopilotWorkspaceFileMetadata,
|
||||
Embedding,
|
||||
FileChunkSimilarity,
|
||||
IgnoredDoc,
|
||||
import {
|
||||
type BlobChunkSimilarity,
|
||||
clearEmbeddingContent,
|
||||
type CopilotWorkspaceFile,
|
||||
type CopilotWorkspaceFileMetadata,
|
||||
type Embedding,
|
||||
type FileChunkSimilarity,
|
||||
type IgnoredDoc,
|
||||
} from './common';
|
||||
|
||||
@Injectable()
|
||||
@@ -413,6 +414,33 @@ export class CopilotWorkspaceConfigModel extends BaseModel {
|
||||
return similarityChunks.filter(c => Number(c.distance) <= threshold);
|
||||
}
|
||||
|
||||
async getBlobContent(
|
||||
workspaceId: string,
|
||||
blobId: string,
|
||||
chunk?: number
|
||||
): Promise<string | undefined> {
|
||||
const blob = await this.db.aiWorkspaceBlobEmbedding.findMany({
|
||||
where: { workspaceId, blobId, chunk },
|
||||
select: { content: true },
|
||||
orderBy: { chunk: 'asc' },
|
||||
});
|
||||
return blob?.map(f => clearEmbeddingContent(f.content)).join('\n');
|
||||
}
|
||||
|
||||
async getBlobChunkSizes(workspaceId: string, blobIds: string[]) {
|
||||
const sizes = await this.db.aiWorkspaceBlobEmbedding.groupBy({
|
||||
by: ['blobId'],
|
||||
_count: { chunk: true },
|
||||
where: { workspaceId, blobId: { in: blobIds } },
|
||||
});
|
||||
return sizes.reduce((acc, cur) => {
|
||||
if (cur._count.chunk) {
|
||||
acc.set(cur.blobId, cur._count.chunk);
|
||||
}
|
||||
return acc;
|
||||
}, new Map<string, number>());
|
||||
}
|
||||
|
||||
@Transactional()
|
||||
async insertBlobEmbeddings(
|
||||
workspaceId: string,
|
||||
|
||||
@@ -55,7 +55,7 @@ export class ContextSession implements AsyncDisposable {
|
||||
return this.config.docs.map(d => ({ ...d }));
|
||||
}
|
||||
|
||||
get files() {
|
||||
get files(): Required<ContextFile>[] {
|
||||
return this.config.files.map(f => this.fulfillFile(f));
|
||||
}
|
||||
|
||||
@@ -135,6 +135,36 @@ export class ContextSession implements AsyncDisposable {
|
||||
return record;
|
||||
}
|
||||
|
||||
async getBlobMetadata() {
|
||||
const blobIds = this.blobs.map(b => b.id);
|
||||
const blobs = await this.models.blob.list(this.config.workspaceId, {
|
||||
where: { key: { in: blobIds } },
|
||||
select: { key: true, mime: true },
|
||||
});
|
||||
const blobChunkSizes = await this.models.copilotWorkspace.getBlobChunkSizes(
|
||||
this.config.workspaceId,
|
||||
blobIds
|
||||
);
|
||||
return blobs
|
||||
.filter(b => !!blobChunkSizes.get(b.key))
|
||||
.map(b => ({
|
||||
id: b.key,
|
||||
mimeType: b.mime,
|
||||
chunkSize: blobChunkSizes.get(b.key),
|
||||
}));
|
||||
}
|
||||
|
||||
async getBlobContent(
|
||||
blobId: string,
|
||||
chunk?: number
|
||||
): Promise<string | undefined> {
|
||||
return this.models.copilotWorkspace.getBlobContent(
|
||||
this.config.workspaceId,
|
||||
blobId,
|
||||
chunk
|
||||
);
|
||||
}
|
||||
|
||||
async removeBlobRecord(blobId: string): Promise<boolean> {
|
||||
const index = this.config.blobs.findIndex(b => b.id === blobId);
|
||||
if (index >= 0) {
|
||||
|
||||
@@ -208,8 +208,14 @@ export class CopilotController implements BeforeApplicationShutdown {
|
||||
|
||||
const context = await this.context.getBySessionId(sessionId);
|
||||
const contextParams =
|
||||
Array.isArray(context?.files) && context.files.length > 0
|
||||
? { contextFiles: context.files }
|
||||
(Array.isArray(context?.files) && context.files.length > 0) ||
|
||||
(Array.isArray(context?.blobs) && context.blobs.length > 0)
|
||||
? {
|
||||
contextFiles: [
|
||||
...context.files,
|
||||
...(await context.getBlobMetadata()),
|
||||
],
|
||||
}
|
||||
: {};
|
||||
const lastParams = latestMessage
|
||||
? {
|
||||
|
||||
@@ -33,7 +33,11 @@ export const buildBlobContentGetter = (
|
||||
return;
|
||||
}
|
||||
|
||||
const content = await context?.getFileContent(blobId, chunk);
|
||||
const [file, blob] = await Promise.all([
|
||||
context?.getFileContent(blobId, chunk),
|
||||
context?.getBlobContent(blobId, chunk),
|
||||
]);
|
||||
const content = file?.trim() || blob?.trim();
|
||||
if (!content) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ const config: CapacitorConfig & AppConfig = {
|
||||
releaseType: 'AAB',
|
||||
},
|
||||
adjustMarginsForEdgeToEdge: 'force',
|
||||
webContentsDebuggingEnabled: true,
|
||||
},
|
||||
server: {
|
||||
cleartext: true,
|
||||
|
||||
@@ -84,7 +84,7 @@ export const useDraggable = <D extends DNDData = DNDData>(
|
||||
: undefined,
|
||||
};
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [...deps, context.toExternalData]);
|
||||
}, [...deps, getOptions, context.toExternalData]);
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
|
||||
@@ -207,7 +207,7 @@ export const useDropTarget = <D extends DNDData = DNDData>(
|
||||
: undefined,
|
||||
};
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [...deps, dropTargetContext.fromExternalData]);
|
||||
}, [...deps, getOptions, dropTargetContext.fromExternalData]);
|
||||
|
||||
const getDropTargetOptions = useCallback(() => {
|
||||
const wrappedCanDrop = dropTargetGet(options.canDrop, options);
|
||||
|
||||
@@ -95,7 +95,7 @@ export const useDndMonitor = <D extends DNDData = DNDData>(
|
||||
: undefined,
|
||||
};
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [...deps, getOptions]);
|
||||
}, [...deps, getOptions, dropTargetContext.fromExternalData]);
|
||||
|
||||
const monitorOptions = useMemo(() => {
|
||||
return {
|
||||
|
||||
@@ -3,6 +3,11 @@ import { SignalWatcher, WithDisposable } from '@blocksuite/affine/global/lit';
|
||||
import { ColorScheme } from '@blocksuite/affine/model';
|
||||
import { unsafeCSSVar, unsafeCSSVarV2 } from '@blocksuite/affine/shared/theme';
|
||||
import { type BlockStdScope } from '@blocksuite/affine/std';
|
||||
import {
|
||||
type BlockSnapshot,
|
||||
nanoid,
|
||||
type SliceSnapshot,
|
||||
} from '@blocksuite/affine/store';
|
||||
import type { NotificationService } from '@blocksuite/affine-shared/services';
|
||||
import {
|
||||
CodeBlockIcon,
|
||||
@@ -496,6 +501,10 @@ export class CodeArtifactTool extends ArtifactTool<
|
||||
</div>`;
|
||||
}
|
||||
|
||||
get clipboard() {
|
||||
return this.std?.clipboard;
|
||||
}
|
||||
|
||||
protected override getPreviewControls() {
|
||||
if (this.data.type !== 'tool-result' || !this.std || !this.data.result) {
|
||||
return undefined;
|
||||
@@ -506,7 +515,39 @@ export class CodeArtifactTool extends ArtifactTool<
|
||||
const title = result.title;
|
||||
|
||||
const copyHTML = async () => {
|
||||
await navigator.clipboard.writeText(htmlContent).catch(console.error);
|
||||
const codeBlock: BlockSnapshot = {
|
||||
type: 'block',
|
||||
id: nanoid(),
|
||||
flavour: 'affine:code',
|
||||
version: 1,
|
||||
props: {
|
||||
language: 'html',
|
||||
wrap: false,
|
||||
caption: '',
|
||||
text: {
|
||||
'$blocksuite:internal:text$': true,
|
||||
delta: [{ insert: htmlContent }],
|
||||
},
|
||||
},
|
||||
children: [],
|
||||
};
|
||||
|
||||
const sliceSnapshot: SliceSnapshot = {
|
||||
type: 'slice',
|
||||
content: [codeBlock],
|
||||
workspaceId: 'fake-workspace-id',
|
||||
pageId: 'fake-page-id',
|
||||
};
|
||||
|
||||
await this.clipboard?.writeToClipboard(items => ({
|
||||
...items,
|
||||
'text/plain': htmlContent,
|
||||
'text/html': htmlContent,
|
||||
'BLOCKSUITE/SNAPSHOT': JSON.stringify({
|
||||
snapshot: sliceSnapshot,
|
||||
blobs: {},
|
||||
}),
|
||||
}));
|
||||
this.notificationService.toast('Copied HTML to clipboard');
|
||||
};
|
||||
|
||||
|
||||
@@ -14,12 +14,16 @@ export const useGuard = <
|
||||
) => {
|
||||
const guardService = useService(GuardService);
|
||||
useEffect(() => {
|
||||
// oxlint-disable-next-line exhaustive-deps
|
||||
guardService.revalidateCan(action, ...args);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [action, guardService, ...args]);
|
||||
|
||||
const livedata$ = useMemo(
|
||||
() => guardService.can$(action, ...args),
|
||||
() => {
|
||||
// oxlint-disable-next-line exhaustive-deps
|
||||
return guardService.can$(action, ...args);
|
||||
},
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[action, guardService, ...args]
|
||||
);
|
||||
|
||||
@@ -22,6 +22,7 @@ export function useAsyncCallback<T extends any[]>(
|
||||
const handleAsyncError = React.useContext(AsyncCallbackContext);
|
||||
return React.useCallback(
|
||||
(...args: any) => {
|
||||
// oxlint-disable-next-line exhaustive-deps
|
||||
callback(...args).catch(e => handleAsyncError(e));
|
||||
},
|
||||
[...deps] // eslint-disable-line react-hooks/exhaustive-deps
|
||||
|
||||
@@ -59,27 +59,9 @@ test.describe('comments', () => {
|
||||
{ delay: 50 }
|
||||
);
|
||||
|
||||
// Select some text using triple-click and then refine selection
|
||||
// Triple-click to select the entire paragraph
|
||||
await page.locator('affine-paragraph').first().click({ clickCount: 3 });
|
||||
|
||||
// Wait for selection
|
||||
await page.waitForTimeout(100);
|
||||
|
||||
// Now we have the whole paragraph selected, let's use mouse to select just "some text"
|
||||
const paragraph = page.locator('affine-paragraph').first();
|
||||
const bbox = await paragraph.boundingBox();
|
||||
if (!bbox) throw new Error('Paragraph not found');
|
||||
|
||||
// Click and drag to select "some text" portion
|
||||
// Start roughly where "some" begins (estimated position)
|
||||
await page.mouse.move(bbox.x + bbox.width * 0.45, bbox.y + bbox.height / 2);
|
||||
await page.mouse.down();
|
||||
await page.mouse.move(bbox.x + bbox.width * 0.58, bbox.y + bbox.height / 2);
|
||||
await page.mouse.up();
|
||||
|
||||
// Wait a bit for selection to stabilize
|
||||
await page.waitForTimeout(200);
|
||||
for (let i = 0; i < 11; i++) {
|
||||
await page.keyboard.press('Shift+ArrowLeft');
|
||||
}
|
||||
|
||||
// Wait for the toolbar to appear after text selection
|
||||
const toolbar = page.locator('editor-toolbar');
|
||||
@@ -97,11 +79,14 @@ test.describe('comments', () => {
|
||||
await page.waitForTimeout(300); // Wait for sidebar animation
|
||||
|
||||
// Find the comment editor
|
||||
const commentEditor = page.locator('.comment-editor-viewport');
|
||||
const commentEditor = page.locator(
|
||||
'.comment-editor-viewport .page-editor-container'
|
||||
);
|
||||
await expect(commentEditor).toBeVisible();
|
||||
|
||||
// Enter comment text
|
||||
await commentEditor.click();
|
||||
await commentEditor.focus();
|
||||
await page.keyboard.type('This is my first comment on this text', {
|
||||
delay: 50,
|
||||
});
|
||||
@@ -125,11 +110,7 @@ test.describe('comments', () => {
|
||||
// The preview should show the selected text that was commented on
|
||||
// Target specifically the sidebar tab content to avoid conflicts with editor content
|
||||
const sidebarTab = page.getByTestId('sidebar-tab-content-comment');
|
||||
await expect(
|
||||
sidebarTab.locator(
|
||||
'text=This is a test paragraph with some text that we will comment on.'
|
||||
)
|
||||
).toBeVisible();
|
||||
await expect(sidebarTab.locator('text=comment on.')).toBeVisible();
|
||||
|
||||
// This text should appear in the sidebar as the preview of what was commented on
|
||||
|
||||
|
||||
@@ -281,6 +281,7 @@ test('link bar should not be appear when the range is collapsed', async ({
|
||||
await expect(linkPopoverLocator).toBeVisible();
|
||||
|
||||
await focusRichText(page); // click to cancel the link popover
|
||||
await waitNextFrame(page);
|
||||
await focusRichTextEnd(page);
|
||||
await pressShiftEnter(page);
|
||||
await waitNextFrame(page);
|
||||
|
||||
436
yarn.lock
436
yarn.lock
@@ -803,7 +803,7 @@ __metadata:
|
||||
husky: "npm:^9.1.7"
|
||||
lint-staged: "npm:^16.0.0"
|
||||
msw: "npm:^2.6.8"
|
||||
oxlint: "npm:^1.11.1"
|
||||
oxlint: "npm:^1.15.0"
|
||||
prettier: "npm:^3.4.2"
|
||||
semver: "npm:^7.6.3"
|
||||
serve: "npm:^14.2.4"
|
||||
@@ -10698,100 +10698,58 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint-tsgolint/darwin-arm64@npm:0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@oxlint-tsgolint/darwin-arm64@npm:0.0.1"
|
||||
conditions: os=darwin
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint-tsgolint/darwin-x64@npm:0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@oxlint-tsgolint/darwin-x64@npm:0.0.1"
|
||||
conditions: os=darwin
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint-tsgolint/linux-arm64@npm:0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@oxlint-tsgolint/linux-arm64@npm:0.0.1"
|
||||
conditions: os=linux
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint-tsgolint/linux-x64@npm:0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@oxlint-tsgolint/linux-x64@npm:0.0.1"
|
||||
conditions: os=linux
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint-tsgolint/win32-arm64@npm:0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@oxlint-tsgolint/win32-arm64@npm:0.0.1"
|
||||
conditions: os=win32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint-tsgolint/win32-x64@npm:0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@oxlint-tsgolint/win32-x64@npm:0.0.1"
|
||||
conditions: os=win32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/darwin-arm64@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/darwin-arm64@npm:1.11.1"
|
||||
"@oxlint/darwin-arm64@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/darwin-arm64@npm:1.15.0"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/darwin-x64@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/darwin-x64@npm:1.11.1"
|
||||
"@oxlint/darwin-x64@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/darwin-x64@npm:1.15.0"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/linux-arm64-gnu@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/linux-arm64-gnu@npm:1.11.1"
|
||||
"@oxlint/linux-arm64-gnu@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/linux-arm64-gnu@npm:1.15.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/linux-arm64-musl@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/linux-arm64-musl@npm:1.11.1"
|
||||
"@oxlint/linux-arm64-musl@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/linux-arm64-musl@npm:1.15.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/linux-x64-gnu@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/linux-x64-gnu@npm:1.11.1"
|
||||
"@oxlint/linux-x64-gnu@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/linux-x64-gnu@npm:1.15.0"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/linux-x64-musl@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/linux-x64-musl@npm:1.11.1"
|
||||
"@oxlint/linux-x64-musl@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/linux-x64-musl@npm:1.15.0"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/win32-arm64@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/win32-arm64@npm:1.11.1"
|
||||
"@oxlint/win32-arm64@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/win32-arm64@npm:1.15.0"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxlint/win32-x64@npm:1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "@oxlint/win32-x64@npm:1.11.1"
|
||||
"@oxlint/win32-x64@npm:1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "@oxlint/win32-x64@npm:1.15.0"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@@ -12592,142 +12550,149 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-android-arm-eabi@npm:4.43.0"
|
||||
"@rollup/rollup-android-arm-eabi@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-android-arm-eabi@npm:4.50.1"
|
||||
conditions: os=android & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-android-arm64@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-android-arm64@npm:4.43.0"
|
||||
"@rollup/rollup-android-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-android-arm64@npm:4.50.1"
|
||||
conditions: os=android & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-darwin-arm64@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-darwin-arm64@npm:4.43.0"
|
||||
"@rollup/rollup-darwin-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-darwin-arm64@npm:4.50.1"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-darwin-x64@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-darwin-x64@npm:4.43.0"
|
||||
"@rollup/rollup-darwin-x64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-darwin-x64@npm:4.50.1"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-freebsd-arm64@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-freebsd-arm64@npm:4.43.0"
|
||||
"@rollup/rollup-freebsd-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-freebsd-arm64@npm:4.50.1"
|
||||
conditions: os=freebsd & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-freebsd-x64@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-freebsd-x64@npm:4.43.0"
|
||||
"@rollup/rollup-freebsd-x64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-freebsd-x64@npm:4.50.1"
|
||||
conditions: os=freebsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.50.1"
|
||||
conditions: os=linux & cpu=arm & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm-musleabihf@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.50.1"
|
||||
conditions: os=linux & cpu=arm & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.50.1"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm64-musl@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-arm64-musl@npm:4.50.1"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-loongarch64-gnu@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.43.0"
|
||||
"@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.50.1"
|
||||
conditions: os=linux & cpu=loong64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.43.0"
|
||||
"@rollup/rollup-linux-ppc64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.50.1"
|
||||
conditions: os=linux & cpu=ppc64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.43.0"
|
||||
"@rollup/rollup-linux-riscv64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.50.1"
|
||||
conditions: os=linux & cpu=riscv64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-riscv64-musl@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.43.0"
|
||||
"@rollup/rollup-linux-riscv64-musl@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.50.1"
|
||||
conditions: os=linux & cpu=riscv64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.43.0"
|
||||
"@rollup/rollup-linux-s390x-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.50.1"
|
||||
conditions: os=linux & cpu=s390x & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.43.0"
|
||||
"@rollup/rollup-linux-x64-gnu@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-x64-gnu@npm:4.50.1"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-linux-x64-musl@npm:4.43.0"
|
||||
"@rollup/rollup-linux-x64-musl@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-linux-x64-musl@npm:4.50.1"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.43.0"
|
||||
"@rollup/rollup-openharmony-arm64@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-openharmony-arm64@npm:4.50.1"
|
||||
conditions: os=openharmony & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.50.1"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.43.0"
|
||||
"@rollup/rollup-win32-ia32-msvc@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.50.1"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@npm:4.43.0":
|
||||
version: 4.43.0
|
||||
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.43.0"
|
||||
"@rollup/rollup-win32-x64-msvc@npm:4.50.1":
|
||||
version: 4.50.1
|
||||
resolution: "@rollup/rollup-win32-x64-msvc@npm:4.50.1"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
@@ -14899,10 +14864,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/estree@npm:*, @types/estree@npm:1.0.7, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6":
|
||||
version: 1.0.7
|
||||
resolution: "@types/estree@npm:1.0.7"
|
||||
checksum: 10/419c845ece767ad4b21171e6e5b63dabb2eb46b9c0d97361edcd9cabbf6a95fcadb91d89b5fa098d1336fa0b8fceaea82fca97a2ef3971f5c86e53031e157b21
|
||||
"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6":
|
||||
version: 1.0.8
|
||||
resolution: "@types/estree@npm:1.0.8"
|
||||
checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -22041,15 +22006,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fdir@npm:^6.4.4, fdir@npm:^6.4.5":
|
||||
version: 6.4.6
|
||||
resolution: "fdir@npm:6.4.6"
|
||||
"fdir@npm:^6.4.4, fdir@npm:^6.5.0":
|
||||
version: 6.5.0
|
||||
resolution: "fdir@npm:6.5.0"
|
||||
peerDependencies:
|
||||
picomatch: ^3 || ^4
|
||||
peerDependenciesMeta:
|
||||
picomatch:
|
||||
optional: true
|
||||
checksum: 10/c186ba387e7b75ccf874a098d9bc5fe0af0e9c52fc56f8eac8e80aa4edb65532684bf2bf769894ff90f53bf221d6136692052d31f07a9952807acae6cbe7ee50
|
||||
checksum: 10/14ca1c9f0a0e8f4f2e9bf4e8551065a164a09545dae548c12a18d238b72e51e5a7b39bd8e5494b56463a0877672d0a6c1ef62c6fa0677db1b0c847773be939b1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -26700,8 +26665,8 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"mermaid@npm:^10.9.1":
|
||||
version: 10.9.3
|
||||
resolution: "mermaid@npm:10.9.3"
|
||||
version: 10.9.4
|
||||
resolution: "mermaid@npm:10.9.4"
|
||||
dependencies:
|
||||
"@braintree/sanitize-url": "npm:^6.0.1"
|
||||
"@types/d3-scale": "npm:^4.0.3"
|
||||
@@ -26723,7 +26688,7 @@ __metadata:
|
||||
ts-dedent: "npm:^2.2.0"
|
||||
uuid: "npm:^9.0.0"
|
||||
web-worker: "npm:^1.2.0"
|
||||
checksum: 10/ca6ed9e6a24a7d8777ea9f145d7dc5b66e2070cfb7afa39b77532ebe6ebf6e7a1e9ae617ccc9b47ca493d862a27487ea13f841ccd1184107e4ac689d4b3d4c38
|
||||
checksum: 10/1d51839345cbb3e54171be73549afa4dba77df56cf3693fb57dd7ff24c2806310dc7b829f2ab2e87b7beb15cf5a89c8029d8d7cfd206258ed97bddfa03b54a97
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -28678,48 +28643,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"oxlint-tsgolint@npm:>=0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "oxlint-tsgolint@npm:0.0.1"
|
||||
"oxlint@npm:^1.15.0":
|
||||
version: 1.15.0
|
||||
resolution: "oxlint@npm:1.15.0"
|
||||
dependencies:
|
||||
"@oxlint-tsgolint/darwin-arm64": "npm:0.0.1"
|
||||
"@oxlint-tsgolint/darwin-x64": "npm:0.0.1"
|
||||
"@oxlint-tsgolint/linux-arm64": "npm:0.0.1"
|
||||
"@oxlint-tsgolint/linux-x64": "npm:0.0.1"
|
||||
"@oxlint-tsgolint/win32-arm64": "npm:0.0.1"
|
||||
"@oxlint-tsgolint/win32-x64": "npm:0.0.1"
|
||||
dependenciesMeta:
|
||||
"@oxlint-tsgolint/darwin-arm64":
|
||||
optional: true
|
||||
"@oxlint-tsgolint/darwin-x64":
|
||||
optional: true
|
||||
"@oxlint-tsgolint/linux-arm64":
|
||||
optional: true
|
||||
"@oxlint-tsgolint/linux-x64":
|
||||
optional: true
|
||||
"@oxlint-tsgolint/win32-arm64":
|
||||
optional: true
|
||||
"@oxlint-tsgolint/win32-x64":
|
||||
optional: true
|
||||
bin:
|
||||
tsgolint: bin/tsgolint.js
|
||||
checksum: 10/2cadb04d5597f425564ed080ca608edb1014aebc85a7a9336a49285c2cb4289379f3eb614694666c8802618a28f619ab2f37dd1ac86cba33a309bc69d8ff47f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"oxlint@npm:^1.11.1":
|
||||
version: 1.11.1
|
||||
resolution: "oxlint@npm:1.11.1"
|
||||
dependencies:
|
||||
"@oxlint/darwin-arm64": "npm:1.11.1"
|
||||
"@oxlint/darwin-x64": "npm:1.11.1"
|
||||
"@oxlint/linux-arm64-gnu": "npm:1.11.1"
|
||||
"@oxlint/linux-arm64-musl": "npm:1.11.1"
|
||||
"@oxlint/linux-x64-gnu": "npm:1.11.1"
|
||||
"@oxlint/linux-x64-musl": "npm:1.11.1"
|
||||
"@oxlint/win32-arm64": "npm:1.11.1"
|
||||
"@oxlint/win32-x64": "npm:1.11.1"
|
||||
oxlint-tsgolint: "npm:>=0.0.1"
|
||||
"@oxlint/darwin-arm64": "npm:1.15.0"
|
||||
"@oxlint/darwin-x64": "npm:1.15.0"
|
||||
"@oxlint/linux-arm64-gnu": "npm:1.15.0"
|
||||
"@oxlint/linux-arm64-musl": "npm:1.15.0"
|
||||
"@oxlint/linux-x64-gnu": "npm:1.15.0"
|
||||
"@oxlint/linux-x64-musl": "npm:1.15.0"
|
||||
"@oxlint/win32-arm64": "npm:1.15.0"
|
||||
"@oxlint/win32-x64": "npm:1.15.0"
|
||||
peerDependencies:
|
||||
oxlint-tsgolint: ">=0.2.0"
|
||||
dependenciesMeta:
|
||||
"@oxlint/darwin-arm64":
|
||||
optional: true
|
||||
@@ -28737,12 +28674,13 @@ __metadata:
|
||||
optional: true
|
||||
"@oxlint/win32-x64":
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
oxlint-tsgolint:
|
||||
optional: true
|
||||
bin:
|
||||
oxc_language_server: bin/oxc_language_server
|
||||
oxlint: bin/oxlint
|
||||
checksum: 10/bdf6cb7f6d74b1d6c63ddfdc9597f5394857b1bbee2fb5ab6b86bae9bb58e3ca707ce345f488ae6087ffd909122b615c6020843f7669f6dade14e0396c107a9c
|
||||
checksum: 10/1ee632ad359b3e63a3a5fccadfcab23ac4b0881b06f2e6c29431db56377858571592005459f247b2eef822d1da4c9d68afdf23965afe6ec6a5fe092f60239fa8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -29394,10 +29332,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"picomatch@npm:^4.0.2":
|
||||
version: 4.0.2
|
||||
resolution: "picomatch@npm:4.0.2"
|
||||
checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717
|
||||
"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3":
|
||||
version: 4.0.3
|
||||
resolution: "picomatch@npm:4.0.3"
|
||||
checksum: 10/57b99055f40b16798f2802916d9c17e9744e620a0db136554af01d19598b96e45e2f00014c91d1b8b13874b80caa8c295b3d589a3f72373ec4aaf54baa5962d5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -29917,14 +29855,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.41, postcss@npm:^8.4.49, postcss@npm:^8.5.3, postcss@npm:^8.5.4":
|
||||
version: 8.5.5
|
||||
resolution: "postcss@npm:8.5.5"
|
||||
"postcss@npm:^8.4.33, postcss@npm:^8.4.38, postcss@npm:^8.4.41, postcss@npm:^8.4.49, postcss@npm:^8.5.3, postcss@npm:^8.5.6":
|
||||
version: 8.5.6
|
||||
resolution: "postcss@npm:8.5.6"
|
||||
dependencies:
|
||||
nanoid: "npm:^3.3.11"
|
||||
picocolors: "npm:^1.1.1"
|
||||
source-map-js: "npm:^1.2.1"
|
||||
checksum: 10/c80f723c754b656bf7c983e34841fa35fe0c37a13edd27e24de64e7962cfab11ea081b3b1c900838d2dbe576a045fdecad4f17862c488f12735742f525d22cf0
|
||||
checksum: 10/9e4fbe97574091e9736d0e82a591e29aa100a0bf60276a926308f8c57249698935f35c5d2f4e80de778d0cbb8dcffab4f383d85fd50c5649aca421c3df729b86
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -31386,31 +31324,32 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rollup@npm:^4.34.9, rollup@npm:^4.40.0":
|
||||
version: 4.43.0
|
||||
resolution: "rollup@npm:4.43.0"
|
||||
"rollup@npm:^4.34.9, rollup@npm:^4.43.0":
|
||||
version: 4.50.1
|
||||
resolution: "rollup@npm:4.50.1"
|
||||
dependencies:
|
||||
"@rollup/rollup-android-arm-eabi": "npm:4.43.0"
|
||||
"@rollup/rollup-android-arm64": "npm:4.43.0"
|
||||
"@rollup/rollup-darwin-arm64": "npm:4.43.0"
|
||||
"@rollup/rollup-darwin-x64": "npm:4.43.0"
|
||||
"@rollup/rollup-freebsd-arm64": "npm:4.43.0"
|
||||
"@rollup/rollup-freebsd-x64": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm-musleabihf": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm64-gnu": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-arm64-musl": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-riscv64-gnu": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-riscv64-musl": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-s390x-gnu": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-x64-gnu": "npm:4.43.0"
|
||||
"@rollup/rollup-linux-x64-musl": "npm:4.43.0"
|
||||
"@rollup/rollup-win32-arm64-msvc": "npm:4.43.0"
|
||||
"@rollup/rollup-win32-ia32-msvc": "npm:4.43.0"
|
||||
"@rollup/rollup-win32-x64-msvc": "npm:4.43.0"
|
||||
"@types/estree": "npm:1.0.7"
|
||||
"@rollup/rollup-android-arm-eabi": "npm:4.50.1"
|
||||
"@rollup/rollup-android-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-darwin-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-darwin-x64": "npm:4.50.1"
|
||||
"@rollup/rollup-freebsd-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-freebsd-x64": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm-musleabihf": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-arm64-musl": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-ppc64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-riscv64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-riscv64-musl": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-s390x-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-x64-gnu": "npm:4.50.1"
|
||||
"@rollup/rollup-linux-x64-musl": "npm:4.50.1"
|
||||
"@rollup/rollup-openharmony-arm64": "npm:4.50.1"
|
||||
"@rollup/rollup-win32-arm64-msvc": "npm:4.50.1"
|
||||
"@rollup/rollup-win32-ia32-msvc": "npm:4.50.1"
|
||||
"@rollup/rollup-win32-x64-msvc": "npm:4.50.1"
|
||||
"@types/estree": "npm:1.0.8"
|
||||
fsevents: "npm:~2.3.2"
|
||||
dependenciesMeta:
|
||||
"@rollup/rollup-android-arm-eabi":
|
||||
@@ -31435,7 +31374,7 @@ __metadata:
|
||||
optional: true
|
||||
"@rollup/rollup-linux-loongarch64-gnu":
|
||||
optional: true
|
||||
"@rollup/rollup-linux-powerpc64le-gnu":
|
||||
"@rollup/rollup-linux-ppc64-gnu":
|
||||
optional: true
|
||||
"@rollup/rollup-linux-riscv64-gnu":
|
||||
optional: true
|
||||
@@ -31447,6 +31386,8 @@ __metadata:
|
||||
optional: true
|
||||
"@rollup/rollup-linux-x64-musl":
|
||||
optional: true
|
||||
"@rollup/rollup-openharmony-arm64":
|
||||
optional: true
|
||||
"@rollup/rollup-win32-arm64-msvc":
|
||||
optional: true
|
||||
"@rollup/rollup-win32-ia32-msvc":
|
||||
@@ -31457,7 +31398,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
rollup: dist/bin/rollup
|
||||
checksum: 10/c7f436880dfd5bd54e9ac579625b5355be58b5437ebb386eb88d709d6bed733a4411673cc80fd64dc5514cd71794544bc83775842108c86ed2b51827e11b33b8
|
||||
checksum: 10/99f47dc64ea5bc15056a9af49a10a287ec1c49550563ce7827d85d2c03a4a46e42ad2fd48f91b647193e849a22e01a66a782c8311bcefd4246932f02cc437e74
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -31909,14 +31850,15 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"sha.js@npm:^2.4.11":
|
||||
version: 2.4.11
|
||||
resolution: "sha.js@npm:2.4.11"
|
||||
version: 2.4.12
|
||||
resolution: "sha.js@npm:2.4.12"
|
||||
dependencies:
|
||||
inherits: "npm:^2.0.1"
|
||||
safe-buffer: "npm:^5.0.1"
|
||||
inherits: "npm:^2.0.4"
|
||||
safe-buffer: "npm:^5.2.1"
|
||||
to-buffer: "npm:^1.2.0"
|
||||
bin:
|
||||
sha.js: ./bin.js
|
||||
checksum: 10/d833bfa3e0a67579a6ce6e1bc95571f05246e0a441dd8c76e3057972f2a3e098465687a4369b07e83a0375a88703577f71b5b2e966809e67ebc340dbedb478c7
|
||||
sha.js: bin.js
|
||||
checksum: 10/39c0993592c2ab34eb2daae2199a2a1d502713765aecb611fd97c0c4ab7cd53e902d628e1962aaf384bafd28f55951fef46dcc78799069ce41d74b03aa13b5a7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -33530,13 +33472,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.14":
|
||||
version: 0.2.14
|
||||
resolution: "tinyglobby@npm:0.2.14"
|
||||
"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.13, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15":
|
||||
version: 0.2.15
|
||||
resolution: "tinyglobby@npm:0.2.15"
|
||||
dependencies:
|
||||
fdir: "npm:^6.4.4"
|
||||
picomatch: "npm:^4.0.2"
|
||||
checksum: 10/3d306d319718b7cc9d79fb3f29d8655237aa6a1f280860a217f93417039d0614891aee6fc47c5db315f4fcc6ac8d55eb8e23e2de73b2c51a431b42456d9e5764
|
||||
fdir: "npm:^6.5.0"
|
||||
picomatch: "npm:^4.0.3"
|
||||
checksum: 10/d72bd826a8b0fa5fa3929e7fe5ba48fceb2ae495df3a231b6c5408cd7d8c00b58ab5a9c2a76ba56a62ee9b5e083626f1f33599734bed1ffc4b792406408f0ca2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -33643,6 +33585,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"to-buffer@npm:^1.2.0":
|
||||
version: 1.2.1
|
||||
resolution: "to-buffer@npm:1.2.1"
|
||||
dependencies:
|
||||
isarray: "npm:^2.0.5"
|
||||
safe-buffer: "npm:^5.2.1"
|
||||
typed-array-buffer: "npm:^1.0.3"
|
||||
checksum: 10/f8d03f070b8567d9c949f1b59c8d47c83ed2e59b50b5449258f931df9a1fcb751aa8bb8756a9345adc529b6b1822521157c48e1a7d01779a47185060d7bf96d4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"to-data-view@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "to-data-view@npm:1.1.0"
|
||||
@@ -33984,6 +33937,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typed-array-buffer@npm:@nolyfill/typed-array-buffer@^1":
|
||||
version: 1.0.44
|
||||
resolution: "@nolyfill/typed-array-buffer@npm:1.0.44"
|
||||
dependencies:
|
||||
"@nolyfill/shared": "npm:1.0.44"
|
||||
checksum: 10/712b97d7ef06b00205cd90d6c5a6bbd54b5381fc6f8deb9fb1a8ddd8e538a29178f9ddb267f13cfbf468096c6340f53706039f88ecd0c6d9277bd95114573e47
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typedarray@npm:@nolyfill/typedarray@^1":
|
||||
version: 1.0.44
|
||||
resolution: "@nolyfill/typedarray@npm:1.0.44"
|
||||
@@ -34797,16 +34759,16 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0":
|
||||
version: 7.0.0-beta.1
|
||||
resolution: "vite@npm:7.0.0-beta.1"
|
||||
version: 7.1.5
|
||||
resolution: "vite@npm:7.1.5"
|
||||
dependencies:
|
||||
esbuild: "npm:^0.25.0"
|
||||
fdir: "npm:^6.4.5"
|
||||
fdir: "npm:^6.5.0"
|
||||
fsevents: "npm:~2.3.3"
|
||||
picomatch: "npm:^4.0.2"
|
||||
postcss: "npm:^8.5.4"
|
||||
rollup: "npm:^4.40.0"
|
||||
tinyglobby: "npm:^0.2.14"
|
||||
picomatch: "npm:^4.0.3"
|
||||
postcss: "npm:^8.5.6"
|
||||
rollup: "npm:^4.43.0"
|
||||
tinyglobby: "npm:^0.2.15"
|
||||
peerDependencies:
|
||||
"@types/node": ^20.19.0 || >=22.12.0
|
||||
jiti: ">=1.21.0"
|
||||
@@ -34847,13 +34809,13 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
vite: bin/vite.js
|
||||
checksum: 10/59dc57a531214dfd477147050718e6661f85421adbd47fc4cc22d6e7320fa354f7099c18e0b3c4cfd4e03f32a9999f872909ebd8c35408610920c5c0d17a546d
|
||||
checksum: 10/59edeef7e98757a668b2ad8a1731a5657fa83e22a165a36b7359225ea98a9be39b2f486710c0cf5085edb85daee7c8b6b6b0bd85d0ef32a1aa84aef71aabd0f0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.0.3, vite@npm:^6.1.0":
|
||||
version: 6.3.5
|
||||
resolution: "vite@npm:6.3.5"
|
||||
version: 6.3.6
|
||||
resolution: "vite@npm:6.3.6"
|
||||
dependencies:
|
||||
esbuild: "npm:^0.25.0"
|
||||
fdir: "npm:^6.4.4"
|
||||
@@ -34902,7 +34864,7 @@ __metadata:
|
||||
optional: true
|
||||
bin:
|
||||
vite: bin/vite.js
|
||||
checksum: 10/7bc3a1c5ef79413ad70daeeaf69b76cd1218d16aa18ed8ee08d74648ef17284f4a17c11f5cf42b573b6dc5e3d5f115110b67b1d23c2c699cfe404757764a634a
|
||||
checksum: 10/8b8b6fe12318ca457396bf2053df7056cf4810f1d4a43b36b6afe59860e32b749c0685a290fe8a973b0d3da179ceec4c30cebbd3c91d0c47fbcf6436b17bdeef
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user