1 // Module that implements main WYSIWIG edit area
 
  10 'libs/text!./template.html'], function(_, transformations, Canvas, CanvasManager, canvas3, commands, template) {
 
  14 return function(sandbox) {
 
  16     var canvas = canvas3.fromXML('', sandbox.publish); //canvasCanvas.create();
 
  18     var canvasWrapper = $(template);
 
  19     var shownAlready = false;
 
  20     var scrollbarPosition = 0,
 
  23     canvasWrapper.onShow = function() {
 
  26             canvas.setCurrentElement(canvas.doc().getVerticallyFirstTextElement());
 
  28             canvas.setCursorPosition(cursorPosition);
 
  29             this.find('#rng-module-documentCanvas-contentWrapper').scrollTop(scrollbarPosition);
 
  33     canvasWrapper.onHide = function() {
 
  34        scrollbarPosition = this.find('#rng-module-documentCanvas-contentWrapper').scrollTop();
 
  35        cursorPosition = canvas.getCursor().getPosition();
 
  40         start: function() { sandbox.publish('ready'); },
 
  44         setDocument: function(xml) {
 
  45             canvas.loadWlxml(xml); //canvas.setHTML(transformations.fromXML.getHTMLTree(xml));
 
  46             canvasWrapper.find('#rng-module-documentCanvas-content').empty().append(canvas.view());
 
  47             manager = new CanvasManager(canvas, sandbox);
 
  48             sandbox.publish('documentSet');
 
  50         getDocument: function() {
 
  51             return canvas.toXML();
 
  53         modifyCurrentNodeElement: function(attr, value) {
 
  54             var currentNodeElement = canvas.getCurrentNodeElement();
 
  55             if(attr === 'class' || attr === 'tag') {
 
  56                 currentNodeElement['setWlxml'+(attr[0].toUpperCase() + attr.substring(1))](value);
 
  58                 currentNodeElement.setWlxmlMetaAttr(attr, value);
 
  60             sandbox.publish('currentNodeElementChanged', currentNodeElement);
 
  62         highlightElement: function(element) {
 
  63             canvas.highlightElement(element);
 
  65         dimElement: function(element) {
 
  66             canvas.dimElement(element);
 
  68         jumpToElement: function(element) {
 
  69             canvas.setCurrentElement(element);
 
  71         command: function(command, params) {
 
  72             commands.run(command, params, canvas);
 
  73             sandbox.publish('contentChanged');