blockly 8.0.1-beta.0 → 8.0.3-beta.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.
Files changed (138) hide show
  1. package/blockly.min.js +15 -14
  2. package/blockly_compressed.js +4 -3
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/lists.js +5 -11
  5. package/blocks/logic.js +5 -11
  6. package/blocks/loops.js +2 -2
  7. package/blocks/procedures.js +4 -5
  8. package/blocks/text.js +5 -11
  9. package/blocks.d.ts +11 -2
  10. package/blocks_compressed.js +11 -11
  11. package/blocks_compressed.js.map +1 -1
  12. package/core/serialization/blocks.js +7 -1
  13. package/core/utils/toolbox.js +1 -1
  14. package/core.d.ts +1 -2
  15. package/index.d.ts +4 -5
  16. package/msg/ab.js +2 -1
  17. package/msg/ace.js +2 -1
  18. package/msg/af.js +2 -1
  19. package/msg/am.js +2 -1
  20. package/msg/ar.js +2 -1
  21. package/msg/ast.js +2 -1
  22. package/msg/az.js +2 -1
  23. package/msg/ba.js +2 -1
  24. package/msg/bcc.js +2 -1
  25. package/msg/be-tarask.js +2 -1
  26. package/msg/be.js +2 -1
  27. package/msg/bg.js +2 -1
  28. package/msg/bn.js +2 -1
  29. package/msg/br.js +2 -1
  30. package/msg/bs.js +2 -1
  31. package/msg/ca.js +2 -1
  32. package/msg/cdo.js +2 -1
  33. package/msg/cs.js +2 -1
  34. package/msg/da.js +2 -1
  35. package/msg/de.js +2 -1
  36. package/msg/diq.js +2 -1
  37. package/msg/dty.js +2 -1
  38. package/msg/ee.js +2 -1
  39. package/msg/el.js +2 -1
  40. package/msg/en-gb.js +2 -1
  41. package/msg/en.js +2 -1
  42. package/msg/eo.js +2 -1
  43. package/msg/es.js +2 -1
  44. package/msg/et.js +2 -1
  45. package/msg/eu.js +2 -1
  46. package/msg/fa.js +2 -1
  47. package/msg/fi.js +2 -1
  48. package/msg/fo.js +2 -1
  49. package/msg/fr.js +2 -1
  50. package/msg/frr.js +2 -1
  51. package/msg/gl.js +2 -1
  52. package/msg/gn.js +2 -1
  53. package/msg/gor.js +2 -1
  54. package/msg/ha.js +2 -1
  55. package/msg/hak.js +2 -1
  56. package/msg/he.js +2 -1
  57. package/msg/hi.js +2 -1
  58. package/msg/hr.js +2 -1
  59. package/msg/hrx.js +2 -1
  60. package/msg/hu.js +2 -1
  61. package/msg/hy.js +2 -1
  62. package/msg/ia.js +2 -1
  63. package/msg/id.js +2 -1
  64. package/msg/ig.js +2 -1
  65. package/msg/inh.js +2 -1
  66. package/msg/is.js +2 -1
  67. package/msg/it.js +2 -1
  68. package/msg/ja.js +2 -1
  69. package/msg/ka.js +2 -1
  70. package/msg/kab.js +2 -1
  71. package/msg/kbd-cyrl.js +2 -1
  72. package/msg/km.js +2 -1
  73. package/msg/kn.js +2 -1
  74. package/msg/ko.js +2 -1
  75. package/msg/ksh.js +2 -1
  76. package/msg/ku-latn.js +2 -1
  77. package/msg/ky.js +2 -1
  78. package/msg/la.js +2 -1
  79. package/msg/lb.js +2 -1
  80. package/msg/lki.js +2 -1
  81. package/msg/lo.js +2 -1
  82. package/msg/lrc.js +2 -1
  83. package/msg/lt.js +2 -1
  84. package/msg/lv.js +2 -1
  85. package/msg/mg.js +2 -1
  86. package/msg/mk.js +2 -1
  87. package/msg/ml.js +2 -1
  88. package/msg/mnw.js +2 -1
  89. package/msg/ms.js +2 -1
  90. package/msg/my.js +2 -1
  91. package/msg/mzn.js +2 -1
  92. package/msg/nb.js +2 -1
  93. package/msg/ne.js +2 -1
  94. package/msg/nl.js +2 -1
  95. package/msg/oc.js +2 -1
  96. package/msg/olo.js +2 -1
  97. package/msg/pa.js +2 -1
  98. package/msg/pl.js +2 -1
  99. package/msg/pms.js +2 -1
  100. package/msg/ps.js +2 -1
  101. package/msg/pt-br.js +2 -1
  102. package/msg/pt.js +2 -1
  103. package/msg/ro.js +2 -1
  104. package/msg/ru.js +2 -1
  105. package/msg/sc.js +2 -1
  106. package/msg/sco.js +2 -1
  107. package/msg/sd.js +2 -1
  108. package/msg/shn.js +2 -1
  109. package/msg/si.js +2 -1
  110. package/msg/sk.js +2 -1
  111. package/msg/skr-arab.js +2 -1
  112. package/msg/sl.js +2 -1
  113. package/msg/smn.js +2 -1
  114. package/msg/sq.js +2 -1
  115. package/msg/sr-latn.js +2 -1
  116. package/msg/sr.js +2 -1
  117. package/msg/sv.js +2 -1
  118. package/msg/sw.js +2 -1
  119. package/msg/ta.js +2 -1
  120. package/msg/tcy.js +2 -1
  121. package/msg/te.js +2 -1
  122. package/msg/th.js +2 -1
  123. package/msg/ti.js +2 -1
  124. package/msg/tl.js +2 -1
  125. package/msg/tlh.js +2 -1
  126. package/msg/tr.js +2 -1
  127. package/msg/ug-arab.js +2 -1
  128. package/msg/uk.js +2 -1
  129. package/msg/ur.js +2 -1
  130. package/msg/uz.js +2 -1
  131. package/msg/vi.js +2 -1
  132. package/msg/xmf.js +2 -1
  133. package/msg/yo.js +2 -1
  134. package/msg/yue.js +2 -1
  135. package/msg/zgh.js +2 -1
  136. package/msg/zh-hans.js +2 -1
  137. package/msg/zh-hant.js +2 -1
  138. package/package.json +1 -1
