function BlockMirrorBlockEditor(blockMirror) {
  this.blockMirror = blockMirror;
  this.blockContainer = blockMirror.tags.blockContainer;
  this.blockEditor = blockMirror.tags.blockEditor;
  this.blockArea = blockMirror.tags.blockArea; // Null, or the source of the last update

  this.outOfDate_ = null; // Have to call BEFORE we inject, or Blockly will delete the css string!

  this.loadBlocklyCSS(); // Inject Blockly

  var blocklyOptions = {
    media: blockMirror.configuration.blocklyMediaPath,
    // We use special comment blocks
    zoom: {
      controls: true
    },
    comments: false,
    disable: false,
    oneBasedIndex: false,
    readOnly: blockMirror.configuration.readOnly,
    scrollbars: true,
    toolbox: this.makeToolbox()
  };
  this.workspace = Blockly.inject(blockMirror.tags.blockEditor, blocklyOptions); // Configure Blockly

  this.workspace.addChangeListener(this.changed.bind(this)); // Configure Blockly DIV
  //blockMirror.tags.blockEditor.style.resize = 'horizontal';

  this.blockContainer.style["float"] = 'left';
  this.blockEditor.style.position = 'absolute';
  this.blockEditor.style.width = '100%';
  this.blockArea.style.height = blockMirror.configuration.height + "px";
  this.readOnlyDiv_ = null;
  window.addEventListener('resize', this.resized.bind(this), false);
  this.resized();
}
/**
 * Worth noting - Blockly uses a setTimeOut of 0 steps to make events
 * wait. That has some confusing interaction with trying to make things percolate.
 * @param blockMirror
 * @constructor
 */
Worth noting - Blockly uses a setTimeOut of 0 steps to make events
wait. That has some confusing interaction with trying to make things percolate.
@param blockMirror
@constructor
Worth noting - Blockly uses a setTimeOut of 0 steps to make events wait . That has some confusing interaction with trying to make things percolate . @param blockMirror @constructor
function BlockMirrorBlockEditor(blockMirror) {
  this.blockMirror = blockMirror;
  this.blockContainer = blockMirror.tags.blockContainer;
  this.blockEditor = blockMirror.tags.blockEditor;
  this.blockArea = blockMirror.tags.blockArea; 
  this.outOfDate_ = null; 
  this.loadBlocklyCSS(); 
  var blocklyOptions = {
    media: blockMirror.configuration.blocklyMediaPath,
    zoom: {
      controls: true
    },
    comments: false,
    disable: false,
    oneBasedIndex: false,
    readOnly: blockMirror.configuration.readOnly,
    scrollbars: true,
    toolbox: this.makeToolbox()
  };
  this.workspace = Blockly.inject(blockMirror.tags.blockEditor, blocklyOptions); 
  this.workspace.addChangeListener(this.changed.bind(this));  DIV
  this.blockContainer.style["float"] = 'left';
  this.blockEditor.style.position = 'absolute';
  this.blockEditor.style.width = '100%';
  this.blockArea.style.height = blockMirror.configuration.height + "px";
  this.readOnlyDiv_ = null;
  window.addEventListener('resize', this.resized.bind(this), false);
  this.resized();
}
function BlockMirrorBlockEditor ( blockMirror ) { this . blockMirror = blockMirror ; this . blockContainer = blockMirror . tags . blockContainer ; this . blockEditor = blockMirror . tags . blockEditor ; this . blockArea = blockMirror . tags . blockArea ; this . outOfDate_ = null ; this . loadBlocklyCSS ( ) ; var blocklyOptions = { media : blockMirror . configuration . blocklyMediaPath , zoom : { controls : true } , comments : false , disable : false , oneBasedIndex : false , readOnly : blockMirror . configuration . readOnly , scrollbars : true , toolbox : this . makeToolbox ( ) } ; this . workspace = Blockly . inject ( blockMirror . tags . blockEditor , blocklyOptions ) ; this . workspace . addChangeListener ( this . changed . bind ( this ) ) ; this . blockContainer . style [ "float" ] = 'left' ; this . blockEditor . style . position = 'absolute' ; this . blockEditor . style . width = '100%' ; this . blockArea . style . height = blockMirror . configuration . height + "px" ; this . readOnlyDiv_ = null ; window . addEventListener ( 'resize' , this . resized . bind ( this ) , false ) ; this . resized ( ) ; }
Worth noting - Blockly uses a setTimeOut of 0 steps to make events
 wait.
Worth noting - Blockly uses a setTimeOut of 0 steps to make events wait .
// Null, or the source of the last update // Have to call BEFORE we inject, or Blockly will delete the css string! // Inject Blockly // We use special comment blocks // Configure Blockly // Configure Blockly DIV //blockMirror.tags.blockEditor.style.resize = 'horizontal';