+
+ this.wrapper.on('keydown', function(e) {
+ if(e.which >= 37 && e.which <= 40) {
+ var position = canvas.getCursor().getPosition(),
+ element = position.element;
+ if(element && (element instanceof documentElement.DocumentTextElement)) {
+ if(element.isEmpty()) {
+ var direction, caretTo;
+ if(e.which === KEYS.ARROW_LEFT || e.which === KEYS.ARROW_UP) {
+ direction = 'above';
+ caretTo = 'end';
+ } else {
+ direction = 'below';
+ caretTo = 'start';
+ }
+ var el = canvas.getDocumentElement(utils.nearestInDocumentOrder('[document-text-element]', direction, window.getSelection().focusNode))
+ canvas.setCurrentElement(element, {caretTo: caretTo});
+ } else {
+ var txt = element.dom().contents()[0].data;
+ if(e.which === KEYS.ARROW_LEFT && position.offset > 1 && txt.charAt(position.offset-2) === utils.unicode.ZWS) {
+ e.preventDefault();
+ canvas._moveCaretToTextElement(element, position.offset-2);
+ }
+ if(e.which === KEYS.ARROW_RIGHT && position.offset < txt.length - 1 && txt.charAt(position.offset+1) === utils.unicode.ZWS) {
+ e.preventDefault();
+ canvas._moveCaretToTextElement(element, position.offset+2);
+ }
+ }
+ }
+