package/blocks/lists.js CHANGED
@@ -198,13 +198,10 @@ blocks['lists_create_with'] = {
198
198
  let itemBlock = containerBlock.getInputTargetBlock('STACK');
199
199
  // Count number of inputs.
200
200
  const connections = [];
201
- while (itemBlock) {
202
- if (itemBlock.isInsertionMarker()) {
203
- itemBlock = itemBlock.getNextBlock();
204
- continue;
205
- }
201
+ while (itemBlock && !itemBlock.isInsertionMarker()) {
206
202
  connections.push(itemBlock.valueConnection_);
207
- itemBlock = itemBlock.getNextBlock();
203
+ itemBlock =
204
+ itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
208
205
  }
209
206
  // Disconnect any children that don't belong.
210
207
  for (let i = 0; i < this.itemCount_; i++) {
@@ -229,13 +226,10 @@ blocks['lists_create_with'] = {
229
226
  let itemBlock = containerBlock.getInputTargetBlock('STACK');
230
227
  let i = 0;
231
228
  while (itemBlock) {
232
- if (itemBlock.isInsertionMarker()) {
233
- itemBlock = itemBlock.getNextBlock();
234
- continue;
235
- }
236
229
  const input = this.getInput('ADD' + i);
237
230
  itemBlock.valueConnection_ = input && input.connection.targetConnection;
238
- itemBlock = itemBlock.getNextBlock();
231
+ itemBlock =
232
+ itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
239
233
  i++;
240
234
  }
241
235
  },
package/blocks/logic.js CHANGED
@@ -394,11 +394,7 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
394
394
  const valueConnections = [null];
395
395
  const statementConnections = [null];
396
396
  let elseStatementConnection = null;
397
- while (clauseBlock) {
398
- if (clauseBlock.isInsertionMarker()) {
399
- clauseBlock = clauseBlock.getNextBlock();
400
- continue;
401
- }
397
+ while (clauseBlock && !clauseBlock.isInsertionMarker()) {
402
398
  switch (clauseBlock.type) {
403
399
  case 'controls_if_elseif':
404
400
  this.elseifCount_++;
@@ -412,7 +408,8 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
412
408
  default:
413
409
  throw TypeError('Unknown block type: ' + clauseBlock.type);
414
410
  }
415
- clauseBlock = clauseBlock.getNextBlock();
411
+ clauseBlock = clauseBlock.nextConnection &&
412
+ clauseBlock.nextConnection.targetBlock();
416
413
  }
417
414
  this.updateShape_();
418
415
  // Reconnect any child blocks.
@@ -428,10 +425,6 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
428
425
  let clauseBlock = containerBlock.nextConnection.targetBlock();
429
426
  let i = 1;
430
427
  while (clauseBlock) {
431
- if (clauseBlock.isInsertionMarker()) {
432
- clauseBlock = clauseBlock.getNextBlock();
433
- continue;
434
- }
435
428
  switch (clauseBlock.type) {
436
429
  case 'controls_if_elseif': {
437
430
  const inputIf = this.getInput('IF' + i);
@@ -452,7 +445,8 @@ const CONTROLS_IF_MUTATOR_MIXIN = {
452
445
  default:
453
446
  throw TypeError('Unknown block type: ' + clauseBlock.type);
454
447
  }
455
- clauseBlock = clauseBlock.getNextBlock();
448
+ clauseBlock = clauseBlock.nextConnection &&
449
+ clauseBlock.nextConnection.targetBlock();
456
450
  }
457
451
  },
458
452
  /**
package/blocks/loops.js CHANGED
@@ -293,8 +293,8 @@ Extensions.register(
293
293
  * To add a new loop type add this to your code:
294
294
  *
295
295
  * // If using the Blockly npm package and es6 import syntax:
296
- * import {loops} from 'blockly/blocks';
297
- * loops.loopTypes.add('custom_loop');
296
+ * import {loopTypes} from 'blockly/blocks';
297
+ * loopTypes.add('custom_loop');
298
298
  *
299
299
  * // Else if using Closure Compiler and goog.modules:
300
300
  * const {loopTypes} = goog.require('Blockly.libraryBlocks.loops');
@@ -721,10 +721,10 @@ const PROCEDURE_CALL_COMMON = {
721
721
  if (!mutatorOpen) {
722
722
  this.quarkConnections_ = {};
723
723
  this.quarkIds_ = null;
724
- }
725
- if (!paramIds) {
726
- // Reset the quarks (a mutator is about to open).
727
- return;
724
+ } else {
725
+ // fix #6091 - this call could cause an error when outside if-else
726
+ // expanding block while mutating prevents another error (ancient fix)
727
+ this.setCollapsed(false);
728
728
  }
729
729
  // Test arguments (arrays of strings) for changes. '\n' is not a valid
730
730
  // argument name character, so it is a valid delimiter here.
@@ -736,7 +736,6 @@ const PROCEDURE_CALL_COMMON = {
736
736
  if (paramIds.length !== paramNames.length) {
737
737
  throw RangeError('paramNames and paramIds must be the same length.');
738
738
  }
739
- this.setCollapsed(false);
740
739
  if (!this.quarkIds_) {
741
740
  // Initialize tracking for this block.
742
741
  this.quarkConnections_ = {};
package/blocks/text.js CHANGED
@@ -781,13 +781,10 @@ const TEXT_JOIN_MUTATOR_MIXIN = {
781
781
  let itemBlock = containerBlock.getInputTargetBlock('STACK');
782
782
  // Count number of inputs.
783
783
  const connections = [];
784
- while (itemBlock) {
785
- if (itemBlock.isInsertionMarker()) {
786
- itemBlock = itemBlock.getNextBlock();
787
- continue;
788
- }
784
+ while (itemBlock && !itemBlock.isInsertionMarker()) {
789
785
  connections.push(itemBlock.valueConnection_);
790
- itemBlock = itemBlock.getNextBlock();
786
+ itemBlock =
787
+ itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
791
788
  }
792
789
  // Disconnect any children that don't belong.
793
790
  for (let i = 0; i < this.itemCount_; i++) {
@@ -812,13 +809,10 @@ const TEXT_JOIN_MUTATOR_MIXIN = {
812
809
  let itemBlock = containerBlock.getInputTargetBlock('STACK');
813
810
  let i = 0;
814
811
  while (itemBlock) {
815
- if (itemBlock.isInsertionMarker()) {
816
- itemBlock = itemBlock.getNextBlock();
817
- continue;
818
- }
819
812
  const input = this.getInput('ADD' + i);
820
813
  itemBlock.valueConnection_ = input && input.connection.targetConnection;
821
- itemBlock = itemBlock.getNextBlock();
814
+ itemBlock =
815
+ itemBlock.nextConnection && itemBlock.nextConnection.targetBlock();
822
816
  i++;
823
817
  }
824
818
  },
package/blocks.d.ts CHANGED
@@ -11,5 +11,14 @@
11
11
 
12
12
  /// <reference path="core.d.ts" />
13
13
 
14
- import * as Blockly from './core';
15
- export = Blockly.Blocks;
14
+ export const colour: any;
15
+ export const lists: any;
16
+ export const logic: any;
17
+ export const loops: any;
18
+ export const math: any;
19
+ export const procedures: any;
20
+ export const texts: any;
21
+ export const variables: any;
22
+ export const variablesDynamic: any;
23
+
24
+ export const blocks: any;
@@ -53,8 +53,8 @@ module$exports$Blockly$libraryBlocks$texts.blocks.text_reverse={init:function(){
53
53
  var module$contents$Blockly$libraryBlocks$texts_QUOTE_IMAGE_MIXIN={QUOTE_IMAGE_LEFT_DATAURI:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC",QUOTE_IMAGE_RIGHT_DATAURI:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==",
54
54
  QUOTE_IMAGE_WIDTH:12,QUOTE_IMAGE_HEIGHT:12,quoteField_:function(a){for(var b=0,c;c=this.inputList[b];b++)for(var d=0,e;e=c.fieldRow[d];d++)if(a===e.name){c.insertFieldAt(d,this.newQuote_(!0));c.insertFieldAt(d+2,this.newQuote_(!1));return}console.warn('field named "'+a+'" not found in '+this.toDevString())},newQuote_:function(a){a=this.RTL?!a:a;return new $.module$exports$Blockly$FieldImage.FieldImage(a?this.QUOTE_IMAGE_LEFT_DATAURI:this.QUOTE_IMAGE_RIGHT_DATAURI,this.QUOTE_IMAGE_WIDTH,this.QUOTE_IMAGE_HEIGHT,
55
55
  a?"\u201c":"\u201d")}},module$contents$Blockly$libraryBlocks$texts_TEXT_QUOTES_EXTENSION=function(){this.mixin(module$contents$Blockly$libraryBlocks$texts_QUOTE_IMAGE_MIXIN);this.quoteField_("TEXT")},module$contents$Blockly$libraryBlocks$texts_TEXT_JOIN_MUTATOR_MIXIN={mutationToDom:function(){var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10);this.updateShape_()},
56
- saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(a){this.itemCount_=a.itemCount;this.updateShape_()},decompose:function(a){var b=a.newBlock("text_create_join_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d<this.itemCount_;d++){var e=a.newBlock("text_create_join_item");e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b;)b.isInsertionMarker()||a.push(b.valueConnection_),
57
- b=b.getNextBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;c&&-1===a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=a.getInputTargetBlock("STACK");for(var b=0;a;)if(a.isInsertionMarker())a=a.getNextBlock();else{var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;a=a.getNextBlock();
56
+ saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(a){this.itemCount_=a.itemCount;this.updateShape_()},decompose:function(a){var b=a.newBlock("text_create_join_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d<this.itemCount_;d++){var e=a.newBlock("text_create_join_item");e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b&&!b.isInsertionMarker();)a.push(b.valueConnection_),
57
+ b=b.nextConnection&&b.nextConnection.targetBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;c&&-1===a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=a.getInputTargetBlock("STACK");for(var b=0;a;){var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;a=a.nextConnection&&a.nextConnection.targetBlock();
58
58
  b++}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||this.appendDummyInput("EMPTY").appendField(this.newQuote_(!0)).appendField(this.newQuote_(!1));for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+a).setAlign($.module$exports$Blockly$Input.Align.RIGHT);0===a&&b.appendField($.module$exports$Blockly$Msg.Msg.TEXT_JOIN_TITLE_CREATEWITH)}for(a=this.itemCount_;this.getInput("ADD"+
59
59
  a);a++)this.removeInput("ADD"+a)}},module$contents$Blockly$libraryBlocks$texts_TEXT_JOIN_EXTENSION=function(){this.mixin(module$contents$Blockly$libraryBlocks$texts_QUOTE_IMAGE_MIXIN);this.itemCount_=2;this.updateShape_();this.setMutator(new $.module$exports$Blockly$Mutator.Mutator(["text_create_join_item"]))};(0,$.module$exports$Blockly$Extensions.register)("text_append_tooltip",(0,$.module$exports$Blockly$Extensions.buildTooltipWithFieldText)("%{BKY_TEXT_APPEND_TOOLTIP}","VAR"));
60
60
  var module$contents$Blockly$libraryBlocks$texts_TEXT_INDEXOF_TOOLTIP_EXTENSION=function(){var a=this;this.setTooltip(function(){return $.module$exports$Blockly$Msg.Msg.TEXT_INDEXOF_TOOLTIP.replace("%1",a.workspace.options.oneBasedIndex?"0":"-1")})},module$contents$Blockly$libraryBlocks$texts_TEXT_CHARAT_MUTATOR_MIXIN={mutationToDom:function(){var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");a.setAttribute("at",!!this.isAt_);return a},domToMutation:function(a){a="false"!==a.getAttribute("at");
@@ -87,7 +87,7 @@ this.setStyle("procedure_blocks");this.setTooltip($.module$exports$Blockly$Msg.M
87
87
  f=0;f<d.length;f++)if(d[f].id!==this.getSourceBlock().id){var g=d[f].getFieldValue("NAME");if(g&&g.toLowerCase()===e)return null}if(b.isInFlyout)return a;(b=c.getVariable(a,""))&&b.name!==a&&c.renameVariableById(b.getId(),a);b||(b=c.createVariable(a,""))&&this.createdVariables_&&this.createdVariables_.push(b);return a},deleteIntermediateVars_:function(a){var b=$.module$exports$Blockly$Mutator.Mutator.findParentWs(this.getSourceBlock().workspace);if(b)for(var c=0;c<this.createdVariables_.length;c++){var d=
88
88
  this.createdVariables_[c];d.name!==a&&b.deleteVariableById(d.getId())}}};
89
89
  var module$contents$Blockly$libraryBlocks$procedures_PROCEDURE_CALL_COMMON={getProcedureCall:function(){return this.getFieldValue("NAME")},renameProcedure:function(a,b){$.module$exports$Blockly$Names.Names.equals(a,this.getProcedureCall())&&(this.setFieldValue(b,"NAME"),this.setTooltip((this.outputConnection?$.module$exports$Blockly$Msg.Msg.PROCEDURES_CALLRETURN_TOOLTIP:$.module$exports$Blockly$Msg.Msg.PROCEDURES_CALLNORETURN_TOOLTIP).replace("%1",b)))},setProcedureParameters_:function(a,b){var c=
90
- (0,$.module$exports$Blockly$Procedures.getDefinition)(this.getProcedureCall(),this.workspace),d=c&&c.mutator&&c.mutator.isVisible();d||(this.quarkConnections_={},this.quarkIds_=null);if(b)if(a.join("\n")===this.arguments_.join("\n"))this.quarkIds_=b;else{if(b.length!==a.length)throw RangeError("paramNames and paramIds must be the same length.");this.setCollapsed(!1);this.quarkIds_||(this.quarkConnections_={},this.quarkIds_=[]);c=this.rendered;this.rendered=!1;for(var e=0;e<this.arguments_.length;e++){var f=
90
+ (0,$.module$exports$Blockly$Procedures.getDefinition)(this.getProcedureCall(),this.workspace),d=c&&c.mutator&&c.mutator.isVisible();d?this.setCollapsed(!1):(this.quarkConnections_={},this.quarkIds_=null);if(a.join("\n")===this.arguments_.join("\n"))this.quarkIds_=b;else{if(b.length!==a.length)throw RangeError("paramNames and paramIds must be the same length.");this.quarkIds_||(this.quarkConnections_={},this.quarkIds_=[]);c=this.rendered;this.rendered=!1;for(var e=0;e<this.arguments_.length;e++){var f=
91
91
  this.getInput("ARG"+e);f&&(f=f.connection.targetConnection,this.quarkConnections_[this.quarkIds_[e]]=f,d&&f&&-1===b.indexOf(this.quarkIds_[e])&&(f.disconnect(),f.getSourceBlock().bumpNeighbours()))}this.arguments_=[].concat(a);this.argumentVarModels_=[];for(a=0;a<this.arguments_.length;a++)d=(0,$.module$exports$Blockly$Variables.getOrCreateVariablePackage)(this.workspace,null,this.arguments_[a],""),this.argumentVarModels_.push(d);this.updateShape_();if(this.quarkIds_=b)for(b=0;b<this.arguments_.length;b++)a=
92
92
  this.quarkIds_[b],a in this.quarkConnections_&&($.module$exports$Blockly$Mutator.Mutator.reconnect(this.quarkConnections_[a],this,"ARG"+b)||delete this.quarkConnections_[a]);(this.rendered=c)&&this.render()}},updateShape_:function(){for(var a=0;a<this.arguments_.length;a++){var b=this.getField("ARGNAME"+a);if(b){(0,$.module$exports$Blockly$Events.disable)();try{b.setValue(this.arguments_[a])}finally{(0,$.module$exports$Blockly$Events.enable)()}}else b=new $.module$exports$Blockly$FieldLabel.FieldLabel(this.arguments_[a]),
93
93
  this.appendValueInput("ARG"+a).setAlign($.module$exports$Blockly$Input.Align.RIGHT).appendField(b,"ARGNAME"+a).init()}for(a=this.arguments_.length;this.getInput("ARG"+a);a++)this.removeInput("ARG"+a);if(a=this.getInput("TOPROW"))this.arguments_.length?this.getField("WITH")||(a.appendField($.module$exports$Blockly$Msg.Msg.PROCEDURES_CALL_BEFORE_PARAMS,"WITH"),a.init()):this.getField("WITH")&&a.removeField("WITH")},mutationToDom:function(){var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");
@@ -148,11 +148,11 @@ var module$contents$Blockly$libraryBlocks$logic_TOOLTIPS_BY_OP={EQ:"%{BKY_LOGIC_
148
148
  (0,$.module$exports$Blockly$Extensions.register)("logic_op_tooltip",(0,$.module$exports$Blockly$Extensions.buildTooltipForDropdown)("OP",module$contents$Blockly$libraryBlocks$logic_TOOLTIPS_BY_OP));
149
149
  var module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN={elseifCount_:0,elseCount_:0,mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");this.elseifCount_&&a.setAttribute("elseif",this.elseifCount_);this.elseCount_&&a.setAttribute("else",1);return a},domToMutation:function(a){this.elseifCount_=parseInt(a.getAttribute("elseif"),10)||0;this.elseCount_=parseInt(a.getAttribute("else"),10)||
150
150
  0;this.rebuildShape_()},saveExtraState:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=Object.create(null);this.elseifCount_&&(a.elseIfCount=this.elseifCount_);this.elseCount_&&(a.hasElse=!0);return a},loadExtraState:function(a){this.elseifCount_=a.elseIfCount||0;this.elseCount_=a.hasElse?1:0;this.updateShape_()},decompose:function(a){var b=a.newBlock("controls_if_if");b.initSvg();for(var c=b.nextConnection,d=1;d<=this.elseifCount_;d++){var e=a.newBlock("controls_if_elseif");
151
- e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}this.elseCount_&&(a=a.newBlock("controls_if_else"),a.initSvg(),c.connect(a.previousConnection));return b},compose:function(a){a=a.nextConnection.targetBlock();this.elseCount_=this.elseifCount_=0;for(var b=[null],c=[null],d=null;a;){if(!a.isInsertionMarker())switch(a.type){case "controls_if_elseif":this.elseifCount_++;b.push(a.valueConnection_);c.push(a.statementConnection_);break;case "controls_if_else":this.elseCount_++;d=a.statementConnection_;
152
- break;default:throw TypeError("Unknown block type: "+a.type);}a=a.getNextBlock()}this.updateShape_();this.reconnectChildBlocks_(b,c,d)},saveConnections:function(a){a=a.nextConnection.targetBlock();for(var b=1;a;){if(!a.isInsertionMarker())switch(a.type){case "controls_if_elseif":var c=this.getInput("IF"+b),d=this.getInput("DO"+b);a.valueConnection_=c&&c.connection.targetConnection;a.statementConnection_=d&&d.connection.targetConnection;b++;break;case "controls_if_else":c=this.getInput("ELSE");a.statementConnection_=
153
- c&&c.connection.targetConnection;break;default:throw TypeError("Unknown block type: "+a.type);}a=a.getNextBlock()}},rebuildShape_:function(){var a=[null],b=[null],c=null;this.getInput("ELSE")&&(c=this.getInput("ELSE").connection.targetConnection);for(var d=1;this.getInput("IF"+d);d++){var e=this.getInput("IF"+d),f=this.getInput("DO"+d);a.push(e.connection.targetConnection);b.push(f.connection.targetConnection)}this.updateShape_();this.reconnectChildBlocks_(a,b,c)},updateShape_:function(){this.getInput("ELSE")&&
154
- this.removeInput("ELSE");for(var a=1;this.getInput("IF"+a);a++)this.removeInput("IF"+a),this.removeInput("DO"+a);for(a=1;a<=this.elseifCount_;a++)this.appendValueInput("IF"+a).setCheck("Boolean").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+a).appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSE)},reconnectChildBlocks_:function(a,
155
- b,c){for(var d=1;d<=this.elseifCount_;d++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[d],this,"IF"+d),$.module$exports$Blockly$Mutator.Mutator.reconnect(b[d],this,"DO"+d);$.module$exports$Blockly$Mutator.Mutator.reconnect(c,this,"ELSE")}};(0,$.module$exports$Blockly$Extensions.registerMutator)("controls_if_mutator",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN,null,["controls_if_elseif","controls_if_else"]);
151
+ e.initSvg();c.connect(e.previousConnection);c=e.nextConnection}this.elseCount_&&(a=a.newBlock("controls_if_else"),a.initSvg(),c.connect(a.previousConnection));return b},compose:function(a){a=a.nextConnection.targetBlock();this.elseCount_=this.elseifCount_=0;for(var b=[null],c=[null],d=null;a&&!a.isInsertionMarker();){switch(a.type){case "controls_if_elseif":this.elseifCount_++;b.push(a.valueConnection_);c.push(a.statementConnection_);break;case "controls_if_else":this.elseCount_++;d=a.statementConnection_;
152
+ break;default:throw TypeError("Unknown block type: "+a.type);}a=a.nextConnection&&a.nextConnection.targetBlock()}this.updateShape_();this.reconnectChildBlocks_(b,c,d)},saveConnections:function(a){a=a.nextConnection.targetBlock();for(var b=1;a;){switch(a.type){case "controls_if_elseif":var c=this.getInput("IF"+b),d=this.getInput("DO"+b);a.valueConnection_=c&&c.connection.targetConnection;a.statementConnection_=d&&d.connection.targetConnection;b++;break;case "controls_if_else":c=this.getInput("ELSE");
153
+ a.statementConnection_=c&&c.connection.targetConnection;break;default:throw TypeError("Unknown block type: "+a.type);}a=a.nextConnection&&a.nextConnection.targetBlock()}},rebuildShape_:function(){var a=[null],b=[null],c=null;this.getInput("ELSE")&&(c=this.getInput("ELSE").connection.targetConnection);for(var d=1;this.getInput("IF"+d);d++){var e=this.getInput("IF"+d),f=this.getInput("DO"+d);a.push(e.connection.targetConnection);b.push(f.connection.targetConnection)}this.updateShape_();this.reconnectChildBlocks_(a,
154
+ b,c)},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var a=1;this.getInput("IF"+a);a++)this.removeInput("IF"+a),this.removeInput("DO"+a);for(a=1;a<=this.elseifCount_;a++)this.appendValueInput("IF"+a).setCheck("Boolean").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+a).appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField($.module$exports$Blockly$Msg.Msg.CONTROLS_IF_MSG_ELSE)},
155
+ reconnectChildBlocks_:function(a,b,c){for(var d=1;d<=this.elseifCount_;d++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[d],this,"IF"+d),$.module$exports$Blockly$Mutator.Mutator.reconnect(b[d],this,"DO"+d);$.module$exports$Blockly$Mutator.Mutator.reconnect(c,this,"ELSE")}};(0,$.module$exports$Blockly$Extensions.registerMutator)("controls_if_mutator",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_MUTATOR_MIXIN,null,["controls_if_elseif","controls_if_else"]);
156
156
  var module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_TOOLTIP_EXTENSION=function(){this.setTooltip(function(){if(this.elseifCount_||this.elseCount_){if(!this.elseifCount_&&this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_2;if(this.elseifCount_&&!this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_3;if(this.elseifCount_&&this.elseCount_)return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_4}else return $.module$exports$Blockly$Msg.Msg.CONTROLS_IF_TOOLTIP_1;
157
157
  return""}.bind(this))};(0,$.module$exports$Blockly$Extensions.register)("controls_if_tooltip",module$contents$Blockly$libraryBlocks$logic_CONTROLS_IF_TOOLTIP_EXTENSION);
158
158
  var module$contents$Blockly$libraryBlocks$logic_LOGIC_COMPARE_ONCHANGE_MIXIN={onchange:function(a){this.prevBlocks_||(this.prevBlocks_=[null,null]);var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");b&&c&&!this.workspace.connectionChecker.doTypeChecks(b.outputConnection,c.outputConnection)&&((0,$.module$exports$Blockly$Events.setGroup)(a.group),a=this.prevBlocks_[0],a!==b&&(b.unplug(),!a||a.isDisposed()||a.isShadow()||this.getInput("A").connection.connect(a.outputConnection)),b=this.prevBlocks_[1],
@@ -165,9 +165,9 @@ helpUrl:"%{BKY_LISTS_REPEAT_HELPURL}"},{type:"lists_reverse",message0:"%{BKY_LIS
165
165
  {type:"lists_length",message0:"%{BKY_LISTS_LENGTH_TITLE}",args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",style:"list_blocks",tooltip:"%{BKY_LISTS_LENGTH_TOOLTIP}",helpUrl:"%{BKY_LISTS_LENGTH_HELPURL}"}]);
166
166
  module$exports$Blockly$libraryBlocks$lists.blocks.lists_create_with={init:function(){this.setHelpUrl($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_HELPURL);this.setStyle("list_blocks");this.itemCount_=3;this.updateShape_();this.setOutput(!0,"Array");this.setMutator(new $.module$exports$Blockly$Mutator.Mutator(["lists_create_with_item"]));this.setTooltip($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var a=(0,$.module$exports$Blockly$utils$xml.createElement)("mutation");
167
167
  a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10);this.updateShape_()},saveExtraState:function(){return{itemCount:this.itemCount_}},loadExtraState:function(a){this.itemCount_=a.itemCount;this.updateShape_()},decompose:function(a){var b=a.newBlock("lists_create_with_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d<this.itemCount_;d++){var e=a.newBlock("lists_create_with_item");e.initSvg();c.connect(e.previousConnection);
168
- c=e.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b;)b.isInsertionMarker()||a.push(b.valueConnection_),b=b.getNextBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;c&&-1===a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=a.getInputTargetBlock("STACK");for(var b=
169
- 0;a;)if(a.isInsertionMarker())a=a.getNextBlock();else{var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;a=a.getNextBlock();b++}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||this.appendDummyInput("EMPTY").appendField($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_EMPTY_TITLE);for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+a).setAlign($.module$exports$Blockly$Input.Align.RIGHT);
170
- 0===a&&b.appendField($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_INPUT_WITH)}for(a=this.itemCount_;this.getInput("ADD"+a);a++)this.removeInput("ADD"+a)}};
168
+ c=e.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b&&!b.isInsertionMarker();)a.push(b.valueConnection_),b=b.nextConnection&&b.nextConnection.targetBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;c&&-1===a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)$.module$exports$Blockly$Mutator.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=
169
+ a.getInputTargetBlock("STACK");for(var b=0;a;){var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;a=a.nextConnection&&a.nextConnection.targetBlock();b++}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||this.appendDummyInput("EMPTY").appendField($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_EMPTY_TITLE);for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+
170
+ a).setAlign($.module$exports$Blockly$Input.Align.RIGHT);0===a&&b.appendField($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_INPUT_WITH)}for(a=this.itemCount_;this.getInput("ADD"+a);a++)this.removeInput("ADD"+a)}};
171
171
  module$exports$Blockly$libraryBlocks$lists.blocks.lists_create_with_container={init:function(){this.setStyle("list_blocks");this.appendDummyInput().appendField($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD);this.appendStatementInput("STACK");this.setTooltip($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP);this.contextMenu=!1}};
172
172
  module$exports$Blockly$libraryBlocks$lists.blocks.lists_create_with_item={init:function(){this.setStyle("list_blocks");this.appendDummyInput().appendField($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_ITEM_TITLE);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip($.module$exports$Blockly$Msg.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP);this.contextMenu=!1}};
173
173
  module$exports$Blockly$libraryBlocks$lists.blocks.lists_indexOf={init:function(){var a=[[$.module$exports$Blockly$Msg.Msg.LISTS_INDEX_OF_FIRST,"FIRST"],[$.module$exports$Blockly$Msg.Msg.LISTS_INDEX_OF_LAST,"LAST"]];this.setHelpUrl($.module$exports$Blockly$Msg.Msg.LISTS_INDEX_OF_HELPURL);this.setStyle("list_blocks");this.setOutput(!0,"Number");this.appendValueInput("VALUE").setCheck("Array").appendField($.module$exports$Blockly$Msg.Msg.LISTS_INDEX_OF_INPUT_IN_LIST);this.appendValueInput("FIND").appendField(new $.module$exports$Blockly$FieldDropdown.FieldDropdown(a),