gobstones-blockly 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b47ed0e304185189a1d5b7cc25dad46e9a707f19649d960f55f0452a62dbdcea
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 9232a10f5c19d707017564980654612b72aab401a18ef65da60db1b319fb4418
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 902cd68bd2423da9b2d4ed38d5d4363199a5b972985cd8ae75ad516600340b96c5b262c79cdbf727152dde76658b505963df3d3416b28d373ff01dd63bc5dd3a
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f0c245a9c0a010389705cd1f1cf26ae4fe3c608fdd717658c8d16f23f00951d613c5f9d4f6796fc68239c16ae405a8b32c9ded89dcbee3e22e79cd101b13b1f0
         
     | 
| 
         @@ -81,6 +81,7 @@ Example: 
     | 
|
| 
       81 
81 
     | 
    
         
             
                      <block type="OperadorLogico"></block>
         
     | 
| 
       82 
82 
     | 
    
         
             
                      <block type="not"></block>
         
     | 
| 
       83 
83 
     | 
    
         
             
                      <block type="OperadoresDeEnumeracion"></block>
         
     | 
| 
      
 84 
     | 
    
         
            +
                      <block type="AlternativaEnExpresiones"></block>
         
     | 
| 
       84 
85 
     | 
    
         
             
                    </category>
         
     | 
| 
       85 
86 
     | 
    
         
             
                  </category>
         
     | 
| 
       86 
87 
     | 
    
         
             
                  <category name="Definiciones">
         
     | 
| 
         @@ -4235,7 +4236,7 @@ Blockly.createBlockSvg = function(workspace, name, f) { 
     | 
|
| 
       4235 
4236 
     | 
    
         
             
              newBlock.render();
         
     | 
| 
       4236 
4237 
     | 
    
         
             
            };
         
     | 
| 
       4237 
4238 
     | 
    
         | 
