mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-09-03 12:12:39 +02:00
fix setMarkByKey by adding tests, closes #319
This commit is contained in:
@@ -287,14 +287,14 @@ class Text extends new Record(DEFAULTS) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
updateMark(index, length, mark, properties) {
|
updateMark(index, length, mark, properties) {
|
||||||
|
const m = mark.merge(properties)
|
||||||
const characters = this.characters.map((char, i) => {
|
const characters = this.characters.map((char, i) => {
|
||||||
if (i < index) return char
|
if (i < index) return char
|
||||||
if (i >= index + length) return char
|
if (i >= index + length) return char
|
||||||
let { marks } = char
|
let { marks } = char
|
||||||
const j = marks.indexOf(mark)
|
if (!marks.has(mark)) return char
|
||||||
let m = marks.get(j)
|
marks = marks.remove(mark)
|
||||||
m = m.merge(properties)
|
marks = marks.add(m)
|
||||||
marks = marks.set(j, m)
|
|
||||||
char = char.merge({ marks })
|
char = char.merge({ marks })
|
||||||
return char
|
return char
|
||||||
})
|
})
|
||||||
|
@@ -245,6 +245,7 @@ function setMark(state, operation) {
|
|||||||
let { document } = state
|
let { document } = state
|
||||||
let node = document.assertPath(path)
|
let node = document.assertPath(path)
|
||||||
node = node.updateMark(offset, length, mark, properties)
|
node = node.updateMark(offset, length, mark, properties)
|
||||||
|
debugger
|
||||||
document = document.updateDescendant(node)
|
document = document.updateDescendant(node)
|
||||||
state = state.merge({ document })
|
state = state.merge({ document })
|
||||||
return state
|
return state
|
||||||
|
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
export default function (state) {
|
||||||
|
const { document, selection } = state
|
||||||
|
const first = document.getTexts().first()
|
||||||
|
|
||||||
|
return state
|
||||||
|
.transform()
|
||||||
|
.setMarkByKey(
|
||||||
|
first.key,
|
||||||
|
0,
|
||||||
|
first.length,
|
||||||
|
{
|
||||||
|
type: 'bold',
|
||||||
|
data: { key: true }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: { key: false }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.apply()
|
||||||
|
}
|
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
nodes:
|
||||||
|
- kind: block
|
||||||
|
type: paragraph
|
||||||
|
nodes:
|
||||||
|
- kind: text
|
||||||
|
ranges:
|
||||||
|
- text: word
|
||||||
|
marks:
|
||||||
|
- type: bold
|
||||||
|
data:
|
||||||
|
key: true
|
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
nodes:
|
||||||
|
- kind: block
|
||||||
|
type: paragraph
|
||||||
|
nodes:
|
||||||
|
- kind: text
|
||||||
|
ranges:
|
||||||
|
- text: word
|
||||||
|
marks:
|
||||||
|
- type: bold
|
||||||
|
data:
|
||||||
|
key: false
|
Reference in New Issue
Block a user