position = cursor.getPosition(),
element = position.element;
+ if(Object.keys(cursor.getPosition()).length === 0) {
+ var currentElement = canvas.getCurrentNodeElement();
+ if(currentElement) {
+ var added = currentElement.data('wlxmlNode').after({
+ tag: currentElement.getWlxmlTag() || 'div',
+ attrs: {'class': currentElement.getWlxmlClass() || 'p'}
+ });
+ added.append({text:''});
+ canvas.setCurrentElement(utils.findCanvasElement(added), {caretTo: 'start'});
+ }
+ return;
+ }
+
if(!cursor.isSelecting()) {
if(event.ctrlKey) {
- var added = element.after({tag: element.getWlxmlTag() || 'div', klass: element.getWlxmlClass() || 'p'});
- added.append({text:''});
- canvas.setCurrentElement(added, {caretTo: 'start'});
+ if(element instanceof documentElement.DocumentTextElement) {
+ element = element.parent();
+ }
+ var added = element.data('wlxmlNode').after(
+ {tagName: element.getWlxmlTag() || 'div', attrs: {'class': element.getWlxmlClass() || 'p'}}
+ );
+ added.append({text: ''});
+ canvas.setCurrentElement(utils.findCanvasElement(added), {caretTo: 'start'});
} else {
return false; // top level element is unsplittable
}
- var elements = position.element.split({offset: position.offset}),
+ var nodes = position.element.data('wlxmlNode').split({offset: position.offset}),
newEmpty,
goto,
gotoOptions;
if(position.offsetAtBeginning)
- newEmpty = elements.first;
+ newEmpty = nodes.first;
else if(position.offsetAtEnd)
- newEmpty = elements.second;
+ newEmpty = nodes.second;
if(newEmpty) {
- goto = newEmpty.append(documentElement.DocumentTextElement.create({text: ''}, this));
+ goto = newEmpty.append({text: ''});
gotoOptions = {};
} else {
- goto = elements.second;
+ goto = nodes.second;
gotoOptions = {caretTo: 'start'};
}
- canvas.setCurrentElement(goto, gotoOptions);
+ canvas.setCurrentElement(utils.findCanvasElement(goto), gotoOptions);
}
}
}
goto;
if(parent.children().length === 1 && parent.children()[0].sameNode(element)) {
if(grandParent && grandParent.children().length === 1) {
- goto = grandParent.append({text: ''});
+ goto = grandParent.data('wlxmlNode').append({text: ''});
} else {
goto = element.getNearestTextElement(direction);
}
- parent.detach();
+ parent.data('wlxmlNode').detach();
} else {
goto = element.getNearestTextElement(direction);
- element.detach();
+ element.data('wlxmlNode').detach();
}
canvas.setCurrentElement(goto, {caretTo: caretTo});
canvas.publisher('contentChanged');