| 
       4238 
     | 
    
         
            -
            const createVariable = (parent, name) => {
         
     | 
| 
      
 4239 
     | 
    
         
            +
            const createVariable = (parent, name, callback = () => {}) => {
         
     | 
| 
       4239 
4240 
     | 
    
         
             
              const workspace = parent.workspace;
         
     | 
| 
       4240 
4241 
     | 
    
         
             
              Blockly.createBlockSvg(workspace, 'variables_get', b => {
         
     | 
| 
       4241 
4242 
     | 
    
         
             
                ATOMICALLY(() => {
         
     | 
| 
         @@ -4243,6 +4244,7 @@ const createVariable = (parent, name) => { 
     | 
|
| 
       4243 
4244 
     | 
    
         
             
                  const posParent = parent.getRelativeToSurfaceXY();
         
     | 
| 
       4244 
4245 
     | 
    
         
             
                  const pos = b.getRelativeToSurfaceXY();
         
     | 
| 
       4245 
4246 
     | 
    
         
             
                  b.moveBy(posParent.x - pos.x + parent.width + 16, posParent.y - pos.y + b.height + 6);
         
     | 
| 
      
 4247 
     | 
    
         
            +
                  callback(b);
         
     | 
| 
       4246 
4248 
     | 
    
         
             
                });
         
     | 
| 
       4247 
4249 
     | 
    
         
             
              });
         
     | 
| 
       4248 
4250 
     | 
    
         
             
            }
         
     | 
| 
         @@ -4369,7 +4371,7 @@ Blockly.Blocks.InteractiveProgram = { 
     | 
|
| 
       4369 
4371 
     | 
    
         
             
                  getLocalMediaUrl(this, icon),
         
     | 
| 
       4370 
4372 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       4371 
4373 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       4372 
     | 
    
         
            -
                  " 
     | 
| 
      
 4374 
     | 
    
         
            +
                  "",
         
     | 
| 
       4373 
4375 
     | 
    
         
             
                  function() {
         
     | 
| 
       4374 
4376 
     | 
    
         
             
                    this.$init = false;
         
     | 
| 
       4375 
4377 
     | 
    
         
             
                    this.removeInput("initlabel");
         
     | 
| 
         @@ -4378,6 +4380,7 @@ Blockly.Blocks.InteractiveProgram = { 
     | 
|
| 
       4378 
4380 
     | 
    
         
             
                    triggerRefresh(this);
         
     | 
| 
       4379 
4381 
     | 
    
         
             
                  }.bind(this)
         
     | 
| 
       4380 
4382 
     | 
    
         
             
                );
         
     | 
| 
      
 4383 
     | 
    
         
            +
                setTimeout(() => { removeButton.setTooltip("Eliminar"); });
         
     | 
| 
       4381 
4384 
     | 
    
         | 
| 
       4382 
4385 
     | 
    
         
             
                this.appendDummyInput("initlabel").appendField('Al inicializar:').appendField(removeButton);
         
     | 
| 
       4383 
4386 
     | 
    
         
             
                this.appendStatementInput('init').setCheck(["Statement"]);
         
     | 
| 
         @@ -4396,7 +4399,7 @@ Blockly.Blocks.InteractiveProgram = { 
     | 
|
| 
       4396 
4399 
     | 
    
         
             
                  getLocalMediaUrl(this, icon),
         
     | 
| 
       4397 
4400 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       4398 
4401 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       4399 
     | 
    
         
            -
                  " 
     | 
| 
      
 4402 
     | 
    
         
            +
                  "",
         
     | 
| 
       4400 
4403 
     | 
    
         
             
                  function() {
         
     | 
| 
       4401 
4404 
     | 
    
         
             
                    this.$timeout = undefined;
         
     | 
| 
       4402 
4405 
     | 
    
         
             
                    this.removeInput("timeoutlabel");
         
     | 
| 
         @@ -4404,6 +4407,7 @@ Blockly.Blocks.InteractiveProgram = { 
     | 
|
| 
       4404 
4407 
     | 
    
         
             
                    triggerRefresh(this);
         
     | 
| 
       4405 
4408 
     | 
    
         
             
                  }.bind(this)
         
     | 
| 
       4406 
4409 
     | 
    
         
             
                );
         
     | 
| 
      
 4410 
     | 
    
         
            +
                setTimeout(() => { removeButton.setTooltip("Eliminar"); });
         
     | 
| 
       4407 
4411 
     | 
    
         | 
| 
       4408 
4412 
     | 
    
         
             
                this.appendDummyInput("timeoutlabel").appendField(`Al estar inactivo ${timeout} milisegundos:`).appendField(removeButton);
         
     | 
| 
       4409 
4413 
     | 
    
         
             
                this.appendStatementInput('timeout').setCheck(["Statement"]);
         
     | 
| 
         @@ -4478,27 +4482,32 @@ createInteractiveBinding = (name, keys) => { 
     | 
|
| 
       4478 
4482 
     | 
    
         
             
                  const input = this.inputList[0];
         
     | 
| 
       4479 
4483 
     | 
    
         
             
                  const plusIcon = "plus.png";
         
     | 
| 
       4480 
4484 
     | 
    
         
             
                  const cleanIcon = "clean.png";
         
     | 
| 
       4481 
     | 
    
         
            -
                   
     | 
| 
      
 4485 
     | 
    
         
            +
                  const addModifier = new Blockly.FieldImage(
         
     | 
| 
       4482 
4486 
     | 
    
         
             
                    getLocalMediaUrl(this, plusIcon),
         
     | 
| 
       4483 
4487 
     | 
    
         
             
                    getLocalMediaSize(plusIcon),
         
     | 
| 
       4484 
4488 
     | 
    
         
             
                    getLocalMediaSize(plusIcon),
         
     | 
| 
       4485 
     | 
    
         
            -
                    " 
     | 
| 
      
 4489 
     | 
    
         
            +
                    "",
         
     | 
| 
       4486 
4490 
     | 
    
         
             
                    function() {
         
     | 
| 
       4487 
4491 
     | 
    
         
             
                      const modifiersCount = getModifierFields(self).length / 2;
         
     | 
| 
       4488 
4492 
     | 
    
         
             
                      if (modifiersCount >= modifiers.length) return;
         
     | 
| 
       4489 
4493 
     | 
    
         | 
| 
       4490 
4494 
     | 
    
         
             
                      self._addModifier();
         
     | 
| 
       4491 
4495 
     | 
    
         
             
                    }
         
     | 
| 
       4492 
     | 
    
         
            -
                  ) 
     | 
| 
       4493 
     | 
    
         
            -
                   
     | 
| 
      
 4496 
     | 
    
         
            +
                  );
         
     | 
| 
      
 4497 
     | 
    
         
            +
                  setTimeout(() => { addModifier.setTooltip("Agregar modificador"); });
         
     | 
| 
      
 4498 
     | 
    
         
            +
                  input.appendField(addModifier);
         
     | 
| 
      
 4499 
     | 
    
         
            +
             
     | 
| 
      
 4500 
     | 
    
         
            +
                  const cleanModifiers = new Blockly.FieldImage(
         
     | 
| 
       4494 
4501 
     | 
    
         
             
                    getLocalMediaUrl(this, cleanIcon),
         
     | 
| 
       4495 
4502 
     | 
    
         
             
                    getLocalMediaSize(cleanIcon),
         
     | 
| 
       4496 
4503 
     | 
    
         
             
                    getLocalMediaSize(cleanIcon),
         
     | 
| 
       4497 
     | 
    
         
            -
                    " 
     | 
| 
      
 4504 
     | 
    
         
            +
                    "",
         
     | 
| 
       4498 
4505 
     | 
    
         
             
                    function() {
         
     | 
| 
       4499 
4506 
     | 
    
         
             
                      self._cleanModifiers();
         
     | 
| 
       4500 
4507 
     | 
    
         
             
                    }
         
     | 
| 
       4501 
     | 
    
         
            -
                  ) 
     | 
| 
      
 4508 
     | 
    
         
            +
                  );
         
     | 
| 
      
 4509 
     | 
    
         
            +
                  setTimeout(() => { addModifier.setTooltip("Limpiar modificadores"); });
         
     | 
| 
      
 4510 
     | 
    
         
            +
                  input.appendField(cleanModifiers);
         
     | 
| 
       4502 
4511 
     | 
    
         
             
                },
         
     | 
| 
       4503 
4512 
     | 
    
         | 
| 
       4504 
4513 
     | 
    
         
             
                customContextMenu: function(options) {
         
     | 
| 
         @@ -5113,11 +5122,13 @@ Blockly.Blocks.List = { 
     | 
|
| 
       5113 
5122 
     | 
    
         
             
                  getLocalMediaUrl(this, icon),
         
     | 
| 
       5114 
5123 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       5115 
5124 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       5116 
     | 
    
         
            -
                  " 
     | 
| 
      
 5125 
     | 
    
         
            +
                  "",
         
     | 
| 
       5117 
5126 
     | 
    
         
             
                  function() {
         
     | 
| 
       5118 
5127 
     | 
    
         
             
                    this._addElement();
         
     | 
| 
       5119 
5128 
     | 
    
         
             
                  }.bind(this)
         
     | 
| 
       5120 
5129 
     | 
    
         
             
                );
         
     | 
| 
      
 5130 
     | 
    
         
            +
                setTimeout(() => { addButton.setTooltip("Agregar elemento"); });
         
     | 
| 
      
 5131 
     | 
    
         
            +
             
     | 
| 
       5121 
5132 
     | 
    
         
             
                const input = this.appendDummyInput();
         
     | 
| 
       5122 
5133 
     | 
    
         
             
                input.appendField(addButton);
         
     | 
| 
       5123 
5134 
     | 
    
         
             
                input.name = "addButton";
         
     | 
| 
         @@ -5138,11 +5149,137 @@ Blockly.Blocks.List = { 
     | 
|
| 
       5138 
5149 
     | 
    
         
             
                  getLocalMediaUrl(this, icon),
         
     | 
| 
       5139 
5150 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       5140 
5151 
     | 
    
         
             
                  getLocalMediaSize(icon),
         
     | 
| 
       5141 
     | 
    
         
            -
                  " 
     | 
| 
      
 5152 
     | 
    
         
            +
                  "",
         
     | 
| 
       5142 
5153 
     | 
    
         
             
                  function() {
         
     | 
| 
       5143 
5154 
     | 
    
         
             
                    this._removeElement(input);
         
     | 
| 
       5144 
5155 
     | 
    
         
             
                  }.bind(this)
         
     | 
| 
       5145 
5156 
     | 
    
         
             
                );
         
     | 
| 
      
 5157 
     | 
    
         
            +
                setTimeout(() => { removeButton.setTooltip("Quitar elemento"); });
         
     | 
| 
      
 5158 
     | 
    
         
            +
                input.appendField(removeButton);
         
     | 
| 
      
 5159 
     | 
    
         
            +
              }
         
     | 
| 
      
 5160 
     | 
    
         
            +
            };
         
     | 
| 
      
 5161 
     | 
    
         
            +
             
     | 
| 
      
 5162 
     | 
    
         
            +
            Blockly.Blocks.AlternativaEnExpresiones = {
         
     | 
| 
      
 5163 
     | 
    
         
            +
              init: function () {
         
     | 
| 
      
 5164 
     | 
    
         
            +
                this.jsonInit({
         
     | 
| 
      
 5165 
     | 
    
         
            +
                  message0: "",
         
     | 
| 
      
 5166 
     | 
    
         
            +
                  args0: [],
         
     | 
| 
      
 5167 
     | 
    
         
            +
                  output: "*",
         
     | 
| 
      
 5168 
     | 
    
         
            +
                  colour: Blockly.CUSTOM_COLORS.AlternativaEnExpresiones || Blockly.CUSTOM_COLORS.operator,
         
     | 
| 
      
 5169 
     | 
    
         
            +
                  inputsInline: true
         
     | 
| 
      
 5170 
     | 
    
         
            +
                });
         
     | 
| 
      
 5171 
     | 
    
         
            +
                this.length = 0;
         
     | 
| 
      
 5172 
     | 
    
         
            +
             
     | 
| 
      
 5173 
     | 
    
         
            +
                this._addOtherwise();
         
     | 
| 
      
 5174 
     | 
    
         
            +
                this._addElement();
         
     | 
| 
      
 5175 
     | 
    
         
            +
              },
         
     | 
| 
      
 5176 
     | 
    
         
            +
             
     | 
| 
      
 5177 
     | 
    
         
            +
              mutationToDom: function() {
         
     | 
| 
      
 5178 
     | 
    
         
            +
                var container = document.createElement('mutation');
         
     | 
| 
      
 5179 
     | 
    
         
            +
                container.setAttribute('extrabranches', this.length - 1);
         
     | 
| 
      
 5180 
     | 
    
         
            +
                return container;
         
     | 
| 
      
 5181 
     | 
    
         
            +
              },
         
     | 
| 
      
 5182 
     | 
    
         
            +
             
     | 
| 
      
 5183 
     | 
    
         
            +
              domToMutation: function(xmlElement) {
         
     | 
| 
      
 5184 
     | 
    
         
            +
                var extraBranches = parseInt(xmlElement.getAttribute('extrabranches')) || 0;
         
     | 
| 
      
 5185 
     | 
    
         
            +
                for (let i = 0; i < extraBranches; i++) this._addElement();
         
     | 
| 
      
 5186 
     | 
    
         
            +
              },
         
     | 
| 
      
 5187 
     | 
    
         
            +
             
     | 
| 
      
 5188 
     | 
    
         
            +
              _addElement: function() {
         
     | 
| 
      
 5189 
     | 
    
         
            +
                this.length++;
         
     | 
| 
      
 5190 
     | 
    
         
            +
                this._removeOtherwise();
         
     | 
| 
      
 5191 
     | 
    
         
            +
                this._removeAddButton();
         
     | 
| 
      
 5192 
     | 
    
         
            +
             
     | 
| 
      
 5193 
     | 
    
         
            +
                if (this.length > 1) this._addNewline("newline" + this.length);
         
     | 
| 
      
 5194 
     | 
    
         
            +
                this.appendDummyInput().appendField('elegir').name = "label1" + this.length;
         
     | 
| 
      
 5195 
     | 
    
         
            +
                const input1 = this.appendValueInput('element' + this.length);
         
     | 
| 
      
 5196 
     | 
    
         
            +
                this.appendDummyInput().appendField('cuando').name = "label2" + this.length;
         
     | 
| 
      
 5197 
     | 
    
         
            +
                const input2 = this.appendValueInput('condition' + this.length);
         
     | 
| 
      
 5198 
     | 
    
         
            +
             
     | 
| 
      
 5199 
     | 
    
         
            +
                if (this.length > 1) this._addRemoveButtonFor(this.length, input2);
         
     | 
| 
      
 5200 
     | 
    
         
            +
                this._addAddButton();
         
     | 
| 
      
 5201 
     | 
    
         
            +
                this._addOtherwise();
         
     | 
| 
      
 5202 
     | 
    
         
            +
                triggerRefresh(this);
         
     | 
| 
      
 5203 
     | 
    
         
            +
              },
         
     | 
| 
      
 5204 
     | 
    
         
            +
             
     | 
| 
      
 5205 
     | 
    
         
            +
              _removeElement: function(n) {
         
     | 
| 
      
 5206 
     | 
    
         
            +
                const isLastBranch = this.length === 2;
         
     | 
| 
      
 5207 
     | 
    
         
            +
             
     | 
| 
      
 5208 
     | 
    
         
            +
                const elements = ["newline", "label1", "element", "label2", "condition"];
         
     | 
| 
      
 5209 
     | 
    
         
            +
                elements.forEach((element) => this.removeInput(element + n));
         
     | 
| 
      
 5210 
     | 
    
         
            +
                this.length--;
         
     | 
| 
      
 5211 
     | 
    
         
            +
             
     | 
| 
      
 5212 
     | 
    
         
            +
                let id;
         
     | 
| 
      
 5213 
     | 
    
         
            +
                elements.forEach((element) => {
         
     | 
| 
      
 5214 
     | 
    
         
            +
                  id = 1;
         
     | 
| 
      
 5215 
     | 
    
         
            +
                  for (let input of this.inputList) {
         
     | 
| 
      
 5216 
     | 
    
         
            +
                    if (input.name.startsWith(element)) {
         
     | 
| 
      
 5217 
     | 
    
         
            +
                      input.name = element + id;
         
     | 
| 
      
 5218 
     | 
    
         
            +
                      id++;
         
     | 
| 
      
 5219 
     | 
    
         
            +
                    }
         
     | 
| 
      
 5220 
     | 
    
         
            +
                  }
         
     | 
| 
      
 5221 
     | 
    
         
            +
                });
         
     | 
| 
      
 5222 
     | 
    
         
            +
             
     | 
| 
      
 5223 
     | 
    
         
            +
                if (isLastBranch) this.removeInput("newline1");
         
     | 
| 
      
 5224 
     | 
    
         
            +
             
     | 
| 
      
 5225 
     | 
    
         
            +
                triggerRefresh(this);
         
     | 
| 
      
 5226 
     | 
    
         
            +
              },
         
     | 
| 
      
 5227 
     | 
    
         
            +
             
     | 
| 
      
 5228 
     | 
    
         
            +
              _addAddButton: function() {
         
     | 
| 
      
 5229 
     | 
    
         
            +
                const icon = "plus.png";
         
     | 
| 
      
 5230 
     | 
    
         
            +
                var addButton = new Blockly.FieldImage(
         
     | 
| 
      
 5231 
     | 
    
         
            +
                  getLocalMediaUrl(this, icon),
         
     | 
| 
      
 5232 
     | 
    
         
            +
                  getLocalMediaSize(icon),
         
     | 
| 
      
 5233 
     | 
    
         
            +
                  getLocalMediaSize(icon),
         
     | 
| 
      
 5234 
     | 
    
         
            +
                  "",
         
     | 
| 
      
 5235 
     | 
    
         
            +
                  function() {
         
     | 
| 
      
 5236 
     | 
    
         
            +
                    this._addElement();
         
     | 
| 
      
 5237 
     | 
    
         
            +
                  }.bind(this)
         
     | 
| 
      
 5238 
     | 
    
         
            +
                );
         
     | 
| 
      
 5239 
     | 
    
         
            +
                setTimeout(() => { addButton.setTooltip("Agregar opción"); });
         
     | 
| 
      
 5240 
     | 
    
         
            +
             
     | 
| 
      
 5241 
     | 
    
         
            +
                const input = this.appendDummyInput();
         
     | 
| 
      
 5242 
     | 
    
         
            +
                input.appendField(addButton);
         
     | 
| 
      
 5243 
     | 
    
         
            +
                input.name = "addButton";
         
     | 
| 
      
 5244 
     | 
    
         
            +
              },
         
     | 
| 
      
 5245 
     | 
    
         
            +
             
     | 
| 
      
 5246 
     | 
    
         
            +
              _removeAddButton: function() {
         
     | 
| 
      
 5247 
     | 
    
         
            +
                this.removeInput("addButton")
         
     | 
| 
      
 5248 
     | 
    
         
            +
                this.removeInput("closingBracket");
         
     | 
| 
      
 5249 
     | 
    
         
            +
              },
         
     | 
| 
      
 5250 
     | 
    
         
            +
             
     | 
| 
      
 5251 
     | 
    
         
            +
              _addOtherwise: function() {
         
     | 
| 
      
 5252 
     | 
    
         
            +
                this._addNewline("otherwiseNewline");
         
     | 
| 
      
 5253 
     | 
    
         
            +
             
     | 
| 
      
 5254 
     | 
    
         
            +
                const textInput = this.appendDummyInput();
         
     | 
| 
      
 5255 
     | 
    
         
            +
                textInput.appendField("o si no");
         
     | 
| 
      
 5256 
     | 
    
         
            +
                textInput.name = "otherwiseText";
         
     | 
| 
      
 5257 
     | 
    
         
            +
             
     | 
| 
      
 5258 
     | 
    
         
            +
                this.appendValueInput("otherwise");
         
     | 
| 
      
 5259 
     | 
    
         
            +
              },
         
     | 
| 
      
 5260 
     | 
    
         
            +
             
     | 
| 
      
 5261 
     | 
    
         
            +
              _removeOtherwise: function() {
         
     | 
| 
      
 5262 
     | 
    
         
            +
                this.removeInput("otherwiseText");
         
     | 
| 
      
 5263 
     | 
    
         
            +
                this.removeInput("otherwise");
         
     | 
| 
      
 5264 
     | 
    
         
            +
                this.removeInput("otherwiseNewline");
         
     | 
| 
      
 5265 
     | 
    
         
            +
              },
         
     | 
| 
      
 5266 
     | 
    
         
            +
             
     | 
| 
      
 5267 
     | 
    
         
            +
              _addNewline: function(name) {
         
     | 
| 
      
 5268 
     | 
    
         
            +
                this.appendStatementInput(name).setCheck(["NEWLINE"]);
         
     | 
| 
      
 5269 
     | 
    
         
            +
              },
         
     | 
| 
      
 5270 
     | 
    
         
            +
             
     | 
| 
      
 5271 
     | 
    
         
            +
              _addRemoveButtonFor: function(n, input) {
         
     | 
| 
      
 5272 
     | 
    
         
            +
                const icon = "minus.png";
         
     | 
| 
      
 5273 
     | 
    
         
            +
                var removeButton = new Blockly.FieldImage(
         
     | 
| 
      
 5274 
     | 
    
         
            +
                  getLocalMediaUrl(this, icon),
         
     | 
| 
      
 5275 
     | 
    
         
            +
                  getLocalMediaSize(icon),
         
     | 
| 
      
 5276 
     | 
    
         
            +
                  getLocalMediaSize(icon),
         
     | 
| 
      
 5277 
     | 
    
         
            +
                  "",
         
     | 
| 
      
 5278 
     | 
    
         
            +
                  function() {
         
     | 
| 
      
 5279 
     | 
    
         
            +
                    this._removeElement(n);
         
     | 
| 
      
 5280 
     | 
    
         
            +
                  }.bind(this)
         
     | 
| 
      
 5281 
     | 
    
         
            +
                );
         
     | 
| 
      
 5282 
     | 
    
         
            +
                setTimeout(() => { removeButton.setTooltip("Quitar opción"); });
         
     | 
| 
       5146 
5283 
     | 
    
         
             
                input.appendField(removeButton);
         
     | 
| 
       5147 
5284 
     | 
    
         
             
              }
         
     | 
| 
       5148 
5285 
     | 
    
         
             
            };
         
     | 
| 
         @@ -5170,24 +5307,46 @@ Blockly.Blocks.ForEach = { 
     | 
|
| 
       5170 
5307 
     | 
    
         
             
                    ]
         
     | 
| 
       5171 
5308 
     | 
    
         
             
                });
         
     | 
