Problem: some standard copy paste formats do not work
All checks were successful
continuous-integration/drone/push Build is passing

Solution: add solution for copying text from Roam. This formats looks
like:
    - parent
        - child 1
        - child 2

The first line starts with a dash and space. The other lines also start
with spaces (multiple of 4 or 0), dash, space. Every 4 spaces is 1
indent in our format.
This commit is contained in:
Peter Stuifzand 2022-01-12 22:45:46 +01:00
parent 2ed65e417f
commit e4539b520c

View File

@ -523,22 +523,42 @@ function editor(root, inputData, options) {
trigger('change')
return false
} catch (e) {
let items = pastedData.toString().split(/\n+/);
let item = $(this).parents('.list-item')
let id = item.attr('data-id')
if (items.length === 1) {
return true
} else {
let inputString = pastedData.toString()
if (inputString.match(/^- /)) {
let item = $(this).parents('.list-item')
let id = item.attr('data-id')
let lines = inputString.split(/( *)- /)
lines.shift()
const firstItem = store.value(id)
items = _.map(items, text => {
const item = newListItem(firstItem.indented)
item.text = text
const firstIndent = firstItem.indented
let items = _.map(_.chunk(lines, 2), line => {
const indent = Math.trunc(line[0].length / 4);
const item = newListItem(firstItem.indented+indent)
item.text = _.trimEnd(line[1]).replace(/\n/g, " \n")
return item
})
store.insertAfter(id, ...items)
trigger('change')
return false
} else {
let items = inputString.split(/\n+/);
let item = $(this).parents('.list-item')
let id = item.attr('data-id')
if (items.length === 1) {
return true
} else {
const firstItem = store.value(id)
items = _.map(items, text => {
const item = newListItem(firstItem.indented)
item.text = text
return item
})
store.insertAfter(id, ...items)
trigger('change')
}
return false
}
return false
}
});