@@ -1322,4 +1322,193 @@ test.describe('CodeBlock', () => {
13221322 focusPath : [ 0 , 4 , 0 ] ,
13231323 } ) ;
13241324 } ) ;
1325+
1326+ test ( 'Can create code block with language `diff`' , async ( {
1327+ page,
1328+ isRichText,
1329+ } ) => {
1330+ await focusEditor ( page ) ;
1331+ await page . keyboard . type (
1332+ '```diff >let a = 1;\n<let b = 2;\nlet c = 3;\n let d = 4;' ,
1333+ ) ;
1334+ if ( isRichText ) {
1335+ await assertHTML (
1336+ page ,
1337+ html `
1338+ < code
1339+ class ="PlaygroundEditorTheme__code PlaygroundEditorTheme__ltr "
1340+ dir ="ltr "
1341+ spellcheck ="false "
1342+ data-gutter ="1234 "
1343+ data-highlight-language ="diff "
1344+ data-language ="diff ">
1345+ < span
1346+ class ="PlaygroundEditorTheme__tokenInserted "
1347+ data-lexical-text ="true ">
1348+ >
1349+ </ span >
1350+ < span data-lexical-text ="true "> let a = 1;</ span >
1351+ < br />
1352+ < span
1353+ class ="PlaygroundEditorTheme__tokenDeleted "
1354+ data-lexical-text ="true ">
1355+ <
1356+ </ span >
1357+ < span data-lexical-text ="true "> let b = 2;</ span >
1358+ < br />
1359+ < span data-lexical-text ="true "> let c = 3;</ span >
1360+ < br />
1361+ < span
1362+ class ="PlaygroundEditorTheme__tokenUnchanged "
1363+ data-lexical-text ="true "> </ span >
1364+ < span data-lexical-text ="true "> let d = 4;</ span >
1365+ </ code >
1366+ ` ,
1367+ ) ;
1368+ } else {
1369+ await assertHTML (
1370+ page ,
1371+ html `
1372+ < p
1373+ class ="PlaygroundEditorTheme__paragraph PlaygroundEditorTheme__ltr "
1374+ dir ="ltr ">
1375+ < span data-lexical-text ="true "> \`\`\`diff >let a = 1;</ span >
1376+ < br />
1377+ < span data-lexical-text ="true "> <let b = 2;</ span >
1378+ < br />
1379+ < span data-lexical-text ="true "> let c = 3;</ span >
1380+ < br />
1381+ < span data-lexical-text ="true "> let d = 4;</ span >
1382+ </ p >
1383+ ` ,
1384+ ) ;
1385+ }
1386+ } ) ;
1387+
1388+ test ( 'Can create code block with language `diff-javascript`' , async ( {
1389+ page,
1390+ isRichText,
1391+ } ) => {
1392+ await focusEditor ( page ) ;
1393+ await page . keyboard . type (
1394+ '```diff-javascript +let a = 1;\n-let b = 2;\nlet c = 3;\n let d = 4;' ,
1395+ ) ;
1396+ if ( isRichText ) {
1397+ await assertHTML (
1398+ page ,
1399+ html `
1400+ < code
1401+ class ="PlaygroundEditorTheme__code PlaygroundEditorTheme__ltr "
1402+ dir ="ltr "
1403+ spellcheck ="false "
1404+ data-gutter ="1234 "
1405+ data-highlight-language ="diff-javascript "
1406+ data-language ="diff-javascript ">
1407+ < span
1408+ class ="PlaygroundEditorTheme__tokenInserted "
1409+ data-lexical-text ="true ">
1410+ +
1411+ </ span >
1412+ < span
1413+ class ="PlaygroundEditorTheme__tokenAttr "
1414+ data-lexical-text ="true ">
1415+ let
1416+ </ span >
1417+ < span data-lexical-text ="true "> a</ span >
1418+ < span
1419+ class ="PlaygroundEditorTheme__tokenOperator "
1420+ data-lexical-text ="true ">
1421+ =
1422+ </ span >
1423+ < span data-lexical-text ="true "> </ span >
1424+ < span
1425+ class ="PlaygroundEditorTheme__tokenProperty "
1426+ data-lexical-text ="true ">
1427+ 1
1428+ </ span >
1429+ < span
1430+ class ="PlaygroundEditorTheme__tokenPunctuation "
1431+ data-lexical-text ="true ">
1432+ ;
1433+ </ span >
1434+ < br />
1435+ < span
1436+ class ="PlaygroundEditorTheme__tokenDeleted "
1437+ data-lexical-text ="true ">
1438+ -
1439+ </ span >
1440+ < span
1441+ class ="PlaygroundEditorTheme__tokenAttr "
1442+ data-lexical-text ="true ">
1443+ let
1444+ </ span >
1445+ < span data-lexical-text ="true "> b</ span >
1446+ < span
1447+ class ="PlaygroundEditorTheme__tokenOperator "
1448+ data-lexical-text ="true ">
1449+ =
1450+ </ span >
1451+ < span data-lexical-text ="true "> </ span >
1452+ < span
1453+ class ="PlaygroundEditorTheme__tokenProperty "
1454+ data-lexical-text ="true ">
1455+ 2
1456+ </ span >
1457+ < span
1458+ class ="PlaygroundEditorTheme__tokenPunctuation "
1459+ data-lexical-text ="true ">
1460+ ;
1461+ </ span >
1462+ < br />
1463+ < span data-lexical-text ="true "> let c = 3;</ span >
1464+ < br />
1465+ < span
1466+ class ="PlaygroundEditorTheme__tokenUnchanged "
1467+ data-lexical-text ="true "> </ span >
1468+ < span
1469+ class ="PlaygroundEditorTheme__tokenAttr "
1470+ data-lexical-text ="true ">
1471+ let
1472+ </ span >
1473+ < span data-lexical-text ="true "> d</ span >
1474+ < span
1475+ class ="PlaygroundEditorTheme__tokenOperator "
1476+ data-lexical-text ="true ">
1477+ =
1478+ </ span >
1479+ < span data-lexical-text ="true "> </ span >
1480+ < span
1481+ class ="PlaygroundEditorTheme__tokenProperty "
1482+ data-lexical-text ="true ">
1483+ 4
1484+ </ span >
1485+ < span
1486+ class ="PlaygroundEditorTheme__tokenPunctuation "
1487+ data-lexical-text ="true ">
1488+ ;
1489+ </ span >
1490+ </ code >
1491+ ` ,
1492+ ) ;
1493+ } else {
1494+ await assertHTML (
1495+ page ,
1496+ html `
1497+ < p
1498+ class ="PlaygroundEditorTheme__paragraph PlaygroundEditorTheme__ltr "
1499+ dir ="ltr ">
1500+ < span data-lexical-text ="true ">
1501+ \`\`\`diff-javascript +let a = 1;
1502+ </ span >
1503+ < br />
1504+ < span data-lexical-text ="true "> -let b = 2;</ span >
1505+ < br />
1506+ < span data-lexical-text ="true "> let c = 3;</ span >
1507+ < br />
1508+ < span data-lexical-text ="true "> let d = 4;</ span >
1509+ </ p >
1510+ ` ,
1511+ ) ;
1512+ }
1513+ } ) ;
13251514} ) ;
0 commit comments