| 
       5172 
5309 
     | 
    
         | 
| 
      
 5310 
     | 
    
         
            +
                var self = this;
         
     | 
| 
      
 5311 
     | 
    
         
            +
             
     | 
| 
      
 5312 
     | 
    
         
            +
                const nameField = this.getField("varName");
         
     | 
| 
      
 5313 
     | 
    
         
            +
                nameField.setValidator(function(name) {
         
     | 
| 
      
 5314 
     | 
    
         
            +
                  // Strip leading and trailing whitespace. Beyond this, all names are legal.
         
     | 
| 
      
 5315 
     | 
    
         
            +
                  name = name.replace(/^[\s\xa0]+|[\s\xa0]+$/g, '');
         
     | 
| 
      
 5316 
     | 
    
         
            +
             
     | 
| 
      
 5317 
     | 
    
         
            +
                  var oldName = this.text_;
         
     | 
| 
      
 5318 
     | 
    
         
            +
                  if (oldName != name) {
         
     | 
| 
      
 5319 
     | 
    
         
            +
                    // Rename any callers.
         
     | 
| 
      
 5320 
     | 
    
         
            +
                    var blocks = this.sourceBlock_.workspace.getAllBlocks(false);
         
     | 
| 
      
 5321 
     | 
    
         
            +
                    for (var i = 0; i < blocks.length; i++) {
         
     | 
| 
      
 5322 
     | 
    
         
            +
                      if (blocks[i].$parent === self.id) {
         
     | 
| 
      
 5323 
     | 
    
         
            +
                        blocks[i].setFieldValue(name, "VAR")
         
     | 
| 
      
 5324 
     | 
    
         
            +
                      }
         
     | 
| 
      
 5325 
     | 
    
         
            +
                    }
         
     | 
| 
      
 5326 
     | 
    
         
            +
                  }
         
     | 
| 
      
 5327 
     | 
    
         
            +
             
     | 
| 
      
 5328 
     | 
    
         
            +
                  return name;
         
     | 
| 
      
 5329 
     | 
    
         
            +
                });
         
     | 
