gobstones-blockly 0.31.0 → 0.32.0
Sign up to get free protection for your applications and to get access to all the features.
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
|