@@ -78,6 +78,10 @@ function startsWithSeparator(textContent: string): boolean {
78
78
return isSeparator ( textContent [ 0 ] )
79
79
}
80
80
81
+ function startsWithFullStop ( textContent : string ) : boolean {
82
+ return / ^ \. [ a - z \d ] + / i. test ( textContent )
83
+ }
84
+
81
85
function isPreviousNodeValid ( node : LexicalNode ) : boolean {
82
86
let previousNode = node . getPreviousSibling ( )
83
87
if ( $isElementNode ( previousNode ) ) {
@@ -340,7 +344,10 @@ function handleBadNeighbors(
340
344
const nextSibling = textNode . getNextSibling ( )
341
345
const text = textNode . getTextContent ( )
342
346
343
- if ( $isAutoLinkNode ( previousSibling ) && ! startsWithSeparator ( text ) ) {
347
+ if (
348
+ $isAutoLinkNode ( previousSibling ) &&
349
+ ( ! startsWithSeparator ( text ) || startsWithFullStop ( text ) )
350
+ ) {
344
351
previousSibling . append ( textNode )
345
352
handleLinkEdit ( previousSibling , matchers , onChange )
346
353
onChange ( null , previousSibling . getFields ( ) ?. url ?? null )
@@ -418,7 +425,7 @@ function useAutoLink(
418
425
}
419
426
420
427
const URL_REGEX =
421
- / ( ( h t t p s ? : \/ \/ ( w w w \. ) ? ) | ( w w w \. ) ) [ - \w @ : % . + ~ # = ] { 1 , 256 } \. [ a - z A - Z \d ( ) ] { 1 , 6 } \b ( [ - \w ( ) @ : % + . ~ # ? & / = ] * ) /
428
+ / ( ( h t t p s ? : \/ \/ ( w w w \. ) ? ) | ( w w w \. ) ) [ - \w @ : % . + ~ # = ] { 1 , 256 } \. [ a - z A - Z \d ( ) ] { 1 , 6 } \b ( [ - \w ( ) @ : % + . ~ # ? & / = ] * ) (?< ! [ - . + ( ) : % ] ) /
422
429
423
430
const EMAIL_REGEX =
424
431
/ ( ( [ ^ < > ( ) [ \] \\ . , ; : \s @ " ] + ( \. [ ^ < > ( ) [ \] \\ . , ; : \s @ " ] + ) * ) | ( " .+ " ) ) @ ( ( \[ \d { 1 , 3 } \. \d { 1 , 3 } \. \d { 1 , 3 } \. \d { 1 , 3 } \] ) | ( ( [ a - z \- \d ] + \. ) + [ a - z ] { 2 , } ) ) / i
0 commit comments