| 
      
 5330 
     | 
    
         
            +
             
     | 
| 
       5173 
5331 
     | 
    
         
             
                this.setColour(Blockly.CUSTOM_COLORS.ForEach || Blockly.CUSTOM_COLORS.controlStructure);
         
     | 
| 
       5174 
5332 
     | 
    
         
             
                this.appendValueInput('list');
         
     | 
| 
       5175 
5333 
     | 
    
         
             
                this.appendStatementInput('block').setCheck(["Statement"]);
         
     | 
| 
       5176 
5334 
     | 
    
         
             
                this.setInputsInline(true);
         
     | 
| 
       5177 
5335 
     | 
    
         | 
| 
       5178 
     | 
    
         
            -
                var self = this;
         
     | 
| 
       5179 
     | 
    
         
            -
             
     | 
| 
       5180 
5336 
     | 
    
         
             
                const handIcon = "hand.png";
         
     | 
| 
       5181 
5337 
     | 
    
         
             
                var createGetterButton = new Blockly.FieldImage(
         
     | 
| 
       5182 
5338 
     | 
    
         
             
                  getLocalMediaUrl(this, handIcon),
         
     | 
| 
       5183 
5339 
     | 
    
         
             
                  getLocalMediaSize(handIcon),
         
     | 
| 
       5184 
5340 
     | 
    
         
             
                  getLocalMediaSize(handIcon),
         
     | 
| 
       5185 
     | 
    
         
            -
                  " 
     | 
| 
      
 5341 
     | 
    
         
            +
                  "",
         
     | 
| 
       5186 
5342 
     | 
    
         
             
                  function() {
         
     | 
| 
       5187 
5343 
     | 
    
         
             
                    var name = self.getFieldValue('varName');
         
     | 
| 
       5188 
     | 
    
         
            -
                    createVariable(self, name) 
     | 
| 
      
 5344 
     | 
    
         
            +
                    createVariable(self, name, (block) => {
         
     | 
| 
      
 5345 
     | 
    
         
            +
                      block.$parent = self.id;
         
     | 
| 
      
 5346 
     | 
    
         
            +
                    });
         
     | 
| 
       5189 
5347 
     | 
    
         
             
                  }
         
     | 
| 
       5190 
5348 
     | 
    
         
             
                );
         
     | 
