refactor(editor): remove inline editor keyboard utils and add markdown property in rich-text (#10375)

This commit is contained in:
Flrande
2025-02-23 19:57:56 +08:00
committed by GitHub
parent eef2f004b8
commit 9fd1ca1c09
16 changed files with 252 additions and 725 deletions

View File

@@ -1106,31 +1106,6 @@ test('delete embed when pressing backspace after embed', async ({ page }) => {
]);
});
test('markdown shortcut using keyboard util', async ({ page }) => {
await enterInlineEditorPlayground(page);
await focusInlineRichText(page);
await page.waitForTimeout(100);
await type(page, 'aaa**bbb** ccc');
const delta = await getDeltaFromInlineRichText(page);
expect(delta).toEqual([
{
insert: 'aaa',
},
{
insert: 'bbb',
attributes: {
bold: true,
},
},
{
insert: 'ccc',
},
]);
});
test('triple click to select line', async ({ page }) => {
await enterInlineEditorPlayground(page);
await focusInlineRichText(page);

View File

@@ -4,6 +4,7 @@ import {
getCursorBlockIdAndHeight,
initEmptyParagraphState,
pressArrowLeft,
pressArrowRight,
pressBackspace,
pressEnter,
pressSpace,
@@ -228,6 +229,24 @@ test.describe('markdown inline-text', () => {
});
test('bolditalic', async ({ page }) => {
await type(page, 'aa***b*** ');
await assertRichTextInlineDeltas(page, [
{
insert: 'aa',
},
{
insert: 'b',
attributes: {
bold: true,
italic: true,
},
},
]);
await undoByKeyboard(page);
await undoByKeyboard(page);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
await type(page, 'aa***bb*** ');
await assertRichTextInlineDeltas(page, [
{
@@ -282,6 +301,23 @@ test.describe('markdown inline-text', () => {
});
test('bold', async ({ page }) => {
await type(page, 'aa**b** ');
await assertRichTextInlineDeltas(page, [
{
insert: 'aa',
},
{
insert: 'b',
attributes: {
bold: true,
},
},
]);
await undoByKeyboard(page);
await undoByKeyboard(page);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
await type(page, 'aa**bb** ');
await assertRichTextInlineDeltas(page, [
{
@@ -333,6 +369,23 @@ test.describe('markdown inline-text', () => {
});
test('italic', async ({ page }) => {
await type(page, 'aa*b* ');
await assertRichTextInlineDeltas(page, [
{
insert: 'aa',
},
{
insert: 'b',
attributes: {
italic: true,
},
},
]);
await undoByKeyboard(page);
await undoByKeyboard(page);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
await type(page, 'aa*bb* ');
await assertRichTextInlineDeltas(page, [
{
@@ -385,6 +438,23 @@ test.describe('markdown inline-text', () => {
});
test('strike', async ({ page }) => {
await type(page, 'aa~~b~~ ');
await assertRichTextInlineDeltas(page, [
{
insert: 'aa',
},
{
insert: 'b',
attributes: {
strike: true,
},
},
]);
await undoByKeyboard(page);
await undoByKeyboard(page);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
await type(page, 'aa~~bb~~ ');
await assertRichTextInlineDeltas(page, [
{
@@ -436,6 +506,23 @@ test.describe('markdown inline-text', () => {
});
test('underline', async ({ page }) => {
await type(page, 'aa~b~ ');
await assertRichTextInlineDeltas(page, [
{
insert: 'aa',
},
{
insert: 'b',
attributes: {
underline: true,
},
},
]);
await undoByKeyboard(page);
await undoByKeyboard(page);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
await type(page, 'aa~bb~ ');
await assertRichTextInlineDeltas(page, [
{
@@ -487,6 +574,23 @@ test.describe('markdown inline-text', () => {
});
test('code', async ({ page }) => {
await type(page, 'aa`b` ');
await assertRichTextInlineDeltas(page, [
{
insert: 'aa',
},
{
insert: 'b',
attributes: {
code: true,
},
},
]);
await undoByKeyboard(page);
await undoByKeyboard(page);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
await type(page, 'aa`bb` ');
await assertRichTextInlineDeltas(page, [
{
@@ -538,6 +642,40 @@ test.describe('markdown inline-text', () => {
await assertRichTexts(page, ['` test` ']);
await undoByKeyboard(page);
await assertRichTexts(page, ['']);
// https://github.com/toeverything/AFFiNE/issues/9410
await waitNextFrame(page);
await type(page, 'test**bold** ');
await assertRichTextInlineDeltas(page, [
{
insert: 'test',
},
{
insert: 'bold',
attributes: {
bold: true,
},
},
]);
await pressArrowLeft(page, 8);
await type(page, '`');
await pressArrowRight(page, 8);
await type(page, '` ');
await assertRichTextInlineDeltas(page, [
{
insert: 'test',
attributes: {
code: true,
},
},
{
insert: 'bold',
attributes: {
bold: true,
code: true,
},
},
]);
});
});