mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-15 11:44:05 +02:00
fix findDOMPoint for void nodes with content length
This commit is contained in:
@@ -134,7 +134,11 @@ class Leaf extends React.Component {
|
|||||||
// COMPAT: Render text inside void nodes with a zero-width space.
|
// COMPAT: Render text inside void nodes with a zero-width space.
|
||||||
// So the node can contain selection but the text is not visible.
|
// So the node can contain selection but the text is not visible.
|
||||||
if (editor.query('isVoid', parent)) {
|
if (editor.query('isVoid', parent)) {
|
||||||
return <span data-slate-zero-width="z">{'\uFEFF'}</span>
|
return (
|
||||||
|
<span data-slate-zero-width="z" data-slate-length={parent.text.length}>
|
||||||
|
{'\uFEFF'}
|
||||||
|
</span>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// COMPAT: If this is the last text node in an empty block, render a zero-
|
// COMPAT: If this is the last text node in an empty block, render a zero-
|
||||||
@@ -147,7 +151,7 @@ class Leaf extends React.Component {
|
|||||||
parent.nodes.last() === node
|
parent.nodes.last() === node
|
||||||
) {
|
) {
|
||||||
return (
|
return (
|
||||||
<span data-slate-zero-width="n">
|
<span data-slate-zero-width="n" data-slate-length={0}>
|
||||||
{'\uFEFF'}
|
{'\uFEFF'}
|
||||||
<br />
|
<br />
|
||||||
</span>
|
</span>
|
||||||
@@ -158,7 +162,11 @@ class Leaf extends React.Component {
|
|||||||
// node, so we render a zero-width space so that the selection can be
|
// node, so we render a zero-width space so that the selection can be
|
||||||
// inserted next to it still.
|
// inserted next to it still.
|
||||||
if (text === '') {
|
if (text === '') {
|
||||||
return <span data-slate-zero-width="z">{'\uFEFF'}</span>
|
return (
|
||||||
|
<span data-slate-zero-width="z" data-slate-length={0}>
|
||||||
|
{'\uFEFF'}
|
||||||
|
</span>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// COMPAT: Browsers will collapse trailing new lines at the end of blocks,
|
// COMPAT: Browsers will collapse trailing new lines at the end of blocks,
|
||||||
|
@@ -21,7 +21,10 @@ function findDOMPoint(point, win = window) {
|
|||||||
|
|
||||||
for (const text of texts) {
|
for (const text of texts) {
|
||||||
const node = text.childNodes[0]
|
const node = text.childNodes[0]
|
||||||
const { length } = node.textContent
|
const length = text.hasAttribute('data-slate-length')
|
||||||
|
? parseInt(text.getAttribute('data-slate-length'), 10)
|
||||||
|
: node.textContent.length
|
||||||
|
|
||||||
const end = start + length
|
const end = start + length
|
||||||
|
|
||||||
if (point.offset <= end) {
|
if (point.offset <= end) {
|
||||||
|
@@ -63,7 +63,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -71,7 +71,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -82,7 +82,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -90,7 +90,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -59,7 +59,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -67,7 +67,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -78,7 +78,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -86,7 +86,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -59,7 +59,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -67,7 +67,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -78,7 +78,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -86,7 +86,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -46,7 +46,7 @@ export const output = `
|
|||||||
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<div data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -45,7 +45,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<a href="https://google.com">
|
<a href="https://google.com">
|
||||||
@@ -57,7 +57,7 @@ export const output = `
|
|||||||
</a>
|
</a>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<a href="https://google.com">
|
<a href="https://google.com">
|
||||||
@@ -69,7 +69,7 @@ export const output = `
|
|||||||
</a>
|
</a>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<a href="https://google.com">
|
<a href="https://google.com">
|
||||||
@@ -81,7 +81,7 @@ export const output = `
|
|||||||
</a>
|
</a>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -46,14 +46,14 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span data-slate-void="true" contenteditable="false">
|
<span data-slate-void="true" contenteditable="false">
|
||||||
<span data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
<span data-slate-spacer="true" style="height:0;color:transparent;outline:none;position:absolute">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -63,7 +63,7 @@ export const output = `
|
|||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -41,7 +41,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<a href="https://google.com">
|
<a href="https://google.com">
|
||||||
@@ -53,7 +53,7 @@ export const output = `
|
|||||||
</a>
|
</a>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -21,7 +21,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span style="position:relative">
|
<span style="position:relative">
|
||||||
@@ -33,7 +33,7 @@ export const output = `
|
|||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -19,7 +19,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -45,7 +45,7 @@ export const output = `
|
|||||||
<div style="position:relative">
|
<div style="position:relative">
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="z"></span>
|
<span data-slate-zero-width="z" data-slate-length="0"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span data-slate-void="true">
|
<span data-slate-void="true">
|
||||||
@@ -55,7 +55,7 @@ export const output = `
|
|||||||
</span>
|
</span>
|
||||||
<span>
|
<span>
|
||||||
<span data-slate-leaf="true">
|
<span data-slate-leaf="true">
|
||||||
<span data-slate-zero-width="n"><br /></span>
|
<span data-slate-zero-width="n" data-slate-length="0"><br /></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user