| 
      
 5349 
     | 
    
         
            +
                setTimeout(() => { createGetterButton.setTooltip("Obtener variable"); });
         
     | 
| 
       5191 
5350 
     | 
    
         | 
| 
       5192 
5351 
     | 
    
         
             
                this.inputList[0].appendField(createGetterButton);
         
     | 
| 
       5193 
5352 
     | 
    
         
             
              }
         
     | 
| 
         @@ -5353,12 +5512,13 @@ Blockly.Blocks.Asignacion = { 
     | 
|
| 
       5353 
5512 
     | 
    
         
             
                  getLocalMediaUrl(this, handIcon),
         
     | 
| 
       5354 
5513 
     | 
    
         
             
                  getLocalMediaSize(handIcon),
         
     | 
| 
       5355 
5514 
     | 
    
         
             
                  getLocalMediaSize(handIcon),
         
     | 
| 
       5356 
     | 
    
         
            -
                  " 
     | 
| 
      
 5515 
     | 
    
         
            +
                  "",
         
     | 
| 
       5357 
5516 
     | 
    
         
             
                  function() {
         
     | 
| 
       5358 
5517 
     | 
    
         
             
                    var name = self.getFieldValue('varName');
         
     | 
| 
       5359 
5518 
     | 
    
         
             
                    self.createVariableBlock(name);
         
     | 
| 
       5360 
5519 
     | 
    
         
             
                  }
         
     | 
| 
       5361 
5520 
     | 
    
         
             
                );
         
     | 
| 
      
 5521 
     | 
    
         
            +
                setTimeout(() => { createGetterButton.setTooltip("Obtener variable"); });
         
     | 
| 
       5362 
5522 
     | 
    
         | 
| 
       5363 
5523 
     | 
    
         
             
                this.appendDummyInput().appendField(createGetterButton);
         
     | 
| 
       5364 
5524 
     | 
    
         
             
              },
         
     | 
| 
         @@ -5860,6 +6020,25 @@ Blockly.GobstonesLanguage.List = function(block) { 
     | 
|
| 
       5860 
6020 
     | 
    
         
             
              return [code, Blockly.GobstonesLanguage.ORDER_ATOMIC];
         
     | 
| 
       5861 
6021 
     | 
    
         
             
            };
         
     | 
| 
       5862 
6022 
     | 
    
         | 
| 
      
 6023 
     | 
    
         
            +
            Blockly.GobstonesLanguage.AlternativaEnExpresiones = function(block) {
         
     | 
| 
      
 6024 
     | 
    
         
            +
              const elements = block
         
     | 
| 
      
 6025 
     | 
    
         
            +
                .inputList
         
     | 
| 
      
 6026 
     | 
    
         
            +
                .filter((it) => it.name.startsWith("element"))
         
     | 
| 
      
 6027 
     | 
    
         
            +
                .map((it) => {
         
     | 
| 
      
 6028 
     | 
    
         
            +
                	const id = it.name.match(/element(\d+)/)[1];
         
     | 
| 
      
 6029 
     | 
    
         
            +
                  const value = Blockly.GobstonesLanguage.valueToCode(block, it.name, Blockly.GobstonesLanguage.ORDER_NONE);
         
     | 
| 
      
 6030 
     | 
    
         
            +
                  const conditionValue = Blockly.GobstonesLanguage.valueToCode(block, `condition${id}`, Blockly.GobstonesLanguage.ORDER_NONE);
         
     | 
| 
      
 6031 
     | 
    
         
            +
             
     | 
| 
      
 6032 
     | 
    
         
            +
                  return `${value} when (${conditionValue})`;
         
     | 
| 
      
 6033 
     | 
    
         
            +
                })
         
     | 
| 
      
 6034 
     | 
    
         
            +
                .join("\n  ");
         
     | 
| 
      
 6035 
     | 
    
         
            +
             
     | 
| 
      
 6036 
     | 
    
         
            +
              const otherwise = Blockly.GobstonesLanguage.valueToCode(block, "otherwise", Blockly.GobstonesLanguage.ORDER_NONE);
         
     | 
| 
      
 6037 
     | 
    
         
            +
              const code = `\n  choose ${elements}\n  ${otherwise} otherwise\n`;
         
     | 
| 
      
 6038 
     | 
    
         
            +
             
     | 
| 
      
 6039 
     | 
    
         
            +
              return [code, Blockly.GobstonesLanguage.ORDER_ATOMIC];
         
     | 
| 
      
 6040 
     | 
    
         
            +
            };
         
     | 
| 
      
 6041 
     | 
    
         
            +
             
     | 
| 
       5863 
