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
    let 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();
    let 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 ( ) ; let 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';