if(e.which === KEYS.ENTER) {
e.preventDefault();
- var cursor = canvas.getCursor();
+ var cursor = canvas.getCursor(),
+ position = cursor.getPosition(),
+ element = position.element;
+
if(!cursor.isSelecting()) {
- var position = cursor.getPosition(),
- element = position.element;
+ if(e.ctrlKey) {
+ var added = element.after({tag: 'block'});
+ added.append({text:''});
+ canvas.setCurrentElement(added, {caretTo: 'start'});
- if(!(element.parent().parent())) {
- return false; // top level element is unsplittable
- }
+ } else {
- var elements = position.element.split({offset: position.offset}),
- newEmpty,
- goto;
+ if(!(element.parent().parent())) {
+ return false; // top level element is unsplittable
+ }
+
+ var elements = position.element.split({offset: position.offset}),
+ newEmpty,
+ goto,
+ gotoOptions;
- if(position.offsetAtBeginning)
- newEmpty = elements.first;
- else if(position.offsetAtEnd)
- newEmpty = elements.second;
- if(newEmpty) {
- goto = newEmpty.append(documentElement.DocumentTextElement.create({text: ''}, this));
- canvas.setCurrentElement(goto);
+ if(position.offsetAtBeginning)
+ newEmpty = elements.first;
+ else if(position.offsetAtEnd)
+ newEmpty = elements.second;
+
+ if(newEmpty) {
+ goto = newEmpty.append(documentElement.DocumentTextElement.create({text: ''}, this));
+ gotoOptions = {};
+ } else {
+ goto = elements.second;
+ gotoOptions = {caretTo: 'start'};
+ }
+
+ canvas.setCurrentElement(goto, gotoOptions);
}
}
}
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
- if(documentElement.DocumentTextElement.isContentContainer(mutation.target) && mutation.target.data === '')
- mutation.target.data = utils.unicode.ZWS;
+ if(documentElement.DocumentTextElement.isContentContainer(mutation.target)) {
+ if(mutation.target.data === '')
+ mutation.target.data = utils.unicode.ZWS;
+ canvas.publisher('contentChanged');
+ }
});
});
var config = { attributes: false, childList: false, characterData: true, subtree: true, characterDataOldValue: true};
var toret;
if(parent.is('list')) {
- listElement.wrapWithNodeElement({tag: 'div', klass: 'item'});
+ var item = listElement.wrapWithNodeElement({tag: 'div', klass: 'item'});
+ item.exec('toggleBullet', false);
toret = listElement.parent();
} else {
toret = listElement;