6042 
     | 
    
         
             
            Blockly.GobstonesLanguage.ForEach = function (block) {
         
     | 
| 
       5864 
6043 
     | 
    
         
             
              let body = Blockly.GobstonesLanguage.statementToCode(block, 'block');
         
     | 
| 
       5865 
6044 
     | 
    
         
             
              var varName = formatCallName(block.getFieldValue('varName'), false, Blockly.VARIABLE_CATEGORY_NAME);
         
     | 
| 
         @@ -6721,6 +6900,11 @@ Blockly.ErrorInforming.CssContent = [ 
     | 
|
| 
       6721 
6900 
     | 
    
         
             
                    // Bloque
         
     | 
| 
       6722 
6901 
     | 
    
         
             
                    Blockly.Blocks[name] = {
         
     | 
| 
       6723 
6902 
     | 
    
         
             
                      init: function () {
         
     | 
| 
      
 6903 
     | 
    
         
            +
                        this.jsonInit({
         
     | 
| 
      
 6904 
     | 
    
         
            +
                          type: "Statement",
         
     | 
| 
      
 6905 
     | 
    
         
            +
                          previousStatement: "Statement",
         
     | 
| 
      
 6906 
     | 
    
         
            +
                          nextStatement: "Statement",
         
     | 
| 
      
 6907 
     | 
    
         
            +
                        });
         
     | 
| 
       6724 
6908 
     | 
    
         
             
                        this.setColour(Blockly.CUSTOM_COLORS.primitiveProcedure);
         
     | 
| 
       6725 
6909 
     | 
    
         | 
| 
       6726 
6910 
     | 
    
         
             
                        if (icon) {
         
     | 
| 
         @@ -6734,8 +6918,6 @@ Blockly.ErrorInforming.CssContent = [ 
     | 
|
| 
       6734 
6918 
     | 
    
         | 
| 
       6735 
6919 
     | 
    
         
             
                        self._definePrimitiveHolesOrDropdown(this, parts, dropdownOptions);
         
     | 
| 
       6736 
6920 
     | 
    
         | 
| 
       6737 
     | 
    
         
            -
                        this.setPreviousStatement(true);
         
     | 
| 
       6738 
     | 
    
         
            -
                        this.setNextStatement(true);
         
     | 
| 
       6739 
6921 
     | 
    
         
             
                        this.setInputsInline(true);
         
     | 
| 
       6740 
6922 
     | 
    
         
             
                        this.setTooltip(definition.attributes && definition.attributes.tooltip || "");
         
     | 
| 
       6741 
6923 
     | 
    
         
             
                      }
         
     | 
| 
         @@ -6796,6 +6978,7 @@ Blockly.ErrorInforming.CssContent = [ 
     | 
|
| 
       6796 
6978 
     | 
    
         
             
                        this.setNextStatement(false);
         
     | 
| 
       6797 
6979 
     | 
    
         
             
                        this.setInputsInline(true);
         
     | 
| 
       6798 
6980 
     | 
    
         
             
                        this.setOutput('var');
         
     | 
| 
      
 6981 
     | 
    
         
            +
                        this.setTooltip(definition.attributes && definition.attributes.tooltip || "");
         
     | 
| 
       6799 
6982 
     | 
    
         
             
                      }
         
     | 
| 
       6800 
6983 
     | 
    
         
             
                    };
         
     | 
| 
       6801 
6984 
     | 
    
         | 
| 
         @@ -408,6 +408,9 @@ Polymer.telemetry.instanceCount = 0; 
     | 
|
| 
       408 
408 
     | 
    
         
             
            }());(function () {
         
     | 
| 
       409 
409 
     | 
    
         
             
            var modules = {};
         
     | 
| 
       410 
410 
     | 
    
         
             
            var lcModules = {};
         
     | 
| 
      
 411 
     | 
    
         
            +
            function setModule(id, module) {
         
     | 
| 
      
 412 
     | 
    
         
            +
            modules[id] = lcModules[id.toLowerCase()] = module;
         
     | 
| 
      
 413 
     | 
    
         
            +
            }
         
     | 
| 
       411 
414 
     | 
    
         
             
            var findModule = function (id) {
         
     | 
| 
       412 
415 
     | 
    
         
             
            return modules[id] || lcModules[id.toLowerCase()];
         
     | 
| 
       413 
416 
     | 
    
         
             
            };
         
     | 
| 
         @@ -422,9 +425,12 @@ this.register(); 
     | 
|
| 
       422 
425 
     | 
    
         
             
            register: function (id) {
         
     | 
| 
       423 
426 
     | 
    
         
             
            id = id || this.id || this.getAttribute('name') || this.getAttribute('is');
         
     | 
| 
       424 
427 
     | 
    
         
             
            if (id) {
         
     | 
| 
      
 428 
     | 
    
         
            +
            if (Polymer.Settings.strictTemplatePolicy && findModule(id) !== undefined) {
         
     | 
| 
      
 429 
     | 
    
         
            +
            setModule(id, null);
         
     | 
| 
      
 430 
     | 
    
         
            +
            throw new Error('strictTemplatePolicy: dom-module ' + id + ' re-registered');
         
     | 
| 
      
 431 
     | 
    
         
            +
            }
         
     | 
| 
       425 
432 
     | 
    
         
             
            this.id = id;
         
     | 
| 
       426 
     | 
    
         
            -
             
     | 
| 
       427 
     | 
    
         
            -
            lcModules[id.toLowerCase()] = this;
         
     | 
| 
      
 433 
     | 
    
         
            +
            setModule(id, this);
         
     | 
| 
       428 
434 
     | 
    
         
             
            }
         
     | 
| 
       429 
435 
     | 
    
         
             
            },
         
     | 
| 
       430 
436 
     | 
    
         
             
            import: function (id, selector) {
         
     | 
| 
         @@ -791,7 +797,7 @@ default: 
     | 
|
| 
       791 
797 
     | 
    
         
             
            return value != null ? value : undefined;
         
     | 
| 
       792 
798 
     | 
    
         
             
            }
         
     | 
| 
       793 
799 
     | 
    
         
             
            }
         
     | 
| 
       794 
     | 
    
         
            -
            });Polymer.version = "1. 
     | 
| 
      
 800 
     | 
    
         
            +
            });Polymer.version = "1.12.0";Polymer.Base._addFeature({
         
     | 
| 
       795 
801 
     | 
    
         
             
            _registerFeatures: function () {
         
     | 
| 
       796 
802 
     | 
    
         
             
            this._prepIs();
         
     | 
| 
       797 
803 
     | 
    
         
             
            this._prepBehaviors();
         
     | 
| 
         @@ -75,7 +75,11 @@ _prepTemplate: function () { 
     | 
|
| 
       75 
75 
     | 
    
         
             
            var module;
         
     | 
| 
       76 
76 
     | 
    
         
             
            if (this._template === undefined) {
         
     | 
| 
       77 
77 
     | 
    
         
             
            module = Polymer.DomModule.import(this.is);
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
            var template = module && module.querySelector('template');
         
     | 
| 
      
 79 
     | 
    
         
            +
            if (Polymer.Settings.strictTemplatePolicy && !template) {
         
     | 
| 
      
 80 
     | 
    
         
            +
            throw new Error('strictTemplatePolicy: expecting dom-module or null _template for ' + this.is);
         
     | 
| 
      
 81 
     | 
    
         
            +
            }
         
     | 
| 
      
 82 
     | 
    
         
            +
            this._template = template;
         
     | 
| 
       79 
83 
     | 
    
         
             
            }
         
     | 
| 
       80 
84 
     | 
    
         
             
            if (module) {
         
     | 
| 
       81 
85 
     | 
    
         
             
            var assetPath = module.getAttribute('assetpath') || '';
         
     | 
| 
         @@ -1041,10 +1045,20 @@ this.removeChild(this.childNodes[0]); 
     | 
|
| 
       1041 
1045 
     | 
    
         
             
            },
         
     | 
| 
       1042 
1046 
     | 
    
         
             
            setAttribute: function (name, value) {
         
     | 
| 
       1043 
1047 
     | 
    
         
             
            this.node.setAttribute(name, value);
         
     | 
| 
       1044 
     | 
    
         
            -
            this. 
     | 
| 
      
 1048 
     | 
    
         
            +
            this._maybeDistributeForAttributeChange(this.node, name);
         
     | 
| 
       1045 
1049 
     | 
    
         
             
            },
         
     | 
| 
       1046 
1050 
     | 
    
         
             
            removeAttribute: function (name) {
         
     | 
| 
       1047 
1051 
     | 
    
         
             
            this.node.removeAttribute(name);
         
     | 
| 
      
 1052 
     | 
    
         
            +
            this._maybeDistributeForAttributeChange(this.node, name);
         
     | 
| 
      
 1053 
     | 
    
         
            +
            },
         
     | 
| 
      
 1054 
     | 
    
         
            +
            _maybeDistributeForAttributeChange: function (element, name) {
         
     | 
| 
      
 1055 
     | 
    
         
            +
            if (name === 'select' && element.localName === 'content') {
         
     | 
| 
      
 1056 
     | 
    
         
            +
            var ownerRoot = this.getOwnerRoot();
         
     | 
| 
      
 1057 
     | 
    
         
            +
            if (ownerRoot && this._nodeNeedsDistribution(ownerRoot.host)) {
         
     | 
| 
      
 1058 
     | 
    
         
            +
            this._lazyDistribute(ownerRoot.host);
         
     | 
| 
      
 1059 
     | 
    
         
            +
            return;
         
     | 
| 
      
 1060 
     | 
    
         
            +
            }
         
     | 
| 
      
 1061 
     | 
    
         
            +
            }
         
     | 
| 
       1048 
1062 
     | 
    
         
             
            this._maybeDistributeParent();
         
     | 
| 
       1049 
1063 
     | 
    
         
             
            },
         
     | 
| 
       1050 
1064 
     | 
    
         
             
            _maybeDistributeParent: function () {
         
     | 
| 
         @@ -1599,7 +1613,7 @@ return h; 
     | 
|
| 
       1599 
1613 
     | 
    
         
             
            _unobserveContentElements: function (elements) {
         
     | 
| 
       1600 
1614 
     | 
    
         
             
            for (var i = 0, n, h; i < elements.length && (n = elements[i]); i++) {
         
     | 
| 
       1601 
1615 
     | 
    
         
             
            if (this._isContent(n)) {
         
     | 
| 
       1602 
     | 
    
         
            -
            h = n.__observeNodesMap.get(this);
         
     | 
| 
      
 1616 
     | 
    
         
            +
            h = n.__observeNodesMap && n.__observeNodesMap.get(this);
         
     | 
| 
       1603 
1617 
     | 
    
         
             
            if (h) {
         
     | 
| 
       1604 
1618 
     | 
    
         
             
            Polymer.dom(n).unobserveNodes(h);
         
     | 
| 
       1605 
1619 
     | 
    
         
             
            n.__observeNodesMap.delete(this);
         
     | 
| 
         @@ -162,6 +162,11 @@ i++; 
     | 
|
| 
       162 
162 
     | 
    
         
             
            }
         
     | 
| 
       163 
163 
     | 
    
         
             
            }
         
     | 
| 
       164 
164 
     | 
    
         
             
            },
         
     | 
| 
      
 165 
     | 
    
         
            +
            _select$Attr: function () {
         
     | 
| 
      
 166 
     | 
    
         
            +
            var div = document.createElement('div');
         
     | 
| 
      
 167 
     | 
    
         
            +
            div.innerHTML = '<div select$>';
         
     | 
| 
      
 168 
     | 
    
         
            +
            return div.childNodes[0].attributes.getNamedItem('select$');
         
     | 
| 
      
 169 
     | 
    
         
            +
            }(),
         
     | 
| 
       165 
170 
     | 
    
         
             
            _replaceSlotWithContent: function (slot) {
         
     | 
| 
       166 
171 
     | 
    
         
             
            var content = slot.ownerDocument.createElement('content');
         
     | 
| 
       167 
172 
     | 
    
         
             
            while (slot.firstChild) {
         
     | 
| 
         @@ -169,13 +174,18 @@ content.appendChild(slot.firstChild); 
     | 
|
| 
       169 
174 
     | 
    
         
             
            }
         
     | 
| 
       170 
175 
     | 
    
         
             
            var attrs = slot.attributes;
         
     | 
| 
       171 
176 
     | 
    
         
             
            for (var i = 0; i < attrs.length; i++) {
         
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
            content.setAttribute(attr.name, attr.value);
         
     | 
| 
      
 177 
     | 
    
         
            +
            content.attributes.setNamedItem(attrs[i].cloneNode());
         
     | 
| 
       174 
178 
     | 
    
         
             
            }
         
     | 
| 
       175 
179 
     | 
    
         
             
            var name = slot.getAttribute('name');
         
     | 
| 
       176 
180 
     | 
    
         
             
            if (name) {
         
     | 
| 
       177 
181 
     | 
    
         
             
            content.setAttribute('select', '[slot=\'' + name + '\']');
         
     | 
| 
       178 
182 
     | 
    
         
             
            }
         
     | 
| 
      
 183 
     | 
    
         
            +
            var name$Value = slot.getAttribute('name$');
         
     | 
| 
      
 184 
     | 
    
         
            +
            if (name$Value) {
         
     | 
| 
      
 185 
     | 
    
         
            +
            var select$Attr = this._select$Attr.cloneNode();
         
     | 
| 
      
 186 
     | 
    
         
            +
            select$Attr.value = '[slot=\'' + name$Value + '\']';
         
     | 
| 
      
 187 
     | 
    
         
            +
            content.attributes.setNamedItem(select$Attr);
         
     | 
| 
      
 188 
     | 
    
         
            +
            }
         
     | 
| 
       179 
189 
     | 
    
         
             
            slot.parentNode.replaceChild(content, slot);
         
     | 
| 
       180 
190 
     | 
    
         
             
            return content;
         
     | 
| 
       181 
191 
     | 
    
         
             
            },
         
     | 
| 
         @@ -379,7 +389,7 @@ this._marshalAnnotatedListeners(); 
     | 
|
| 
       379 
389 
     | 
    
         
             
            }
         
     | 
| 
       380 
390 
     | 
    
         
             
            },
         
     | 
| 
       381 
391 
     | 
    
         
             
            _configureAnnotationReferences: function () {
         
     | 
| 
       382 
     | 
    
         
            -
            var notes = this._notes;
         
     | 
| 
      
 392 
     | 
    
         
            +
            var notes = this._notes || [];
         
     | 
| 
       383 
393 
     | 
    
         
             
            var nodes = this._nodes;
         
     | 
| 
       384 
394 
     | 
    
         
             
            for (var i = 0; i < notes.length; i++) {
         
     | 
| 
       385 
395 
     | 
    
         
             
            var note = notes[i];
         
     | 
| 
         @@ -695,7 +705,11 @@ deepTargetFind: function (x, y) { 
     | 
|
| 
       695 
705 
     | 
    
         
             
            var node = document.elementFromPoint(x, y);
         
     | 
| 
       696 
706 
     | 
    
         
             
            var next = node;
         
     | 
| 
       697 
707 
     | 
    
         
             
            while (next && next.shadowRoot) {
         
     | 
| 
      
 708 
     | 
    
         
            +
            var oldNext = next;
         
     | 
| 
       698 
709 
     | 
    
         
             
            next = next.shadowRoot.elementFromPoint(x, y);
         
     | 
| 
      
 710 
     | 
    
         
            +
            if (oldNext === next) {
         
     | 
| 
      
 711 
     | 
    
         
            +
            break;
         
     | 
| 
      
 712 
     | 
    
         
            +
            }
         
     | 
| 
       699 
713 
     | 
    
         
             
            if (next) {
         
     | 
| 
       700 
714 
     | 
    
         
             
            node = next;
         
     | 
| 
       701 
715 
     | 
    
         
             
            }
         
     | 
| 
         @@ -4346,6 +4360,9 @@ properties: { __hideTemplateChildren__: { observer: '_showHideChildren' } }, 
     | 
|
| 
       4346 
4360 
     | 
    
         
             
            _instanceProps: Polymer.nob,
         
     | 
| 
       4347 
4361 
     | 
    
         
             
            _parentPropPrefix: '_parent_',
         
     | 
| 
       4348 
4362 
     | 
    
         
             
            templatize: function (template) {
         
     | 
| 
      
 4363 
     | 
    
         
            +
            if (Polymer.Settings.strictTemplatePolicy && !this._getRootDataHost()) {
         
     | 
| 
      
 4364 
     | 
    
         
            +
            throw new Error('strictTemplatePolicy: template owner not trusted');
         
     | 
| 
      
 4365 
     | 
    
         
            +
            }
         
     | 
| 
       4349 
4366 
     | 
    
         
             
            this._templatized = template;
         
     | 
| 
       4350 
4367 
     | 
    
         
             
            if (!template._content) {
         
     | 
| 
       4351 
4368 
     | 
    
         
             
            template._content = template.content;
         
     | 
| 
         @@ -4945,6 +4962,9 @@ this._debounceTemplate(this._render); 
     | 
|
| 
       4945 
4962 
     | 
    
         
             
            this._flushTemplates();
         
     | 
| 
       4946 
4963 
     | 
    
         
             
            },
         
     | 
| 
       4947 
4964 
     | 
    
         
             
            _render: function () {
         
     | 
| 
      
 4965 
     | 
    
         
            +
            if (!this.ctor) {
         
     | 
| 
      
 4966 
     | 
    
         
            +
            return;
         
     | 
| 
      
 4967 
     | 
    
         
            +
            }
         
     | 
| 
       4948 
4968 
     | 
    
         
             
            if (this._needFullRefresh) {
         
     | 
| 
       4949 
4969 
     | 
    
         
             
            this._applyFullRefresh();
         
     | 
| 
       4950 
4970 
     | 
    
         
             
            this._needFullRefresh = false;
         
     | 
| 
         @@ -5426,10 +5446,12 @@ if (this._instance) { 
     | 
|
| 
       5426 
5446 
     | 
    
         
             
            var c$ = this._instance._children;
         
     | 
| 
       5427 
5447 
     | 
    
         
             
            if (c$ && c$.length) {
         
     | 
| 
       5428 
5448 
     | 
    
         
             
            var parent = Polymer.dom(Polymer.dom(c$[0]).parentNode);
         
     | 
| 
      
 5449 
     | 
    
         
            +
            if (parent) {
         
     | 
| 
       5429 
5450 
     | 
    
         
             
            for (var i = 0, n; i < c$.length && (n = c$[i]); i++) {
         
     | 
| 
       5430 
5451 
     | 
    
         
             
            parent.removeChild(n);
         
     | 
| 
       5431 
5452 
     | 
    
         
             
            }
         
     | 
| 
       5432 
5453 
     | 
    
         
             
            }
         
     | 
| 
      
 5454 
     | 
    
         
            +
            }
         
     | 
| 
       5433 
5455 
     | 
    
         
             
            this._instance = null;
         
     | 
| 
       5434 
5456 
     | 
    
         
             
            }
         
     | 
| 
       5435 
5457 
     | 
    
         
             
            },
         
     | 
| 
         @@ -5455,6 +5477,9 @@ properties: { notifyDomChange: { type: Boolean } }, 
     | 
|
| 
       5455 
5477 
     | 
    
         
             
            extends: 'template',
         
     | 
| 
       5456 
5478 
     | 
    
         
             
            _template: null,
         
     | 
| 
       5457 
5479 
     | 
    
         
             
            created: function () {
         
     | 
| 
      
 5480 
     | 
    
         
            +
            if (Polymer.Settings.strictTemplatePolicy) {
         
     | 
| 
      
 5481 
     | 
    
         
            +
            throw new Error('strictTemplatePolicy: dom-bind not allowed');
         
     | 
| 
      
 5482 
     | 
    
         
            +
            }
         
     | 
| 
       5458 
5483 
     | 
    
         
             
            var self = this;
         
     | 
| 
       5459 
5484 
     | 
    
         
             
            Polymer.RenderStatus.whenReady(function () {
         
     | 
| 
       5460 
5485 
     | 
    
         
             
            if (document.readyState == 'loading') {
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: gobstones-blockly
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.32.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Rodrigo Alfonso
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-06-07 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     |