blockly 9.0.1 → 9.1.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 (185) hide show
  1. package/README.md +2 -2
  2. package/blockly.js +1 -1
  3. package/blockly.min.js +332 -312
  4. package/blockly_compressed.js +311 -306
  5. package/blockly_compressed.js.map +1 -1
  6. package/blocks.js +1 -1
  7. package/blocks_compressed.js +1 -1
  8. package/blocks_compressed.js.map +1 -1
  9. package/browser.js +1 -1
  10. package/core/block_drag_surface.d.ts +15 -8
  11. package/core/block_svg.d.ts +10 -4
  12. package/core/blockly.d.ts +8 -20
  13. package/core/bubble.d.ts +32 -32
  14. package/core/comment.d.ts +15 -19
  15. package/core/field_angle.d.ts +15 -2
  16. package/core/field_dropdown.d.ts +19 -24
  17. package/core/field_variable.d.ts +3 -3
  18. package/core/generator.d.ts +4 -4
  19. package/core/interfaces/i_parameter_model.d.ts +8 -0
  20. package/core/interfaces/i_procedure_block.d.ts +13 -0
  21. package/core/interfaces/i_procedure_map.d.ts +16 -0
  22. package/core/menu.d.ts +19 -19
  23. package/core/menuitem.d.ts +8 -8
  24. package/core/mutator.d.ts +13 -13
  25. package/core/procedures/observable_parameter_model.d.ts +11 -0
  26. package/core/procedures/observable_procedure_map.d.ts +6 -1
  27. package/core/procedures/observable_procedure_model.d.ts +7 -3
  28. package/core/procedures/update_procedures.d.ts +13 -0
  29. package/core/procedures.d.ts +4 -0
  30. package/core/rendered_connection.d.ts +1 -1
  31. package/core/renderers/common/constants.d.ts +1 -6
  32. package/core/scrollbar.d.ts +68 -39
  33. package/core/serialization/blocks.d.ts +38 -0
  34. package/core/serialization/priorities.d.ts +4 -0
  35. package/core/serialization/procedures.d.ts +78 -0
  36. package/core/serialization/variables.d.ts +33 -0
  37. package/core/serialization.d.ts +2 -1
  38. package/core/theme.d.ts +5 -5
  39. package/core/warning.d.ts +4 -4
  40. package/core/workspace.d.ts +9 -5
  41. package/core/workspace_svg.d.ts +26 -26
  42. package/core/zoom_controls.d.ts +18 -18
  43. package/core-browser.js +1 -1
  44. package/core.js +1 -1
  45. package/dart.js +1 -1
  46. package/dart_compressed.js +2 -2
  47. package/dart_compressed.js.map +1 -1
  48. package/index.js +1 -1
  49. package/javascript.js +1 -1
  50. package/javascript_compressed.js +4 -5
  51. package/javascript_compressed.js.map +1 -1
  52. package/lua.js +1 -1
  53. package/lua_compressed.js +2 -3
  54. package/lua_compressed.js.map +1 -1
  55. package/msg/ab.js +1 -1
  56. package/msg/ace.js +1 -1
  57. package/msg/af.js +1 -1
  58. package/msg/am.js +1 -1
  59. package/msg/ar.js +1 -1
  60. package/msg/ast.js +1 -1
  61. package/msg/az.js +1 -1
  62. package/msg/ba.js +1 -1
  63. package/msg/bcc.js +1 -1
  64. package/msg/be-tarask.js +1 -1
  65. package/msg/be.js +1 -1
  66. package/msg/bg.js +1 -1
  67. package/msg/bn.js +1 -1
  68. package/msg/br.js +1 -1
  69. package/msg/bs.js +1 -1
  70. package/msg/ca.js +1 -1
  71. package/msg/cdo.js +1 -1
  72. package/msg/cs.js +1 -1
  73. package/msg/da.js +1 -1
  74. package/msg/de.js +1 -1
  75. package/msg/diq.js +1 -1
  76. package/msg/dty.js +1 -1
  77. package/msg/ee.js +1 -1
  78. package/msg/el.js +1 -1
  79. package/msg/en-gb.js +1 -1
  80. package/msg/en.js +1 -1
  81. package/msg/eo.js +1 -1
  82. package/msg/es.js +1 -1
  83. package/msg/et.js +1 -1
  84. package/msg/eu.js +1 -1
  85. package/msg/fa.js +1 -1
  86. package/msg/fi.js +1 -1
  87. package/msg/fo.js +1 -1
  88. package/msg/fr.js +1 -1
  89. package/msg/frr.js +1 -1
  90. package/msg/gl.js +1 -1
  91. package/msg/gn.js +1 -1
  92. package/msg/gor.js +1 -1
  93. package/msg/ha.js +1 -1
  94. package/msg/hak.js +1 -1
  95. package/msg/he.js +1 -1
  96. package/msg/hi.js +1 -1
  97. package/msg/hr.js +1 -1
  98. package/msg/hrx.js +1 -1
  99. package/msg/hu.js +1 -1
  100. package/msg/hy.js +1 -1
  101. package/msg/ia.js +1 -1
  102. package/msg/id.js +1 -1
  103. package/msg/ig.js +1 -1
  104. package/msg/inh.js +1 -1
  105. package/msg/is.js +1 -1
  106. package/msg/it.js +1 -1
  107. package/msg/ja.js +1 -1
  108. package/msg/ka.js +1 -1
  109. package/msg/kab.js +1 -1
  110. package/msg/kbd-cyrl.js +1 -1
  111. package/msg/km.js +1 -1
  112. package/msg/kn.js +1 -1
  113. package/msg/ko.js +1 -1
  114. package/msg/ksh.js +1 -1
  115. package/msg/ku-latn.js +1 -1
  116. package/msg/ky.js +1 -1
  117. package/msg/la.js +1 -1
  118. package/msg/lb.js +1 -1
  119. package/msg/lki.js +1 -1
  120. package/msg/lo.js +1 -1
  121. package/msg/lrc.js +1 -1
  122. package/msg/lt.js +1 -1
  123. package/msg/lv.js +1 -1
  124. package/msg/mg.js +1 -1
  125. package/msg/mk.js +1 -1
  126. package/msg/ml.js +1 -1
  127. package/msg/mnw.js +1 -1
  128. package/msg/ms.js +1 -1
  129. package/msg/my.js +1 -1
  130. package/msg/mzn.js +1 -1
  131. package/msg/nb.js +1 -1
  132. package/msg/ne.js +1 -1
  133. package/msg/nl.js +1 -1
  134. package/msg/oc.js +1 -1
  135. package/msg/olo.js +1 -1
  136. package/msg/pa.js +1 -1
  137. package/msg/pl.js +1 -1
  138. package/msg/pms.js +1 -1
  139. package/msg/ps.js +1 -1
  140. package/msg/pt-br.js +1 -1
  141. package/msg/pt.js +1 -1
  142. package/msg/ro.js +1 -1
  143. package/msg/ru.js +1 -1
  144. package/msg/sc.js +1 -1
  145. package/msg/sco.js +1 -1
  146. package/msg/sd.js +1 -1
  147. package/msg/shn.js +1 -1
  148. package/msg/si.js +1 -1
  149. package/msg/sk.js +1 -1
  150. package/msg/skr-arab.js +1 -1
  151. package/msg/sl.js +1 -1
  152. package/msg/smn.js +1 -1
  153. package/msg/sq.js +1 -1
  154. package/msg/sr-latn.js +1 -1
  155. package/msg/sr.js +1 -1
  156. package/msg/sv.js +1 -1
  157. package/msg/sw.js +1 -1
  158. package/msg/ta.js +1 -1
  159. package/msg/tcy.js +1 -1
  160. package/msg/tdd.js +1 -1
  161. package/msg/te.js +1 -1
  162. package/msg/th.js +1 -1
  163. package/msg/ti.js +1 -1
  164. package/msg/tl.js +1 -1
  165. package/msg/tlh.js +1 -1
  166. package/msg/tr.js +1 -1
  167. package/msg/ug-arab.js +1 -1
  168. package/msg/uk.js +1 -1
  169. package/msg/ur.js +1 -1
  170. package/msg/uz.js +1 -1
  171. package/msg/vi.js +1 -1
  172. package/msg/xmf.js +1 -1
  173. package/msg/yo.js +1 -1
  174. package/msg/yue.js +1 -1
  175. package/msg/zgh.js +1 -1
  176. package/msg/zh-hans.js +1 -1
  177. package/msg/zh-hant.js +1 -1
  178. package/node.js +1 -1
  179. package/package.json +13 -8
  180. package/php.js +1 -1
  181. package/php_compressed.js +2 -3
  182. package/php_compressed.js.map +1 -1
  183. package/python.js +1 -1
  184. package/python_compressed.js +2 -2
  185. package/python_compressed.js.map +1 -1
package/blockly.min.js CHANGED
@@ -155,9 +155,11 @@ a&&hide$$module$build$src$core$widgetdiv()},positionInternal$$module$build$src$c
155
155
  0,c.height+e):positionInternal$$module$build$src$core$widgetdiv(a,e,c.height)},calculateX$$module$build$src$core$widgetdiv=function(a,b,c,d){return d?Math.min(Math.max(b.right-c.width,a.left),a.right-c.width):Math.max(Math.min(b.left,a.right-c.width),a.left)},calculateY$$module$build$src$core$widgetdiv=function(a,b,c){return b.bottom+c.height>=a.bottom?b.top-c.height:b.bottom},register$$module$build$src$core$field_registry=function(a,b){register$$module$build$src$core$registry(Type$$module$build$src$core$registry.FIELD,
156
156
  a,b)},unregister$$module$build$src$core$field_registry=function(a){unregister$$module$build$src$core$registry(Type$$module$build$src$core$registry.FIELD,a)},fromJson$$module$build$src$core$field_registry=function(a){return TEST_ONLY$$module$build$src$core$field_registry.fromJsonInternal(a)},fromJsonInternal$$module$build$src$core$field_registry=function(a){const b=getObject$$module$build$src$core$registry(Type$$module$build$src$core$registry.FIELD,a.type);if(b){if("function"!==typeof b.fromJson)throw new TypeError("returned Field was not a IRegistrableField");
157
157
  return b.fromJson(a)}console.warn("Blockly could not create a field of type "+a.type+". The field is probably not being registered. This could be because the file is not loaded, the field does not register itself (Issue #1584), or the registration is not being reached.");return null},setRole$$module$build$src$core$utils$aria=function(a,b){a.setAttribute(ROLE_ATTRIBUTE$$module$build$src$core$utils$aria,b)},setState$$module$build$src$core$utils$aria=function(a,b,c){Array.isArray(c)&&(c=c.join(" "));
158
- a.setAttribute(ARIA_PREFIX$$module$build$src$core$utils$aria+b,`${c}`)},validateOptions$$module$build$src$core$field_dropdown=function(a){if(!Array.isArray(a))throw TypeError("FieldDropdown options must be an array.");if(!a.length)throw TypeError("FieldDropdown options must not be an empty array.");let b=!1;for(let c=0;c<a.length;c++){const d=a[c];Array.isArray(d)?"string"!==typeof d[1]?(b=!0,console.error("Invalid option["+c+"]: Each FieldDropdown option id must be a string. Found "+d[1]+" in: ",
159
- d)):d[0]&&"string"!==typeof d[0]&&"string"!==typeof d[0].src&&(b=!0,console.error("Invalid option["+c+"]: Each FieldDropdown option must have a string label or image description. Found"+d[0]+" in: ",d)):(b=!0,console.error("Invalid option["+c+"]: Each FieldDropdown option must be an array. Found: ",d))}if(b)throw TypeError("Found invalid FieldDropdown options.");},inherits$$module$build$src$core$utils$object=function(a,b){warn$$module$build$src$core$utils$deprecation("Blockly.utils.object.inherits",
160
- "version 9","version 10");a.superClass_=b.prototype;Object.setPrototypeOf(a,b);a.prototype=Object.create(b.prototype);a.prototype.constructor=a},mixin$$module$build$src$core$utils$object=function(a,b){warn$$module$build$src$core$utils$deprecation("Blockly.utils.object.mixin","May 2022","May 2023","Object.assign");for(const c in b)a[c]=b[c]},deepMerge$$module$build$src$core$utils$object=function(a,b){for(const c in b)a[c]=null!==b[c]&&"object"===typeof b[c]?deepMerge$$module$build$src$core$utils$object(a[c]||
158
+ a.setAttribute(ARIA_PREFIX$$module$build$src$core$utils$aria+b,`${c}`)},isMenuGenerator$$module$build$src$core$field_dropdown=function(a){return a!==Field$$module$build$src$core$field.SKIP_SETUP},trimOptions$$module$build$src$core$field_dropdown=function(a){let b=!1;const c=a.map(([g,h])=>{if("string"===typeof g)return[replaceMessageReferences$$module$build$src$core$utils$parsing(g),h];b=!0;return[null!==g.alt?Object.assign({},g,{alt:replaceMessageReferences$$module$build$src$core$utils$parsing(g.alt)}):
159
+ Object.assign({},g),h]});if(b||2>a.length)return{options:c};var d=c.map(([g])=>g),e=shortestStringLength$$module$build$src$core$utils$string(d);a=commonWordPrefix$$module$build$src$core$utils$string(d,e);const f=commonWordSuffix$$module$build$src$core$utils$string(d,e);if(!a&&!f||e<=a+f)return{options:c};e=a?d[0].substring(0,a-1):void 0;d=f?d[0].substr(1-f):void 0;return{options:applyTrim$$module$build$src$core$field_dropdown(c,a,f),prefix:e,suffix:d}},applyTrim$$module$build$src$core$field_dropdown=
160
+ function(a,b,c){return a.map(([d,e])=>[d.substring(b,d.length-c),e])},validateOptions$$module$build$src$core$field_dropdown=function(a){if(!Array.isArray(a))throw TypeError("FieldDropdown options must be an array.");if(!a.length)throw TypeError("FieldDropdown options must not be an empty array.");let b=!1;for(let c=0;c<a.length;c++){const d=a[c];Array.isArray(d)?"string"!==typeof d[1]?(b=!0,console.error("Invalid option["+c+"]: Each FieldDropdown option id must be a string. Found "+d[1]+" in: ",d)):
161
+ d[0]&&"string"!==typeof d[0]&&"string"!==typeof d[0].src&&(b=!0,console.error("Invalid option["+c+"]: Each FieldDropdown option must have a string label or image description. Found"+d[0]+" in: ",d)):(b=!0,console.error("Invalid option["+c+"]: Each FieldDropdown option must be an array. Found: ",d))}if(b)throw TypeError("Found invalid FieldDropdown options.");},inherits$$module$build$src$core$utils$object=function(a,b){warn$$module$build$src$core$utils$deprecation("Blockly.utils.object.inherits","version 9",
162
+ "version 10");a.superClass_=b.prototype;Object.setPrototypeOf(a,b);a.prototype=Object.create(b.prototype);a.prototype.constructor=a},mixin$$module$build$src$core$utils$object=function(a,b){warn$$module$build$src$core$utils$deprecation("Blockly.utils.object.mixin","May 2022","May 2023","Object.assign");for(const c in b)a[c]=b[c]},deepMerge$$module$build$src$core$utils$object=function(a,b){for(const c in b)a[c]=null!==b[c]&&"object"===typeof b[c]?deepMerge$$module$build$src$core$utils$object(a[c]||
161
163
  Object.create(null),b[c]):b[c];return a},values$$module$build$src$core$utils$object=function(a){warn$$module$build$src$core$utils$deprecation("Blockly.utils.object.values","version 9","version 10","Object.values");return Object.values(a)},convertToolboxDefToJson$$module$build$src$core$utils$toolbox=function(a){if(!a)return null;if(a instanceof Element||"string"===typeof a)a=parseToolboxTree$$module$build$src$core$utils$toolbox(a),a=convertToToolboxJson$$module$build$src$core$utils$toolbox(a);validateToolbox$$module$build$src$core$utils$toolbox(a);
162
164
  return a},validateToolbox$$module$build$src$core$utils$toolbox=function(a){const b=a.kind;a=a.contents;if(b&&b!==FLYOUT_TOOLBOX_KIND$$module$build$src$core$utils$toolbox&&b!==CATEGORY_TOOLBOX_KIND$$module$build$src$core$utils$toolbox)throw Error("Invalid toolbox kind "+b+". Please supply either "+FLYOUT_TOOLBOX_KIND$$module$build$src$core$utils$toolbox+" or "+CATEGORY_TOOLBOX_KIND$$module$build$src$core$utils$toolbox);if(!a)throw Error("Toolbox must have a contents attribute.");},convertFlyoutDefToJsonArray$$module$build$src$core$utils$toolbox=
163
165
  function(a){return a?a.contents?a.contents:Array.isArray(a)&&0<a.length&&!a[0].nodeType?a:xmlToJsonArray$$module$build$src$core$utils$toolbox(a):[]},hasCategories$$module$build$src$core$utils$toolbox=function(a){return TEST_ONLY$$module$build$src$core$utils$toolbox.hasCategoriesInternal(a)},hasCategoriesInternal$$module$build$src$core$utils$toolbox=function(a){if(!a)return!1;const b=a.kind;return b?b===CATEGORY_TOOLBOX_KIND$$module$build$src$core$utils$toolbox:!!a.contents.filter(function(c){return"CATEGORY"===
@@ -233,17 +235,18 @@ preconditionFn(d){return!d.options.readOnly&&!Gesture$$module$build$src$core$ges
233
235
  d.undo(!1);return!0},keyCodes:[a,b,c]})},registerRedo$$module$build$src$core$shortcut_items=function(){const a=ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.createSerializedKey(KeyCodes$$module$build$src$core$utils$keycodes.Z,[KeyCodes$$module$build$src$core$utils$keycodes.SHIFT,KeyCodes$$module$build$src$core$utils$keycodes.CTRL]),b=ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.createSerializedKey(KeyCodes$$module$build$src$core$utils$keycodes.Z,[KeyCodes$$module$build$src$core$utils$keycodes.SHIFT,
234
236
  KeyCodes$$module$build$src$core$utils$keycodes.ALT]),c=ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.createSerializedKey(KeyCodes$$module$build$src$core$utils$keycodes.Z,[KeyCodes$$module$build$src$core$utils$keycodes.SHIFT,KeyCodes$$module$build$src$core$utils$keycodes.META]),d=ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.createSerializedKey(KeyCodes$$module$build$src$core$utils$keycodes.Y,[KeyCodes$$module$build$src$core$utils$keycodes.CTRL]);ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.register({name:names$$module$build$src$core$shortcut_items.REDO,
235
237
  preconditionFn(e){return!Gesture$$module$build$src$core$gesture.inProgress()&&!e.options.readOnly},callback(e){e.hideChaff();e.undo(!0);return!0},keyCodes:[a,b,c,d]})},registerDefaultShortcuts$$module$build$src$core$shortcut_items=function(){registerEscape$$module$build$src$core$shortcut_items();registerDelete$$module$build$src$core$shortcut_items();registerCopy$$module$build$src$core$shortcut_items();registerCut$$module$build$src$core$shortcut_items();registerPaste$$module$build$src$core$shortcut_items();
236
- registerUndo$$module$build$src$core$shortcut_items();registerRedo$$module$build$src$core$shortcut_items()},allProcedures$$module$build$src$core$procedures=function(a){const b=a.getBlocksByType("procedures_defnoreturn",!1).map(function(c){return c.getProcedureDef()});a=a.getBlocksByType("procedures_defreturn",!1).map(function(c){return c.getProcedureDef()});b.sort(procTupleComparator$$module$build$src$core$procedures);a.sort(procTupleComparator$$module$build$src$core$procedures);return[b,a]},procTupleComparator$$module$build$src$core$procedures=
237
- function(a,b){return a[0].localeCompare(b[0],void 0,{sensitivity:"base"})},findLegalName$$module$build$src$core$procedures=function(a,b){if(b.isInFlyout)return a;for(a=a||Msg$$module$build$src$core$msg.UNNAMED_KEY||"unnamed";!isLegalName$$module$build$src$core$procedures(a,b.workspace,b);){const c=a.match(/^(.*?)(\d+)$/);a=c?c[1]+(parseInt(c[2])+1):a+"2"}return a},isLegalName$$module$build$src$core$procedures=function(a,b,c){return!isNameUsed$$module$build$src$core$procedures(a,b,c)},isNameUsed$$module$build$src$core$procedures=
238
- function(a,b,c){b=b.getAllBlocks(!1);for(let e=0;e<b.length;e++)if(b[e]!==c){var d=b[e];if(d.getProcedureDef&&(d=d.getProcedureDef(),Names$$module$build$src$core$names.equals(d[0],a)))return!0}return!1},rename$$module$build$src$core$procedures=function(a){var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;a=a.trim();const c=findLegalName$$module$build$src$core$procedures(a,b),d=this.getValue();if(d!==a&&d!==c)for(a=b.workspace.getAllBlocks(!1),b=0;b<a.length;b++){const e=
239
- a[b];e.renameProcedure&&e.renameProcedure(d,c)}return c},flyoutCategory$$module$build$src$core$procedures=function(a){function b(f,g){for(let k=0;k<f.length;k++){var h=f[k][0];const l=f[k][1],m=createElement$$module$build$src$core$utils$xml("block");m.setAttribute("type",g);m.setAttribute("gap","16");const n=createElement$$module$build$src$core$utils$xml("mutation");n.setAttribute("name",h);m.appendChild(n);for(h=0;h<l.length;h++){const p=createElement$$module$build$src$core$utils$xml("arg");p.setAttribute("name",
240
- l[h]);n.appendChild(p)}c.push(m)}}const c=[];if(Blocks$$module$build$src$core$blocks.procedures_defnoreturn){var d=createElement$$module$build$src$core$utils$xml("block");d.setAttribute("type","procedures_defnoreturn");d.setAttribute("gap","16");var e=createElement$$module$build$src$core$utils$xml("field");e.setAttribute("name","NAME");e.appendChild(createTextNode$$module$build$src$core$utils$xml(Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_PROCEDURE));d.appendChild(e);c.push(d)}Blocks$$module$build$src$core$blocks.procedures_defreturn&&
241
- (d=createElement$$module$build$src$core$utils$xml("block"),d.setAttribute("type","procedures_defreturn"),d.setAttribute("gap","16"),e=createElement$$module$build$src$core$utils$xml("field"),e.setAttribute("name","NAME"),e.appendChild(createTextNode$$module$build$src$core$utils$xml(Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_PROCEDURE)),d.appendChild(e),c.push(d));Blocks$$module$build$src$core$blocks.procedures_ifreturn&&(d=createElement$$module$build$src$core$utils$xml("block"),d.setAttribute("type",
242
- "procedures_ifreturn"),d.setAttribute("gap","16"),c.push(d));c.length&&c[c.length-1].setAttribute("gap","24");a=allProcedures$$module$build$src$core$procedures(a);b(a[0],"procedures_callnoreturn");b(a[1],"procedures_callreturn");return c},updateMutatorFlyout$$module$build$src$core$procedures=function(a){var b=[],c=a.getBlocksByType("procedures_mutatorarg",!1);for(let f=0,g;g=c[f];f++)b.push(g.getFieldValue("NAME"));c=createElement$$module$build$src$core$utils$xml("xml");const d=createElement$$module$build$src$core$utils$xml("block");
243
- d.setAttribute("type","procedures_mutatorarg");const e=createElement$$module$build$src$core$utils$xml("field");e.setAttribute("name","NAME");b=generateUniqueNameFromOptions$$module$build$src$core$variables(DEFAULT_ARG$$module$build$src$core$procedures,b);b=createTextNode$$module$build$src$core$utils$xml(b);e.appendChild(b);d.appendChild(e);c.appendChild(d);a.updateToolbox(c)},mutatorOpenListener$$module$build$src$core$procedures=function(a){if(a.type===BUBBLE_OPEN$$module$build$src$core$events$utils&&
244
- "mutator"===a.bubbleType&&a.isOpen&&a.blockId){a=getWorkspaceById$$module$build$src$core$common(a.workspaceId).getBlockById(a.blockId);var b=a.type;if("procedures_defnoreturn"===b||"procedures_defreturn"===b)a=a.mutator.getWorkspace(),updateMutatorFlyout$$module$build$src$core$procedures(a),a.addChangeListener(mutatorChangeListener$$module$build$src$core$procedures)}},mutatorChangeListener$$module$build$src$core$procedures=function(a){if(a.type===CREATE$$module$build$src$core$events$utils||a.type===
245
- DELETE$$module$build$src$core$events$utils||a.type===CHANGE$$module$build$src$core$events$utils)a=getWorkspaceById$$module$build$src$core$common(a.workspaceId),updateMutatorFlyout$$module$build$src$core$procedures(a)},getCallers$$module$build$src$core$procedures=function(a,b){const c=[];b=b.getAllBlocks(!1);for(let e=0;e<b.length;e++){var d=b[e];d.getProcedureCall&&(d=d.getProcedureCall())&&Names$$module$build$src$core$names.equals(d,a)&&c.push(b[e])}return c},mutateCallers$$module$build$src$core$procedures=
246
- function(a){const b=getRecordUndo$$module$build$src$core$events$utils();var c=a.getProcedureDef()[0];const d=a.mutationToDom(!0);a=getCallers$$module$build$src$core$procedures(c,a.workspace);for(let f=0,g;g=a[f];f++){c=(c=g.mutationToDom())&&domToText$$module$build$src$core$xml(c);g.domToMutation&&g.domToMutation(d);var e=g.mutationToDom();e=e&&domToText$$module$build$src$core$xml(e);c!==e&&(setRecordUndo$$module$build$src$core$events$utils(!1),fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(g,
238
+ registerUndo$$module$build$src$core$shortcut_items();registerRedo$$module$build$src$core$shortcut_items()},isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block=function(a){return void 0!==a.doProcedureUpdate},triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures=function(a){for(const b of a.getAllBlocks(!1))isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block(b)&&b.doProcedureUpdate()},allProcedures$$module$build$src$core$procedures=function(a){const b=
239
+ a.getBlocksByType("procedures_defnoreturn",!1).map(function(c){return c.getProcedureDef()});a=a.getBlocksByType("procedures_defreturn",!1).map(function(c){return c.getProcedureDef()});b.sort(procTupleComparator$$module$build$src$core$procedures);a.sort(procTupleComparator$$module$build$src$core$procedures);return[b,a]},procTupleComparator$$module$build$src$core$procedures=function(a,b){return a[0].localeCompare(b[0],void 0,{sensitivity:"base"})},findLegalName$$module$build$src$core$procedures=function(a,
240
+ b){if(b.isInFlyout)return a;for(a=a||Msg$$module$build$src$core$msg.UNNAMED_KEY||"unnamed";!isLegalName$$module$build$src$core$procedures(a,b.workspace,b);){const c=a.match(/^(.*?)(\d+)$/);a=c?c[1]+(parseInt(c[2])+1):a+"2"}return a},isLegalName$$module$build$src$core$procedures=function(a,b,c){return!isNameUsed$$module$build$src$core$procedures(a,b,c)},isNameUsed$$module$build$src$core$procedures=function(a,b,c){b=b.getAllBlocks(!1);for(let e=0;e<b.length;e++)if(b[e]!==c){var d=b[e];if(d.getProcedureDef&&
241
+ (d=d.getProcedureDef(),Names$$module$build$src$core$names.equals(d[0],a)))return!0}return!1},rename$$module$build$src$core$procedures=function(a){var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;a=a.trim();const c=findLegalName$$module$build$src$core$procedures(a,b),d=this.getValue();if(d!==a&&d!==c)for(a=b.workspace.getAllBlocks(!1),b=0;b<a.length;b++){const e=a[b];e.renameProcedure&&e.renameProcedure(d,c)}return c},flyoutCategory$$module$build$src$core$procedures=
242
+ function(a){function b(f,g){for(let k=0;k<f.length;k++){var h=f[k][0];const l=f[k][1],m=createElement$$module$build$src$core$utils$xml("block");m.setAttribute("type",g);m.setAttribute("gap","16");const n=createElement$$module$build$src$core$utils$xml("mutation");n.setAttribute("name",h);m.appendChild(n);for(h=0;h<l.length;h++){const p=createElement$$module$build$src$core$utils$xml("arg");p.setAttribute("name",l[h]);n.appendChild(p)}c.push(m)}}const c=[];if(Blocks$$module$build$src$core$blocks.procedures_defnoreturn){var d=
243
+ createElement$$module$build$src$core$utils$xml("block");d.setAttribute("type","procedures_defnoreturn");d.setAttribute("gap","16");var e=createElement$$module$build$src$core$utils$xml("field");e.setAttribute("name","NAME");e.appendChild(createTextNode$$module$build$src$core$utils$xml(Msg$$module$build$src$core$msg.PROCEDURES_DEFNORETURN_PROCEDURE));d.appendChild(e);c.push(d)}Blocks$$module$build$src$core$blocks.procedures_defreturn&&(d=createElement$$module$build$src$core$utils$xml("block"),d.setAttribute("type",
244
+ "procedures_defreturn"),d.setAttribute("gap","16"),e=createElement$$module$build$src$core$utils$xml("field"),e.setAttribute("name","NAME"),e.appendChild(createTextNode$$module$build$src$core$utils$xml(Msg$$module$build$src$core$msg.PROCEDURES_DEFRETURN_PROCEDURE)),d.appendChild(e),c.push(d));Blocks$$module$build$src$core$blocks.procedures_ifreturn&&(d=createElement$$module$build$src$core$utils$xml("block"),d.setAttribute("type","procedures_ifreturn"),d.setAttribute("gap","16"),c.push(d));c.length&&
245
+ c[c.length-1].setAttribute("gap","24");a=allProcedures$$module$build$src$core$procedures(a);b(a[0],"procedures_callnoreturn");b(a[1],"procedures_callreturn");return c},updateMutatorFlyout$$module$build$src$core$procedures=function(a){var b=[],c=a.getBlocksByType("procedures_mutatorarg",!1);for(let f=0,g;g=c[f];f++)b.push(g.getFieldValue("NAME"));c=createElement$$module$build$src$core$utils$xml("xml");const d=createElement$$module$build$src$core$utils$xml("block");d.setAttribute("type","procedures_mutatorarg");
246
+ const e=createElement$$module$build$src$core$utils$xml("field");e.setAttribute("name","NAME");b=generateUniqueNameFromOptions$$module$build$src$core$variables(DEFAULT_ARG$$module$build$src$core$procedures,b);b=createTextNode$$module$build$src$core$utils$xml(b);e.appendChild(b);d.appendChild(e);c.appendChild(d);a.updateToolbox(c)},mutatorOpenListener$$module$build$src$core$procedures=function(a){if(a.type===BUBBLE_OPEN$$module$build$src$core$events$utils&&"mutator"===a.bubbleType&&a.isOpen&&a.blockId){a=
247
+ getWorkspaceById$$module$build$src$core$common(a.workspaceId).getBlockById(a.blockId);var b=a.type;if("procedures_defnoreturn"===b||"procedures_defreturn"===b)a=a.mutator.getWorkspace(),updateMutatorFlyout$$module$build$src$core$procedures(a),a.addChangeListener(mutatorChangeListener$$module$build$src$core$procedures)}},mutatorChangeListener$$module$build$src$core$procedures=function(a){if(a.type===CREATE$$module$build$src$core$events$utils||a.type===DELETE$$module$build$src$core$events$utils||a.type===
248
+ CHANGE$$module$build$src$core$events$utils)a=getWorkspaceById$$module$build$src$core$common(a.workspaceId),updateMutatorFlyout$$module$build$src$core$procedures(a)},getCallers$$module$build$src$core$procedures=function(a,b){const c=[];b=b.getAllBlocks(!1);for(let e=0;e<b.length;e++){var d=b[e];d.getProcedureCall&&(d=d.getProcedureCall())&&Names$$module$build$src$core$names.equals(d,a)&&c.push(b[e])}return c},mutateCallers$$module$build$src$core$procedures=function(a){const b=getRecordUndo$$module$build$src$core$events$utils();
249
+ var c=a.getProcedureDef()[0];const d=a.mutationToDom(!0);a=getCallers$$module$build$src$core$procedures(c,a.workspace);for(let f=0,g;g=a[f];f++){c=(c=g.mutationToDom())&&domToText$$module$build$src$core$xml(c);g.domToMutation&&g.domToMutation(d);var e=g.mutationToDom();e=e&&domToText$$module$build$src$core$xml(e);c!==e&&(setRecordUndo$$module$build$src$core$events$utils(!1),fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(g,
247
250
  "mutation",null,c,e)),setRecordUndo$$module$build$src$core$events$utils(b))}},getDefinition$$module$build$src$core$procedures=function(a,b){b=b.getAllBlocks(!1);for(let d=0;d<b.length;d++){var c=b[d];if(c.getProcedureDef&&(c=c.getProcedureDef())&&Names$$module$build$src$core$names.equals(c[0],a))return b[d]}return null},isDynamicShape$$module$build$src$core$renderers$common$constants=function(a){return a.isDynamic},isDebuggerEnabled$$module$build$src$core$renderers$common$debug=function(){return useDebugger$$module$build$src$core$renderers$common$debug},
248
251
  startDebugger$$module$build$src$core$renderers$common$debug=function(){warn$$module$build$src$core$utils$deprecation("Blockly.blockRendering.debug.startDebugger()","version 8","version 10","the debug renderer in @blockly/dev-tools (See https://www.npmjs.com/package/@blockly/dev-tools.)");useDebugger$$module$build$src$core$renderers$common$debug=!0},stopDebugger$$module$build$src$core$renderers$common$debug=function(){warn$$module$build$src$core$utils$deprecation("Blockly.blockRendering.debug.stopDebugger()",
249
252
  "version 8","version 10","the debug renderer in @blockly/dev-tools (See https://www.npmjs.com/package/@blockly/dev-tools.)");useDebugger$$module$build$src$core$renderers$common$debug=!1},register$$module$build$src$core$renderers$common$block_rendering=function(a,b){register$$module$build$src$core$registry(Type$$module$build$src$core$registry.RENDERER,a,b)},unregister$$module$build$src$core$renderers$common$block_rendering=function(a){unregister$$module$build$src$core$registry(Type$$module$build$src$core$registry.RENDERER,
@@ -255,31 +258,33 @@ flyoutCategoryBlocks$$module$build$src$core$variables_dynamic=function(a){a=a.ge
255
258
  for(let d=0,e;e=a[d];d++)c=createElement$$module$build$src$core$utils$xml("block"),c.setAttribute("type","variables_get_dynamic"),c.setAttribute("gap","8"),c.appendChild(generateVariableFieldDom$$module$build$src$core$variables(e)),b.push(c)}}return b},resizeSvgContents$$module$build$src$core$workspace_svg=function(a){a.resizeContents()},save$$module$build$src$core$serialization$workspaces=function(a){const b=Object.create(null),c=getAllItems$$module$build$src$core$registry(Type$$module$build$src$core$registry.SERIALIZER,
256
259
  !0);for(const d in c){let e;const f=null==(e=c[d])?void 0:e.save(a);f&&(b[d]=f)}return b},load$$module$build$src$core$serialization$workspaces=function(a,b,{recordUndo:c=!1}={}){var d=getAllItems$$module$build$src$core$registry(Type$$module$build$src$core$registry.SERIALIZER,!0);if(d){d=Object.entries(d).sort((f,g)=>g[1].priority-f[1].priority);var e=getRecordUndo$$module$build$src$core$events$utils();setRecordUndo$$module$build$src$core$events$utils(c);(c=getGroup$$module$build$src$core$events$utils())||
257
260
  setGroup$$module$build$src$core$events$utils(!0);startTextWidthCache$$module$build$src$core$utils$dom();b instanceof WorkspaceSvg$$module$build$src$core$workspace_svg&&b.setResizesEnabled(!1);for(const [,f]of d.reverse()){let g;null==(g=f)||g.clear(b)}for(let [f,g]of d.reverse())if(a[f]){let h;null==(h=g)||h.load(a[f],b)}b instanceof WorkspaceSvg$$module$build$src$core$workspace_svg&&b.setResizesEnabled(!0);stopTextWidthCache$$module$build$src$core$utils$dom();fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(FINISHED_LOADING$$module$build$src$core$events$utils))(b));
258
- setGroup$$module$build$src$core$events$utils(c);setRecordUndo$$module$build$src$core$events$utils(e)}},bumpObjectIntoBounds$$module$build$src$core$bump_objects=function(a,b,c){const d=c.getBoundingRectangle(),e=d.right-d.left,f=clamp$$module$build$src$core$utils$math(b.top,d.top,b.top+b.height-(d.bottom-d.top))-d.top;let g=b.left;b=b.left+b.width-e;a.RTL?g=Math.min(b,g):b=Math.max(g,b);return(a=clamp$$module$build$src$core$utils$math(g,d.left,b)-d.left)||f?(c.moveBy(a,f),!0):!1},bumpIntoBoundsHandler$$module$build$src$core$bump_objects=
259
- function(a){return b=>{var c=a.getMetricsManager();if(c.hasFixedEdges()&&!a.isDragging()){var d;if(-1!==BUMP_EVENTS$$module$build$src$core$events$utils.indexOf(null!=(d=b.type)?d:"")){d=c.getScrollMetrics(!0);const e=extractObjectFromEvent$$module$build$src$core$bump_objects(a,b);e&&(c=getGroup$$module$build$src$core$events$utils(),setGroup$$module$build$src$core$events$utils(b.group),bumpObjectIntoBounds$$module$build$src$core$bump_objects(a,d,e)&&!b.group&&console.warn("Moved object in bounds but there was no event group. This may break undo."),
260
- null!==c&&setGroup$$module$build$src$core$events$utils(c))}else b.type===VIEWPORT_CHANGE$$module$build$src$core$events$utils&&b.scale&&b.oldScale&&b.scale>b.oldScale&&bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects(a)}}},extractObjectFromEvent$$module$build$src$core$bump_objects=function(a,b){let c=null;switch(b.type){case CREATE$$module$build$src$core$events$utils:case MOVE$$module$build$src$core$events$utils:(c=a.getBlockById(b.blockId))&&(c=c.getRootBlock());break;case COMMENT_CREATE$$module$build$src$core$events$utils:case COMMENT_MOVE$$module$build$src$core$events$utils:c=
261
- a.getCommentById(b.commentId)}return c},bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects=function(a){var b=a.getMetricsManager();if(b.hasFixedEdges()&&!a.isDragging()){b=b.getScrollMetrics(!0);var c=a.getTopBoundedElements();for(let d=0,e;e=c[d];d++)bumpObjectIntoBounds$$module$build$src$core$bump_objects(a,b,e)}},inject$$module$build$src$core$inject=function(a,b){"string"===typeof a&&(a=document.getElementById(a)||document.querySelector(a));if(!a||!containsNode$$module$build$src$core$utils$dom(document,
262
- a))throw Error("Error: container is not in current document.");b=new Options$$module$build$src$core$options(b||{});const c=document.createElement("div");c.className="injectionDiv";c.tabIndex=0;setState$$module$build$src$core$utils$aria(c,State$$module$build$src$core$utils$aria.LABEL,Msg$$module$build$src$core$msg.WORKSPACE_ARIA_LABEL);a.appendChild(c);a=createDom$$module$build$src$core$inject(c,b);const d=new BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface(c),e=new WorkspaceDragSurfaceSvg$$module$build$src$core$workspace_drag_surface_svg(c),
263
- f=createMainWorkspace$$module$build$src$core$inject(a,b,d,e);init$$module$build$src$core$inject(f);setMainWorkspace$$module$build$src$core$common(f);svgResize$$module$build$src$core$common(f);c.addEventListener("focusin",function(){setMainWorkspace$$module$build$src$core$common(f)});return f},createDom$$module$build$src$core$inject=function(a,b){a.setAttribute("dir","LTR");inject$$module$build$src$core$css(b.hasCss,b.pathToMedia);a=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,
264
- {xmlns:SVG_NS$$module$build$src$core$utils$dom,"xmlns:html":HTML_NS$$module$build$src$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$build$src$core$utils$dom,version:"1.1","class":"blocklySvg",tabindex:"0"},a);const c=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.DEFS,{},a),d=String(Math.random()).substring(2);b.gridPattern=Grid$$module$build$src$core$grid.createDom(d,b.gridOptions,c);return a},createMainWorkspace$$module$build$src$core$inject=function(a,b,
265
- c,d){b.parentWorkspace=null;b=new WorkspaceSvg$$module$build$src$core$workspace_svg(b,c,d);c=b.options;b.scale=c.zoomOptions.startScale;a.appendChild(b.createDom("blocklyMainBackground"));d=b.getInjectionDiv();var e=b.getRenderer().getClassName();e&&addClass$$module$build$src$core$utils$dom(d,e);(e=b.getTheme().getClassName())&&addClass$$module$build$src$core$utils$dom(d,e);!c.hasCategories&&c.languageTree&&(d=b.addFlyout(Svg$$module$build$src$core$utils$svg.SVG),insertAfter$$module$build$src$core$utils$dom(d,
266
- a));c.hasTrashcan&&b.addTrashcan();c.zoomOptions&&c.zoomOptions.controls&&b.addZoomControls();b.getThemeManager().subscribe(a,"workspaceBackgroundColour","background-color");b.translate(0,0);b.addChangeListener(bumpIntoBoundsHandler$$module$build$src$core$bump_objects(b));svgResize$$module$build$src$core$common(b);createDom$$module$build$src$core$widgetdiv();createDom$$module$build$src$core$dropdowndiv();createDom$$module$build$src$core$tooltip();return b},init$$module$build$src$core$inject=function(a){const b=
267
- a.options;var c=a.getParentSvg();conditionalBind$$module$build$src$core$browser_events(c.parentNode,"contextmenu",null,function(d){isTargetInput$$module$build$src$core$browser_events(d)||d.preventDefault()});c=conditionalBind$$module$build$src$core$browser_events(window,"resize",null,function(){a.hideChaff(!0);svgResize$$module$build$src$core$common(a);bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects(a)});a.setResizeHandlerWrapper(c);bindDocumentEvents$$module$build$src$core$inject();
268
- if(b.languageTree){c=a.getToolbox();const d=a.getFlyout(!0);c?c.init():d&&(d.init(a),d.show(b.languageTree),"function"===typeof d.scrollToStart&&d.scrollToStart())}b.hasTrashcan&&a.trashcan.init();b.zoomOptions&&b.zoomOptions.controls&&a.zoomControls_.init();b.moveOptions&&b.moveOptions.scrollbars?(a.scrollbar=new ScrollbarPair$$module$build$src$core$scrollbar_pair(a,!0===b.moveOptions.scrollbars||!!b.moveOptions.scrollbars.horizontal,!0===b.moveOptions.scrollbars||!!b.moveOptions.scrollbars.vertical,
269
- "blocklyMainWorkspaceScrollbar"),a.scrollbar.resize()):a.setMetrics({x:.5,y:.5});b.hasSounds&&loadSounds$$module$build$src$core$inject(b.pathToMedia,a)},onKeyDown$$module$build$src$core$inject=function(a){const b=getMainWorkspace$$module$build$src$core$common();if(b&&!(isTargetInput$$module$build$src$core$browser_events(a)||b.rendered&&!b.isVisible()))ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.onKeyDown(b,a)},bindDocumentEvents$$module$build$src$core$inject=function(){documentEventsBound$$module$build$src$core$inject||
270
- (conditionalBind$$module$build$src$core$browser_events(document,"scroll",null,function(){const a=getAllWorkspaces$$module$build$src$core$common();for(let b=0,c;c=a[b];b++)c instanceof WorkspaceSvg$$module$build$src$core$workspace_svg&&c.updateInverseScreenCTM()}),conditionalBind$$module$build$src$core$browser_events(document,"keydown",null,onKeyDown$$module$build$src$core$inject),bind$$module$build$src$core$browser_events(document,"touchend",null,longStop$$module$build$src$core$touch),bind$$module$build$src$core$browser_events(document,
271
- "touchcancel",null,longStop$$module$build$src$core$touch),IPAD$$module$build$src$core$utils$useragent&&conditionalBind$$module$build$src$core$browser_events(window,"orientationchange",document,function(){svgResize$$module$build$src$core$common(getMainWorkspace$$module$build$src$core$common())}));documentEventsBound$$module$build$src$core$inject=!0},loadSounds$$module$build$src$core$inject=function(a,b){function c(){for(;e.length;)unbind$$module$build$src$core$browser_events(e.pop());d.preload()}const d=
272
- b.getAudioManager();d.load([a+"click.mp3",a+"click.wav",a+"click.ogg"],"click");d.load([a+"disconnect.wav",a+"disconnect.mp3",a+"disconnect.ogg"],"disconnect");d.load([a+"delete.mp3",a+"delete.ogg",a+"delete.wav"],"delete");const e=[];e.push(conditionalBind$$module$build$src$core$browser_events(document,"mousemove",null,c,!0));e.push(conditionalBind$$module$build$src$core$browser_events(document,"touchstart",null,c,!0))},registerUndo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.UNDO},
273
- preconditionFn(a){return 0<a.workspace.getUndoStack().length?"enabled":"disabled"},callback(a){a.workspace.undo(!1)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"undoWorkspace",weight:1})},registerRedo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.REDO},preconditionFn(a){return 0<a.workspace.getRedoStack().length?
274
- "enabled":"disabled"},callback(a){a.workspace.undo(!0)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"redoWorkspace",weight:2})},registerCleanup$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.CLEAN_UP},preconditionFn(a){return a.workspace.isMovable()?1<a.workspace.getTopBlocks(!1).length?"enabled":"disabled":
275
- "hidden"},callback(a){a.workspace.cleanUp()},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"cleanWorkspace",weight:3})},toggleOption_$$module$build$src$core$contextmenu_items=function(a,b){function c(f){e--;f.setCollapsed(a);0===e&&setGroup$$module$build$src$core$events$utils(!1)}let d=0,e=0;setGroup$$module$build$src$core$events$utils(!0);for(let f=0;f<b.length;f++){let g=b[f];for(;g;)e++,setTimeout(c.bind(null,g),d),g=g.getNextBlock(),d+=10}},registerCollapse$$module$build$src$core$contextmenu_items=
276
- function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.COLLAPSE_ALL},preconditionFn(a){if(a.workspace.options.collapse){a=a.workspace.getTopBlocks(!1);for(let b=0;b<a.length;b++){let c=a[b];for(;c;){if(!c.isCollapsed())return"enabled";c=c.getNextBlock()}}return"disabled"}return"hidden"},callback(a){toggleOption_$$module$build$src$core$contextmenu_items(!0,a.workspace.getTopBlocks(!0))},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,
277
- id:"collapseWorkspace",weight:4})},registerExpand$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.EXPAND_ALL},preconditionFn(a){if(a.workspace.options.collapse){a=a.workspace.getTopBlocks(!1);for(let b=0;b<a.length;b++){let c=a[b];for(;c;){if(c.isCollapsed())return"enabled";c=c.getNextBlock()}}return"disabled"}return"hidden"},callback(a){toggleOption_$$module$build$src$core$contextmenu_items(!1,
278
- a.workspace.getTopBlocks(!0))},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"expandWorkspace",weight:5})},addDeletableBlocks_$$module$build$src$core$contextmenu_items=function(a,b){if(a.isDeletable())Array.prototype.push.apply(b,a.getDescendants(!1));else{a=a.getChildren(!1);for(let c=0;c<a.length;c++)addDeletableBlocks_$$module$build$src$core$contextmenu_items(a[c],b)}},getDeletableBlocks_$$module$build$src$core$contextmenu_items=function(a){const b=
279
- [];a=a.getTopBlocks(!0);for(let c=0;c<a.length;c++)addDeletableBlocks_$$module$build$src$core$contextmenu_items(a[c],b);return b},deleteNext_$$module$build$src$core$contextmenu_items=function(a,b){setGroup$$module$build$src$core$events$utils(b);const c=a.shift();c&&(c.isDeadOrDying()?deleteNext_$$module$build$src$core$contextmenu_items(a,b):(c.dispose(!1,!0),setTimeout(deleteNext_$$module$build$src$core$contextmenu_items,10,a,b)));setGroup$$module$build$src$core$events$utils(!1)},registerDeleteAll$$module$build$src$core$contextmenu_items=
280
- function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(a){if(!a.workspace)return"";a=getDeletableBlocks_$$module$build$src$core$contextmenu_items(a.workspace).length;return 1===a?Msg$$module$build$src$core$msg.DELETE_BLOCK:Msg$$module$build$src$core$msg.DELETE_X_BLOCKS.replace("%1",String(a))},preconditionFn(a){return a.workspace?0<getDeletableBlocks_$$module$build$src$core$contextmenu_items(a.workspace).length?"enabled":"disabled":"disabled"},callback(a){if(a.workspace){a.workspace.cancelCurrentGesture();
281
- var b=getDeletableBlocks_$$module$build$src$core$contextmenu_items(a.workspace),c=genUid$$module$build$src$core$utils$idgenerator();2>b.length?deleteNext_$$module$build$src$core$contextmenu_items(b,c):confirm$$module$build$src$core$dialog(Msg$$module$build$src$core$msg.DELETE_ALL_BLOCKS.replace("%1",String(b.length)),function(d){d&&deleteNext_$$module$build$src$core$contextmenu_items(b,c)})}},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"workspaceDelete",
282
- weight:6})},registerWorkspaceOptions_$$module$build$src$core$contextmenu_items=function(){registerUndo$$module$build$src$core$contextmenu_items();registerRedo$$module$build$src$core$contextmenu_items();registerCleanup$$module$build$src$core$contextmenu_items();registerCollapse$$module$build$src$core$contextmenu_items();registerExpand$$module$build$src$core$contextmenu_items();registerDeleteAll$$module$build$src$core$contextmenu_items()},registerDuplicate$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.DUPLICATE_BLOCK},
261
+ setGroup$$module$build$src$core$events$utils(c);setRecordUndo$$module$build$src$core$events$utils(e)}},saveProcedure$$module$build$src$core$serialization$procedures=function(a){const b={id:a.getId(),name:a.getName(),returnTypes:a.getReturnTypes()};if(!a.getParameters().length)return b;b.parameters=a.getParameters().map(c=>saveParameter$$module$build$src$core$serialization$procedures(c));return b},saveParameter$$module$build$src$core$serialization$procedures=function(a){const b={id:a.getId(),name:a.getName()};
262
+ if(!a.getTypes().length)return b;b.types=a.getTypes();return b},loadProcedure$$module$build$src$core$serialization$procedures=function(a,b,c,d){a=(new a(d,c.name,c.id)).setReturnTypes(c.returnTypes);if(!c.parameters)return a;for(const [e,f]of c.parameters.entries())a.insertParameter(loadParameter$$module$build$src$core$serialization$procedures(b,f,d),e);return a},loadParameter$$module$build$src$core$serialization$procedures=function(a,b,c){return(new a(c,b.name,b.id)).setTypes(b.types||[])},bumpObjectIntoBounds$$module$build$src$core$bump_objects=
263
+ function(a,b,c){const d=c.getBoundingRectangle(),e=d.right-d.left,f=clamp$$module$build$src$core$utils$math(b.top,d.top,b.top+b.height-(d.bottom-d.top))-d.top;let g=b.left;b=b.left+b.width-e;a.RTL?g=Math.min(b,g):b=Math.max(g,b);return(a=clamp$$module$build$src$core$utils$math(g,d.left,b)-d.left)||f?(c.moveBy(a,f),!0):!1},bumpIntoBoundsHandler$$module$build$src$core$bump_objects=function(a){return b=>{var c=a.getMetricsManager();if(c.hasFixedEdges()&&!a.isDragging()){var d;if(-1!==BUMP_EVENTS$$module$build$src$core$events$utils.indexOf(null!=
264
+ (d=b.type)?d:"")){d=c.getScrollMetrics(!0);const e=extractObjectFromEvent$$module$build$src$core$bump_objects(a,b);e&&(c=getGroup$$module$build$src$core$events$utils(),setGroup$$module$build$src$core$events$utils(b.group),bumpObjectIntoBounds$$module$build$src$core$bump_objects(a,d,e)&&!b.group&&console.warn("Moved object in bounds but there was no event group. This may break undo."),null!==c&&setGroup$$module$build$src$core$events$utils(c))}else b.type===VIEWPORT_CHANGE$$module$build$src$core$events$utils&&
265
+ b.scale&&b.oldScale&&b.scale>b.oldScale&&bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects(a)}}},extractObjectFromEvent$$module$build$src$core$bump_objects=function(a,b){let c=null;switch(b.type){case CREATE$$module$build$src$core$events$utils:case MOVE$$module$build$src$core$events$utils:(c=a.getBlockById(b.blockId))&&(c=c.getRootBlock());break;case COMMENT_CREATE$$module$build$src$core$events$utils:case COMMENT_MOVE$$module$build$src$core$events$utils:c=a.getCommentById(b.commentId)}return c},
266
+ bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects=function(a){var b=a.getMetricsManager();if(b.hasFixedEdges()&&!a.isDragging()){b=b.getScrollMetrics(!0);var c=a.getTopBoundedElements();for(let d=0,e;e=c[d];d++)bumpObjectIntoBounds$$module$build$src$core$bump_objects(a,b,e)}},inject$$module$build$src$core$inject=function(a,b){"string"===typeof a&&(a=document.getElementById(a)||document.querySelector(a));if(!a||!containsNode$$module$build$src$core$utils$dom(document,a))throw Error("Error: container is not in current document.");
267
+ b=new Options$$module$build$src$core$options(b||{});const c=document.createElement("div");c.className="injectionDiv";c.tabIndex=0;setState$$module$build$src$core$utils$aria(c,State$$module$build$src$core$utils$aria.LABEL,Msg$$module$build$src$core$msg.WORKSPACE_ARIA_LABEL);a.appendChild(c);a=createDom$$module$build$src$core$inject(c,b);const d=new BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface(c),e=new WorkspaceDragSurfaceSvg$$module$build$src$core$workspace_drag_surface_svg(c),f=createMainWorkspace$$module$build$src$core$inject(a,
268
+ b,d,e);init$$module$build$src$core$inject(f);setMainWorkspace$$module$build$src$core$common(f);svgResize$$module$build$src$core$common(f);c.addEventListener("focusin",function(){setMainWorkspace$$module$build$src$core$common(f)});return f},createDom$$module$build$src$core$inject=function(a,b){a.setAttribute("dir","LTR");inject$$module$build$src$core$css(b.hasCss,b.pathToMedia);a=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{xmlns:SVG_NS$$module$build$src$core$utils$dom,
269
+ "xmlns:html":HTML_NS$$module$build$src$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$build$src$core$utils$dom,version:"1.1","class":"blocklySvg",tabindex:"0"},a);const c=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.DEFS,{},a),d=String(Math.random()).substring(2);b.gridPattern=Grid$$module$build$src$core$grid.createDom(d,b.gridOptions,c);return a},createMainWorkspace$$module$build$src$core$inject=function(a,b,c,d){b.parentWorkspace=null;b=new WorkspaceSvg$$module$build$src$core$workspace_svg(b,
270
+ c,d);c=b.options;b.scale=c.zoomOptions.startScale;a.appendChild(b.createDom("blocklyMainBackground"));d=b.getInjectionDiv();var e=b.getRenderer().getClassName();e&&addClass$$module$build$src$core$utils$dom(d,e);(e=b.getTheme().getClassName())&&addClass$$module$build$src$core$utils$dom(d,e);!c.hasCategories&&c.languageTree&&(d=b.addFlyout(Svg$$module$build$src$core$utils$svg.SVG),insertAfter$$module$build$src$core$utils$dom(d,a));c.hasTrashcan&&b.addTrashcan();c.zoomOptions&&c.zoomOptions.controls&&
271
+ b.addZoomControls();b.getThemeManager().subscribe(a,"workspaceBackgroundColour","background-color");b.translate(0,0);b.addChangeListener(bumpIntoBoundsHandler$$module$build$src$core$bump_objects(b));svgResize$$module$build$src$core$common(b);createDom$$module$build$src$core$widgetdiv();createDom$$module$build$src$core$dropdowndiv();createDom$$module$build$src$core$tooltip();return b},init$$module$build$src$core$inject=function(a){const b=a.options;var c=a.getParentSvg();conditionalBind$$module$build$src$core$browser_events(c.parentNode,
272
+ "contextmenu",null,function(d){isTargetInput$$module$build$src$core$browser_events(d)||d.preventDefault()});c=conditionalBind$$module$build$src$core$browser_events(window,"resize",null,function(){a.hideChaff(!0);svgResize$$module$build$src$core$common(a);bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects(a)});a.setResizeHandlerWrapper(c);bindDocumentEvents$$module$build$src$core$inject();if(b.languageTree){c=a.getToolbox();const d=a.getFlyout(!0);c?c.init():d&&(d.init(a),d.show(b.languageTree),
273
+ "function"===typeof d.scrollToStart&&d.scrollToStart())}b.hasTrashcan&&a.trashcan.init();b.zoomOptions&&b.zoomOptions.controls&&a.zoomControls_.init();b.moveOptions&&b.moveOptions.scrollbars?(a.scrollbar=new ScrollbarPair$$module$build$src$core$scrollbar_pair(a,!0===b.moveOptions.scrollbars||!!b.moveOptions.scrollbars.horizontal,!0===b.moveOptions.scrollbars||!!b.moveOptions.scrollbars.vertical,"blocklyMainWorkspaceScrollbar"),a.scrollbar.resize()):a.setMetrics({x:.5,y:.5});b.hasSounds&&loadSounds$$module$build$src$core$inject(b.pathToMedia,
274
+ a)},onKeyDown$$module$build$src$core$inject=function(a){const b=getMainWorkspace$$module$build$src$core$common();if(b&&!(isTargetInput$$module$build$src$core$browser_events(a)||b.rendered&&!b.isVisible()))ShortcutRegistry$$module$build$src$core$shortcut_registry.registry.onKeyDown(b,a)},bindDocumentEvents$$module$build$src$core$inject=function(){documentEventsBound$$module$build$src$core$inject||(conditionalBind$$module$build$src$core$browser_events(document,"scroll",null,function(){const a=getAllWorkspaces$$module$build$src$core$common();
275
+ for(let b=0,c;c=a[b];b++)c instanceof WorkspaceSvg$$module$build$src$core$workspace_svg&&c.updateInverseScreenCTM()}),conditionalBind$$module$build$src$core$browser_events(document,"keydown",null,onKeyDown$$module$build$src$core$inject),bind$$module$build$src$core$browser_events(document,"touchend",null,longStop$$module$build$src$core$touch),bind$$module$build$src$core$browser_events(document,"touchcancel",null,longStop$$module$build$src$core$touch),IPAD$$module$build$src$core$utils$useragent&&conditionalBind$$module$build$src$core$browser_events(window,
276
+ "orientationchange",document,function(){svgResize$$module$build$src$core$common(getMainWorkspace$$module$build$src$core$common())}));documentEventsBound$$module$build$src$core$inject=!0},loadSounds$$module$build$src$core$inject=function(a,b){function c(){for(;e.length;)unbind$$module$build$src$core$browser_events(e.pop());d.preload()}const d=b.getAudioManager();d.load([a+"click.mp3",a+"click.wav",a+"click.ogg"],"click");d.load([a+"disconnect.wav",a+"disconnect.mp3",a+"disconnect.ogg"],"disconnect");
277
+ d.load([a+"delete.mp3",a+"delete.ogg",a+"delete.wav"],"delete");const e=[];e.push(conditionalBind$$module$build$src$core$browser_events(document,"mousemove",null,c,!0));e.push(conditionalBind$$module$build$src$core$browser_events(document,"touchstart",null,c,!0))},registerUndo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.UNDO},preconditionFn(a){return 0<a.workspace.getUndoStack().length?
278
+ "enabled":"disabled"},callback(a){a.workspace.undo(!1)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"undoWorkspace",weight:1})},registerRedo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.REDO},preconditionFn(a){return 0<a.workspace.getRedoStack().length?"enabled":"disabled"},callback(a){a.workspace.undo(!0)},
279
+ scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"redoWorkspace",weight:2})},registerCleanup$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.CLEAN_UP},preconditionFn(a){return a.workspace.isMovable()?1<a.workspace.getTopBlocks(!1).length?"enabled":"disabled":"hidden"},callback(a){a.workspace.cleanUp()},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,
280
+ id:"cleanWorkspace",weight:3})},toggleOption_$$module$build$src$core$contextmenu_items=function(a,b){function c(f){e--;f.setCollapsed(a);0===e&&setGroup$$module$build$src$core$events$utils(!1)}let d=0,e=0;setGroup$$module$build$src$core$events$utils(!0);for(let f=0;f<b.length;f++){let g=b[f];for(;g;)e++,setTimeout(c.bind(null,g),d),g=g.getNextBlock(),d+=10}},registerCollapse$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.COLLAPSE_ALL},
281
+ preconditionFn(a){if(a.workspace.options.collapse){a=a.workspace.getTopBlocks(!1);for(let b=0;b<a.length;b++){let c=a[b];for(;c;){if(!c.isCollapsed())return"enabled";c=c.getNextBlock()}}return"disabled"}return"hidden"},callback(a){toggleOption_$$module$build$src$core$contextmenu_items(!0,a.workspace.getTopBlocks(!0))},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"collapseWorkspace",weight:4})},registerExpand$$module$build$src$core$contextmenu_items=
282
+ function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.EXPAND_ALL},preconditionFn(a){if(a.workspace.options.collapse){a=a.workspace.getTopBlocks(!1);for(let b=0;b<a.length;b++){let c=a[b];for(;c;){if(c.isCollapsed())return"enabled";c=c.getNextBlock()}}return"disabled"}return"hidden"},callback(a){toggleOption_$$module$build$src$core$contextmenu_items(!1,a.workspace.getTopBlocks(!0))},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,
283
+ id:"expandWorkspace",weight:5})},addDeletableBlocks_$$module$build$src$core$contextmenu_items=function(a,b){if(a.isDeletable())Array.prototype.push.apply(b,a.getDescendants(!1));else{a=a.getChildren(!1);for(let c=0;c<a.length;c++)addDeletableBlocks_$$module$build$src$core$contextmenu_items(a[c],b)}},getDeletableBlocks_$$module$build$src$core$contextmenu_items=function(a){const b=[];a=a.getTopBlocks(!0);for(let c=0;c<a.length;c++)addDeletableBlocks_$$module$build$src$core$contextmenu_items(a[c],b);
284
+ return b},deleteNext_$$module$build$src$core$contextmenu_items=function(a,b){setGroup$$module$build$src$core$events$utils(b);const c=a.shift();c&&(c.isDeadOrDying()?deleteNext_$$module$build$src$core$contextmenu_items(a,b):(c.dispose(!1,!0),setTimeout(deleteNext_$$module$build$src$core$contextmenu_items,10,a,b)));setGroup$$module$build$src$core$events$utils(!1)},registerDeleteAll$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(a){if(!a.workspace)return"";
285
+ a=getDeletableBlocks_$$module$build$src$core$contextmenu_items(a.workspace).length;return 1===a?Msg$$module$build$src$core$msg.DELETE_BLOCK:Msg$$module$build$src$core$msg.DELETE_X_BLOCKS.replace("%1",String(a))},preconditionFn(a){return a.workspace?0<getDeletableBlocks_$$module$build$src$core$contextmenu_items(a.workspace).length?"enabled":"disabled":"disabled"},callback(a){if(a.workspace){a.workspace.cancelCurrentGesture();var b=getDeletableBlocks_$$module$build$src$core$contextmenu_items(a.workspace),
286
+ c=genUid$$module$build$src$core$utils$idgenerator();2>b.length?deleteNext_$$module$build$src$core$contextmenu_items(b,c):confirm$$module$build$src$core$dialog(Msg$$module$build$src$core$msg.DELETE_ALL_BLOCKS.replace("%1",String(b.length)),function(d){d&&deleteNext_$$module$build$src$core$contextmenu_items(b,c)})}},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"workspaceDelete",weight:6})},registerWorkspaceOptions_$$module$build$src$core$contextmenu_items=
287
+ function(){registerUndo$$module$build$src$core$contextmenu_items();registerRedo$$module$build$src$core$contextmenu_items();registerCleanup$$module$build$src$core$contextmenu_items();registerCollapse$$module$build$src$core$contextmenu_items();registerExpand$$module$build$src$core$contextmenu_items();registerDeleteAll$$module$build$src$core$contextmenu_items()},registerDuplicate$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.DUPLICATE_BLOCK},
283
288
  preconditionFn(a){a=a.block;return!a.isInFlyout&&a.isDeletable()&&a.isMovable()?a.isDuplicatable()?"enabled":"disabled":"hidden"},callback(a){a.block&&duplicate$$module$build$src$core$clipboard(a.block)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.BLOCK,id:"blockDuplicate",weight:1})},registerComment$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(a){return a.block.getCommentIcon()?
284
289
  Msg$$module$build$src$core$msg.REMOVE_COMMENT:Msg$$module$build$src$core$msg.ADD_COMMENT},preconditionFn(a){a=a.block;return!a.isInFlyout&&a.workspace.options.comments&&!a.isCollapsed()&&a.isEditable()?"enabled":"hidden"},callback(a){a=a.block;a.getCommentIcon()?a.setCommentText(null):a.setCommentText("")},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.BLOCK,id:"blockComment",weight:2})},registerInline$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(a){return a.block.getInputsInline()?
285
290
  Msg$$module$build$src$core$msg.EXTERNAL_INPUTS:Msg$$module$build$src$core$msg.INLINE_INPUTS},preconditionFn(a){a=a.block;if(!a.isInFlyout&&a.isMovable()&&!a.isCollapsed())for(let b=1;b<a.inputList.length;b++)if(a.inputList[b-1].type!==inputTypes$$module$build$src$core$input_types.STATEMENT&&a.inputList[b].type!==inputTypes$$module$build$src$core$input_types.STATEMENT)return"enabled";return"hidden"},callback(a){a.block.setInputsInline(!a.block.getInputsInline())},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.BLOCK,
@@ -372,7 +377,7 @@ a&&(fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$eve
372
377
  this.getContent();return b}static fireCreateEvent(a){if(isEnabled$$module$build$src$core$events$utils()){const b=getGroup$$module$build$src$core$events$utils();b||setGroup$$module$build$src$core$events$utils(!0);try{fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(COMMENT_CREATE$$module$build$src$core$events$utils))(a))}finally{b||setGroup$$module$build$src$core$events$utils(!1)}}}static fromXml(a,b){var c=WorkspaceComment$$module$build$src$core$workspace_comment.parseAttributes(a);
373
378
  b=new WorkspaceComment$$module$build$src$core$workspace_comment(b,c.content,c.h,c.w,c.id);c=a.getAttribute("x");a=a.getAttribute("y");c=c?parseInt(c,10):NaN;a=a?parseInt(a,10):NaN;isNaN(c)||isNaN(a)||b.moveBy(c,a);WorkspaceComment$$module$build$src$core$workspace_comment.fireCreateEvent(b);return b}static parseAttributes(a){const b=a.getAttribute("h"),c=a.getAttribute("w"),d=a.getAttribute("x"),e=a.getAttribute("y"),f=a.getAttribute("id");if(!f)throw Error("No ID present in XML comment definition.");
374
379
  let g;return{id:f,h:b?parseInt(b):100,w:c?parseInt(c):100,x:d?parseInt(d):NaN,y:e?parseInt(e):NaN,content:null!=(g=a.textContent)?g:""}}},module$build$src$core$workspace_comment={};module$build$src$core$workspace_comment.WorkspaceComment=WorkspaceComment$$module$build$src$core$workspace_comment;var UiBase$$module$build$src$core$events$events_ui_base=class extends Abstract$$module$build$src$core$events$events_abstract{constructor(a){super();this.isBlank=!0;this.recordUndo=!1;this.isUiEvent=!0;this.isBlank="undefined"===typeof a;this.workspaceId=a?a:""}},module$build$src$core$events$events_ui_base={};module$build$src$core$events$events_ui_base.UiBase=UiBase$$module$build$src$core$events$events_ui_base;var Selected$$module$build$src$core$events$events_selected=class extends UiBase$$module$build$src$core$events$events_ui_base{constructor(a,b,c){super(c);this.type=SELECTED$$module$build$src$core$events$utils;this.oldElementId=null!=a?a:void 0;this.newElementId=null!=b?b:void 0}toJson(){const a=super.toJson();a.oldElementId=this.oldElementId;a.newElementId=this.newElementId;return a}fromJson(a){super.fromJson(a);this.oldElementId=a.oldElementId;this.newElementId=a.newElementId}};
375
- register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,SELECTED$$module$build$src$core$events$utils,Selected$$module$build$src$core$events$events_selected);var module$build$src$core$events$events_selected={};module$build$src$core$events$events_selected.Selected=Selected$$module$build$src$core$events$events_selected;var injected$$module$build$src$core$css=!1,content$$module$build$src$core$css='\n.blocklySvg {\n background-color: #fff;\n outline: none;\n overflow: hidden; /* IE overflows by default. */\n position: absolute;\n display: block;\n}\n\n.blocklyWidgetDiv {\n display: none;\n position: absolute;\n z-index: 99999; /* big value for bootstrap3 compatibility */\n}\n\n.injectionDiv {\n height: 100%;\n position: relative;\n overflow: hidden; /* So blocks in drag surface disappear at edges */\n touch-action: none;\n}\n\n.blocklyNonSelectable {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.blocklyWsDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n/* Added as a separate rule with multiple classes to make it more specific\n than a bootstrap rule that selects svg:root. See issue #1275 for context.\n*/\n.blocklyWsDragSurface.blocklyOverflowVisible {\n overflow: visible;\n}\n\n.blocklyBlockDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: visible !important;\n z-index: 50; /* Display below toolbox, but above everything else. */\n}\n\n.blocklyBlockCanvas.blocklyCanvasTransitioning,\n.blocklyBubbleCanvas.blocklyCanvasTransitioning {\n transition: transform .5s;\n}\n\n.blocklyTooltipDiv {\n background-color: #ffffc7;\n border: 1px solid #ddc;\n box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);\n color: #000;\n display: none;\n font: 9pt sans-serif;\n opacity: .9;\n padding: 2px;\n position: absolute;\n z-index: 100000; /* big value for bootstrap3 compatibility */\n}\n\n.blocklyDropDownDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1000;\n display: none;\n border: 1px solid;\n border-color: #dadce0;\n background-color: #fff;\n border-radius: 2px;\n padding: 4px;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownContent {\n max-height: 300px; // @todo: spec for maximum height.\n overflow: auto;\n overflow-x: hidden;\n position: relative;\n}\n\n.blocklyDropDownArrow {\n position: absolute;\n left: 0;\n top: 0;\n width: 16px;\n height: 16px;\n z-index: -1;\n background-color: inherit;\n border-color: inherit;\n}\n\n.blocklyDropDownButton {\n display: inline-block;\n float: left;\n padding: 0;\n margin: 4px;\n border-radius: 4px;\n outline: none;\n border: 1px solid;\n transition: box-shadow .1s;\n cursor: pointer;\n}\n\n.blocklyArrowTop {\n border-top: 1px solid;\n border-left: 1px solid;\n border-top-left-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyArrowBottom {\n border-bottom: 1px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyResizeSE {\n cursor: se-resize;\n fill: #aaa;\n}\n\n.blocklyResizeSW {\n cursor: sw-resize;\n fill: #aaa;\n}\n\n.blocklyResizeLine {\n stroke: #515A5A;\n stroke-width: 1;\n}\n\n.blocklyHighlightedConnectionPath {\n fill: none;\n stroke: #fc3;\n stroke-width: 4px;\n}\n\n.blocklyPathLight {\n fill: none;\n stroke-linecap: round;\n stroke-width: 1;\n}\n\n.blocklySelected>.blocklyPathLight {\n display: none;\n}\n\n.blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grab */\n cursor: url("<<<PATH>>>/handopen.cur"), auto;\n cursor: grab;\n cursor: -webkit-grab;\n}\n\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n.blocklyDragging {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n /* Changes cursor on mouse down. Not effective in Firefox because of\n https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */\n.blocklyDraggable:active {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Change the cursor on the whole drag surface in case the mouse gets\n ahead of block during a drag. This way the cursor is still a closed hand.\n */\n.blocklyBlockDragSurface .blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n.blocklyDragging.blocklyDraggingDelete {\n cursor: url("<<<PATH>>>/handdelete.cur"), auto;\n}\n\n.blocklyDragging>.blocklyPath,\n.blocklyDragging>.blocklyPathLight {\n fill-opacity: .8;\n stroke-opacity: .8;\n}\n\n.blocklyDragging>.blocklyPathDark {\n display: none;\n}\n\n.blocklyDisabled>.blocklyPath {\n fill-opacity: .5;\n stroke-opacity: .5;\n}\n\n.blocklyDisabled>.blocklyPathLight,\n.blocklyDisabled>.blocklyPathDark {\n display: none;\n}\n\n.blocklyInsertionMarker>.blocklyPath,\n.blocklyInsertionMarker>.blocklyPathLight,\n.blocklyInsertionMarker>.blocklyPathDark {\n fill-opacity: .2;\n stroke: none;\n}\n\n.blocklyMultilineText {\n font-family: monospace;\n}\n\n.blocklyNonEditableText>text {\n pointer-events: none;\n}\n\n.blocklyFlyout {\n position: absolute;\n z-index: 20;\n}\n\n.blocklyText text {\n cursor: default;\n}\n\n/*\n Don\'t allow users to select text. It gets annoying when trying to\n drag a block and selected text moves instead.\n*/\n.blocklySvg text,\n.blocklyBlockDragSurface text {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n cursor: inherit;\n}\n\n.blocklyHidden {\n display: none;\n}\n\n.blocklyFieldDropdown:not(.blocklyHidden) {\n display: block;\n}\n\n.blocklyIconGroup {\n cursor: default;\n}\n\n.blocklyIconGroup:not(:hover),\n.blocklyIconGroupReadonly {\n opacity: .6;\n}\n\n.blocklyIconShape {\n fill: #00f;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n.blocklyIconSymbol {\n fill: #fff;\n}\n\n.blocklyMinimalBody {\n margin: 0;\n padding: 0;\n}\n\n.blocklyHtmlInput {\n border: none;\n border-radius: 4px;\n height: 100%;\n margin: 0;\n outline: none;\n padding: 0;\n width: 100%;\n text-align: center;\n display: block;\n box-sizing: border-box;\n}\n\n/* Edge and IE introduce a close icon when the input value is longer than a\n certain length. This affects our sizing calculations of the text input.\n Hiding the close icon to avoid that. */\n.blocklyHtmlInput::-ms-clear {\n display: none;\n}\n\n.blocklyMainBackground {\n stroke-width: 1;\n stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */\n}\n\n.blocklyMutatorBackground {\n fill: #fff;\n stroke: #ddd;\n stroke-width: 1;\n}\n\n.blocklyFlyoutBackground {\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyMainWorkspaceScrollbar {\n z-index: 20;\n}\n\n.blocklyFlyoutScrollbar {\n z-index: 30;\n}\n\n.blocklyScrollbarHorizontal,\n.blocklyScrollbarVertical {\n position: absolute;\n outline: none;\n}\n\n.blocklyScrollbarBackground {\n opacity: 0;\n}\n\n.blocklyScrollbarHandle {\n fill: #ccc;\n}\n\n.blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyScrollbarHandle:hover {\n fill: #bbb;\n}\n\n/* Darken flyout scrollbars due to being on a grey background. */\n/* By contrast, workspace scrollbars are on a white background. */\n.blocklyFlyout .blocklyScrollbarHandle {\n fill: #bbb;\n}\n\n.blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyFlyout .blocklyScrollbarHandle:hover {\n fill: #aaa;\n}\n\n.blocklyInvalidInput {\n background: #faa;\n}\n\n.blocklyVerticalMarker {\n stroke-width: 3px;\n fill: rgba(255,255,255,.5);\n pointer-events: none;\n}\n\n.blocklyComputeCanvas {\n position: absolute;\n width: 0;\n height: 0;\n}\n\n.blocklyNoPointerEvents {\n pointer-events: none;\n}\n\n.blocklyContextMenu {\n border-radius: 4px;\n max-height: 100%;\n}\n\n.blocklyDropdownMenu {\n border-radius: 2px;\n padding: 0 !important;\n}\n\n.blocklyDropdownMenu .blocklyMenuItem {\n /* 28px on the left for icon or checkbox. */\n padding-left: 28px;\n}\n\n/* BiDi override for the resting state. */\n.blocklyDropdownMenu .blocklyMenuItemRtl {\n /* Flip left/right padding for BiDi. */\n padding-left: 5px;\n padding-right: 28px;\n}\n\n.blocklyWidgetDiv .blocklyMenu {\n background: #fff;\n border: 1px solid transparent;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n font: normal 13px Arial, sans-serif;\n margin: 0;\n outline: none;\n padding: 4px 0;\n position: absolute;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 100%;\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n.blocklyWidgetDiv .blocklyMenu.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv .blocklyMenu {\n background: inherit; /* Compatibility with gapi, reset from goog-menu */\n border: inherit; /* Compatibility with gapi, reset from goog-menu */\n font: normal 13px "Helvetica Neue", Helvetica, sans-serif;\n outline: none;\n position: relative; /* Compatibility with gapi, reset from goog-menu */\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n/* State: resting. */\n.blocklyMenuItem {\n border: none;\n color: #000;\n cursor: pointer;\n list-style: none;\n margin: 0;\n /* 7em on the right for shortcut. */\n min-width: 7em;\n padding: 6px 15px;\n white-space: nowrap;\n}\n\n/* State: disabled. */\n.blocklyMenuItemDisabled {\n color: #ccc;\n cursor: inherit;\n}\n\n/* State: hover. */\n.blocklyMenuItemHighlight {\n background-color: rgba(0,0,0,.1);\n}\n\n/* State: selected/checked. */\n.blocklyMenuItemCheckbox {\n height: 16px;\n position: absolute;\n width: 16px;\n}\n\n.blocklyMenuItemSelected .blocklyMenuItemCheckbox {\n background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px;\n float: left;\n margin-left: -24px;\n position: static; /* Scroll with the menu. */\n}\n\n.blocklyMenuItemRtl .blocklyMenuItemCheckbox {\n float: right;\n margin-right: -24px;\n}\n',
380
+ register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,SELECTED$$module$build$src$core$events$utils,Selected$$module$build$src$core$events$events_selected);var module$build$src$core$events$events_selected={};module$build$src$core$events$events_selected.Selected=Selected$$module$build$src$core$events$events_selected;var injected$$module$build$src$core$css=!1,content$$module$build$src$core$css='\n.blocklySvg {\n background-color: #fff;\n outline: none;\n overflow: hidden; /* IE overflows by default. */\n position: absolute;\n display: block;\n}\n\n.blocklyWidgetDiv {\n display: none;\n position: absolute;\n z-index: 99999; /* big value for bootstrap3 compatibility */\n}\n\n.injectionDiv {\n height: 100%;\n position: relative;\n overflow: hidden; /* So blocks in drag surface disappear at edges */\n touch-action: none;\n}\n\n.blocklyNonSelectable {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.blocklyWsDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n/* Added as a separate rule with multiple classes to make it more specific\n than a bootstrap rule that selects svg:root. See issue #1275 for context.\n*/\n.blocklyWsDragSurface.blocklyOverflowVisible {\n overflow: visible;\n}\n\n.blocklyBlockDragSurface {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: visible !important;\n z-index: 50; /* Display below toolbox, but above everything else. */\n}\n\n.blocklyBlockCanvas.blocklyCanvasTransitioning,\n.blocklyBubbleCanvas.blocklyCanvasTransitioning {\n transition: transform .5s;\n}\n\n.blocklyTooltipDiv {\n background-color: #ffffc7;\n border: 1px solid #ddc;\n box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);\n color: #000;\n display: none;\n font: 9pt sans-serif;\n opacity: .9;\n padding: 2px;\n position: absolute;\n z-index: 100000; /* big value for bootstrap3 compatibility */\n}\n\n.blocklyDropDownDiv {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 1000;\n display: none;\n border: 1px solid;\n border-color: #dadce0;\n background-color: #fff;\n border-radius: 2px;\n padding: 4px;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownContent {\n max-height: 300px; /* @todo: spec for maximum height. */\n overflow: auto;\n overflow-x: hidden;\n position: relative;\n}\n\n.blocklyDropDownArrow {\n position: absolute;\n left: 0;\n top: 0;\n width: 16px;\n height: 16px;\n z-index: -1;\n background-color: inherit;\n border-color: inherit;\n}\n\n.blocklyDropDownButton {\n display: inline-block;\n float: left;\n padding: 0;\n margin: 4px;\n border-radius: 4px;\n outline: none;\n border: 1px solid;\n transition: box-shadow .1s;\n cursor: pointer;\n}\n\n.blocklyArrowTop {\n border-top: 1px solid;\n border-left: 1px solid;\n border-top-left-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyArrowBottom {\n border-bottom: 1px solid;\n border-right: 1px solid;\n border-bottom-right-radius: 4px;\n border-color: inherit;\n}\n\n.blocklyResizeSE {\n cursor: se-resize;\n fill: #aaa;\n}\n\n.blocklyResizeSW {\n cursor: sw-resize;\n fill: #aaa;\n}\n\n.blocklyResizeLine {\n stroke: #515A5A;\n stroke-width: 1;\n}\n\n.blocklyHighlightedConnectionPath {\n fill: none;\n stroke: #fc3;\n stroke-width: 4px;\n}\n\n.blocklyPathLight {\n fill: none;\n stroke-linecap: round;\n stroke-width: 1;\n}\n\n.blocklySelected>.blocklyPathLight {\n display: none;\n}\n\n.blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grab */\n cursor: url("<<<PATH>>>/handopen.cur"), auto;\n cursor: grab;\n cursor: -webkit-grab;\n}\n\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n.blocklyDragging {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n /* Changes cursor on mouse down. Not effective in Firefox because of\n https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */\n.blocklyDraggable:active {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Change the cursor on the whole drag surface in case the mouse gets\n ahead of block during a drag. This way the cursor is still a closed hand.\n */\n.blocklyBlockDragSurface .blocklyDraggable {\n /* backup for browsers (e.g. IE11) that don\'t support grabbing */\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n.blocklyDragging.blocklyDraggingDelete {\n cursor: url("<<<PATH>>>/handdelete.cur"), auto;\n}\n\n.blocklyDragging>.blocklyPath,\n.blocklyDragging>.blocklyPathLight {\n fill-opacity: .8;\n stroke-opacity: .8;\n}\n\n.blocklyDragging>.blocklyPathDark {\n display: none;\n}\n\n.blocklyDisabled>.blocklyPath {\n fill-opacity: .5;\n stroke-opacity: .5;\n}\n\n.blocklyDisabled>.blocklyPathLight,\n.blocklyDisabled>.blocklyPathDark {\n display: none;\n}\n\n.blocklyInsertionMarker>.blocklyPath,\n.blocklyInsertionMarker>.blocklyPathLight,\n.blocklyInsertionMarker>.blocklyPathDark {\n fill-opacity: .2;\n stroke: none;\n}\n\n.blocklyMultilineText {\n font-family: monospace;\n}\n\n.blocklyNonEditableText>text {\n pointer-events: none;\n}\n\n.blocklyFlyout {\n position: absolute;\n z-index: 20;\n}\n\n.blocklyText text {\n cursor: default;\n}\n\n/*\n Don\'t allow users to select text. It gets annoying when trying to\n drag a block and selected text moves instead.\n*/\n.blocklySvg text,\n.blocklyBlockDragSurface text {\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n cursor: inherit;\n}\n\n.blocklyHidden {\n display: none;\n}\n\n.blocklyFieldDropdown:not(.blocklyHidden) {\n display: block;\n}\n\n.blocklyIconGroup {\n cursor: default;\n}\n\n.blocklyIconGroup:not(:hover),\n.blocklyIconGroupReadonly {\n opacity: .6;\n}\n\n.blocklyIconShape {\n fill: #00f;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n.blocklyIconSymbol {\n fill: #fff;\n}\n\n.blocklyMinimalBody {\n margin: 0;\n padding: 0;\n}\n\n.blocklyHtmlInput {\n border: none;\n border-radius: 4px;\n height: 100%;\n margin: 0;\n outline: none;\n padding: 0;\n width: 100%;\n text-align: center;\n display: block;\n box-sizing: border-box;\n}\n\n/* Edge and IE introduce a close icon when the input value is longer than a\n certain length. This affects our sizing calculations of the text input.\n Hiding the close icon to avoid that. */\n.blocklyHtmlInput::-ms-clear {\n display: none;\n}\n\n.blocklyMainBackground {\n stroke-width: 1;\n stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */\n}\n\n.blocklyMutatorBackground {\n fill: #fff;\n stroke: #ddd;\n stroke-width: 1;\n}\n\n.blocklyFlyoutBackground {\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyMainWorkspaceScrollbar {\n z-index: 20;\n}\n\n.blocklyFlyoutScrollbar {\n z-index: 30;\n}\n\n.blocklyScrollbarHorizontal,\n.blocklyScrollbarVertical {\n position: absolute;\n outline: none;\n}\n\n.blocklyScrollbarBackground {\n opacity: 0;\n}\n\n.blocklyScrollbarHandle {\n fill: #ccc;\n}\n\n.blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyScrollbarHandle:hover {\n fill: #bbb;\n}\n\n/* Darken flyout scrollbars due to being on a grey background. */\n/* By contrast, workspace scrollbars are on a white background. */\n.blocklyFlyout .blocklyScrollbarHandle {\n fill: #bbb;\n}\n\n.blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,\n.blocklyFlyout .blocklyScrollbarHandle:hover {\n fill: #aaa;\n}\n\n.blocklyInvalidInput {\n background: #faa;\n}\n\n.blocklyVerticalMarker {\n stroke-width: 3px;\n fill: rgba(255,255,255,.5);\n pointer-events: none;\n}\n\n.blocklyComputeCanvas {\n position: absolute;\n width: 0;\n height: 0;\n}\n\n.blocklyNoPointerEvents {\n pointer-events: none;\n}\n\n.blocklyContextMenu {\n border-radius: 4px;\n max-height: 100%;\n}\n\n.blocklyDropdownMenu {\n border-radius: 2px;\n padding: 0 !important;\n}\n\n.blocklyDropdownMenu .blocklyMenuItem {\n /* 28px on the left for icon or checkbox. */\n padding-left: 28px;\n}\n\n/* BiDi override for the resting state. */\n.blocklyDropdownMenu .blocklyMenuItemRtl {\n /* Flip left/right padding for BiDi. */\n padding-left: 5px;\n padding-right: 28px;\n}\n\n.blocklyWidgetDiv .blocklyMenu {\n background: #fff;\n border: 1px solid transparent;\n box-shadow: 0 0 3px 1px rgba(0,0,0,.3);\n font: normal 13px Arial, sans-serif;\n margin: 0;\n outline: none;\n padding: 4px 0;\n position: absolute;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 100%;\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n.blocklyWidgetDiv .blocklyMenu.blocklyFocused {\n box-shadow: 0 0 6px 1px rgba(0,0,0,.3);\n}\n\n.blocklyDropDownDiv .blocklyMenu {\n background: inherit; /* Compatibility with gapi, reset from goog-menu */\n border: inherit; /* Compatibility with gapi, reset from goog-menu */\n font: normal 13px "Helvetica Neue", Helvetica, sans-serif;\n outline: none;\n position: relative; /* Compatibility with gapi, reset from goog-menu */\n z-index: 20000; /* Arbitrary, but some apps depend on it... */\n}\n\n/* State: resting. */\n.blocklyMenuItem {\n border: none;\n color: #000;\n cursor: pointer;\n list-style: none;\n margin: 0;\n /* 7em on the right for shortcut. */\n min-width: 7em;\n padding: 6px 15px;\n white-space: nowrap;\n}\n\n/* State: disabled. */\n.blocklyMenuItemDisabled {\n color: #ccc;\n cursor: inherit;\n}\n\n/* State: hover. */\n.blocklyMenuItemHighlight {\n background-color: rgba(0,0,0,.1);\n}\n\n/* State: selected/checked. */\n.blocklyMenuItemCheckbox {\n height: 16px;\n position: absolute;\n width: 16px;\n}\n\n.blocklyMenuItemSelected .blocklyMenuItemCheckbox {\n background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px;\n float: left;\n margin-left: -24px;\n position: static; /* Scroll with the menu. */\n}\n\n.blocklyMenuItemRtl .blocklyMenuItemCheckbox {\n float: right;\n margin-right: -24px;\n}\n',
376
381
  module$build$src$core$css={};module$build$src$core$css.inject=inject$$module$build$src$core$css;module$build$src$core$css.register=register$$module$build$src$core$css;var Svg$$module$build$src$core$utils$svg=class{constructor(a){this.tagName=a}toString(){return this.tagName}};Svg$$module$build$src$core$utils$svg.ANIMATE=new Svg$$module$build$src$core$utils$svg("animate");Svg$$module$build$src$core$utils$svg.CIRCLE=new Svg$$module$build$src$core$utils$svg("circle");Svg$$module$build$src$core$utils$svg.CLIPPATH=new Svg$$module$build$src$core$utils$svg("clipPath");Svg$$module$build$src$core$utils$svg.DEFS=new Svg$$module$build$src$core$utils$svg("defs");
377
382
  Svg$$module$build$src$core$utils$svg.FECOMPOSITE=new Svg$$module$build$src$core$utils$svg("feComposite");Svg$$module$build$src$core$utils$svg.FECOMPONENTTRANSFER=new Svg$$module$build$src$core$utils$svg("feComponentTransfer");Svg$$module$build$src$core$utils$svg.FEFLOOD=new Svg$$module$build$src$core$utils$svg("feFlood");Svg$$module$build$src$core$utils$svg.FEFUNCA=new Svg$$module$build$src$core$utils$svg("feFuncA");Svg$$module$build$src$core$utils$svg.FEGAUSSIANBLUR=new Svg$$module$build$src$core$utils$svg("feGaussianBlur");
378
383
  Svg$$module$build$src$core$utils$svg.FEPOINTLIGHT=new Svg$$module$build$src$core$utils$svg("fePointLight");Svg$$module$build$src$core$utils$svg.FESPECULARLIGHTING=new Svg$$module$build$src$core$utils$svg("feSpecularLighting");Svg$$module$build$src$core$utils$svg.FILTER=new Svg$$module$build$src$core$utils$svg("filter");Svg$$module$build$src$core$utils$svg.FOREIGNOBJECT=new Svg$$module$build$src$core$utils$svg("foreignObject");Svg$$module$build$src$core$utils$svg.G=new Svg$$module$build$src$core$utils$svg("g");
@@ -440,8 +445,8 @@ this.name&&(this.SERIALIZABLE?a=!0:this.EDITABLE&&(console.warn("Detected an edi
440
445
  return this.borderRect_}getTextElement(){if(!this.textElement_)throw Error(`The text element is ${this.textElement_}.`);return this.textElement_}getTextContent(){if(!this.textContent_)throw Error(`The text content is ${this.textContent_}.`);return this.textContent_}applyColour(){}render_(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_());this.updateSize_()}showEditor(a){this.isClickable()&&this.showEditor_(a)}showEditor_(a){}updateSize_(a){const b=this.getConstants();a=void 0!==
441
446
  a?a:this.borderRect_?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;let c=2*a,d=b.FIELD_TEXT_HEIGHT,e=0;this.textElement_&&(e=getFastTextWidth$$module$build$src$core$utils$dom(this.textElement_,b.FIELD_TEXT_FONTSIZE,b.FIELD_TEXT_FONTWEIGHT,b.FIELD_TEXT_FONTFAMILY),c+=e);this.borderRect_&&(d=Math.max(d,b.FIELD_BORDER_RECT_HEIGHT));this.size_.height=d;this.size_.width=c;this.positionTextElement_(a,e);this.positionBorderRect_()}positionTextElement_(a,b){if(this.textElement_){var c=this.getConstants(),
442
447
  d=this.size_.height/2,e;this.textElement_.setAttribute("x",`${(null==(e=this.getSourceBlock())?0:e.RTL)?this.size_.width-b-a:a}`);this.textElement_.setAttribute("y",`${c.FIELD_TEXT_BASELINE_CENTER?d:d-c.FIELD_TEXT_HEIGHT/2+c.FIELD_TEXT_BASELINE}`)}}positionBorderRect_(){this.borderRect_&&(this.borderRect_.setAttribute("width",`${this.size_.width}`),this.borderRect_.setAttribute("height",`${this.size_.height}`),this.borderRect_.setAttribute("rx",`${this.getConstants().FIELD_BORDER_RECT_RADIUS}`),this.borderRect_.setAttribute("ry",
443
- `${this.getConstants().FIELD_BORDER_RECT_RADIUS}`))}getSize(){if(!this.isVisible())return new Size$$module$build$src$core$utils$size(0,0);this.isDirty_?(this.render_(),this.isDirty_=!1):this.visible_&&0===this.size_.width&&(console.warn("Deprecated use of setting size_.width to 0 to rerender a field. Set field.isDirty_ to true instead."),this.render_());return this.size_}getScaledBBox(){let a;var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;if(this.borderRect_){var c=
444
- this.borderRect_.getBoundingClientRect();a=getPageOffset$$module$build$src$core$utils$style(this.borderRect_);b=c.width;c=c.height}else{c=this.sourceBlock_.getHeightWidth();const d=b.workspace.scale;a=this.getAbsoluteXY_();b=(c.width+1)*d;c=(c.height+1)*d;GECKO$$module$build$src$core$utils$useragent?(a.x+=1.5*d,a.y+=1.5*d):(a.x-=.5*d,a.y-=.5*d)}return new Rect$$module$build$src$core$utils$rect(a.y,a.y+c,a.x,a.x+b)}getDisplayText_(){let a=this.getText();if(!a)return Field$$module$build$src$core$field.NBSP;
448
+ `${this.getConstants().FIELD_BORDER_RECT_RADIUS}`))}getSize(){if(!this.isVisible())return new Size$$module$build$src$core$utils$size(0,0);this.isDirty_?(this.render_(),this.isDirty_=!1):this.visible_&&0===this.size_.width&&(this.render_(),0!==this.size_.width&&console.warn("Deprecated use of setting size_.width to 0 to rerender a field. Set field.isDirty_ to true instead."));return this.size_}getScaledBBox(){let a;var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;
449
+ if(this.borderRect_){var c=this.borderRect_.getBoundingClientRect();a=getPageOffset$$module$build$src$core$utils$style(this.borderRect_);b=c.width;c=c.height}else{c=this.sourceBlock_.getHeightWidth();const d=b.workspace.scale;a=this.getAbsoluteXY_();b=(c.width+1)*d;c=(c.height+1)*d;GECKO$$module$build$src$core$utils$useragent?(a.x+=1.5*d,a.y+=1.5*d):(a.x-=.5*d,a.y-=.5*d)}return new Rect$$module$build$src$core$utils$rect(a.y,a.y+c,a.x,a.x+b)}getDisplayText_(){let a=this.getText();if(!a)return Field$$module$build$src$core$field.NBSP;
445
450
  a.length>this.maxDisplayLength&&(a=a.substring(0,this.maxDisplayLength-2)+"\u2026");a=a.replace(/\s/g,Field$$module$build$src$core$field.NBSP);this.sourceBlock_&&this.sourceBlock_.RTL&&(a+="\u200f");return a}getText(){const a=this.getText_();return null!==a?String(a):String(this.getValue())}getText_(){return null}markDirty(){this.isDirty_=!0;this.constants_=null}forceRerender(){this.isDirty_=!0;this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours(),
446
451
  this.updateMarkers_())}setValue(a){if(null!==a){var b=this.doClassValidation_(a);a=this.processValidation_(a,b);if(!(a instanceof Error)){if(b=this.getValidator())if(b=b.call(this,a),a=this.processValidation_(a,b),a instanceof Error)return;b=this.sourceBlock_;if(!b||!b.disposed){var c=this.getValue();c===a?this.doValueUpdate_(a):(this.doValueUpdate_(a),b&&isEnabled$$module$build$src$core$events$utils()&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(b,
447
452
  "field",this.name||null,c,a)),this.isDirty_&&this.forceRerender())}}}}processValidation_(a,b){if(null===b)return this.doValueInvalid_(a),this.isDirty_&&this.forceRerender(),Error();void 0!==b&&(a=b);return a}getValue(){return this.value_}doClassValidation_(a){return null===a||void 0===a?null:a}doValueUpdate_(a){this.value_=a;this.isDirty_=!0}doValueInvalid_(a){}onMouseDown_(a){this.sourceBlock_&&!this.sourceBlock_.isDeadOrDying()&&(a=this.sourceBlock_.workspace.getGesture(a))&&a.setStartField(this)}setTooltip(a){a||
@@ -457,84 +462,81 @@ a[a.A=65]="A";a[a.B=66]="B";a[a.C=67]="C";a[a.D=68]="D";a[a.E=69]="E";a[a.F=70]=
457
462
  "NUM_ONE";a[a.NUM_TWO=98]="NUM_TWO";a[a.NUM_THREE=99]="NUM_THREE";a[a.NUM_FOUR=100]="NUM_FOUR";a[a.NUM_FIVE=101]="NUM_FIVE";a[a.NUM_SIX=102]="NUM_SIX";a[a.NUM_SEVEN=103]="NUM_SEVEN";a[a.NUM_EIGHT=104]="NUM_EIGHT";a[a.NUM_NINE=105]="NUM_NINE";a[a.NUM_MULTIPLY=106]="NUM_MULTIPLY";a[a.NUM_PLUS=107]="NUM_PLUS";a[a.NUM_MINUS=109]="NUM_MINUS";a[a.NUM_PERIOD=110]="NUM_PERIOD";a[a.NUM_DIVISION=111]="NUM_DIVISION";a[a.F1=112]="F1";a[a.F2=113]="F2";a[a.F3=114]="F3";a[a.F4=115]="F4";a[a.F5=116]="F5";a[a.F6=
458
463
  117]="F6";a[a.F7=118]="F7";a[a.F8=119]="F8";a[a.F9=120]="F9";a[a.F10=121]="F10";a[a.F11=122]="F11";a[a.F12=123]="F12";a[a.NUMLOCK=144]="NUMLOCK";a[a.SCROLL_LOCK=145]="SCROLL_LOCK";a[a.FIRST_MEDIA_KEY=166]="FIRST_MEDIA_KEY";a[a.LAST_MEDIA_KEY=183]="LAST_MEDIA_KEY";a[a.SEMICOLON=186]="SEMICOLON";a[a.DASH=189]="DASH";a[a.EQUALS=187]="EQUALS";a[a.COMMA=188]="COMMA";a[a.PERIOD=190]="PERIOD";a[a.SLASH=191]="SLASH";a[a.APOSTROPHE=192]="APOSTROPHE";a[a.TILDE=192]="TILDE";a[a.SINGLE_QUOTE=222]="SINGLE_QUOTE";
459
464
  a[a.OPEN_SQUARE_BRACKET=219]="OPEN_SQUARE_BRACKET";a[a.BACKSLASH=220]="BACKSLASH";a[a.CLOSE_SQUARE_BRACKET=221]="CLOSE_SQUARE_BRACKET";a[a.WIN_KEY=224]="WIN_KEY";a[a.MAC_FF_META=224]="MAC_FF_META";a[a.MAC_WK_CMD_LEFT=91]="MAC_WK_CMD_LEFT";a[a.MAC_WK_CMD_RIGHT=93]="MAC_WK_CMD_RIGHT";a[a.WIN_IME=229]="WIN_IME";a[a.VK_NONAME=252]="VK_NONAME";a[a.PHANTOM=255]="PHANTOM"})(KeyCodes$$module$build$src$core$utils$keycodes||(KeyCodes$$module$build$src$core$utils$keycodes={}));
460
- var module$build$src$core$utils$keycodes={};module$build$src$core$utils$keycodes.KeyCodes=KeyCodes$$module$build$src$core$utils$keycodes;var Menu$$module$build$src$core$menu=class{constructor(){this.menuItems_=[];this.roleName_=this.element_=this.onKeyDownHandler_=this.mouseLeaveHandler_=this.mouseEnterHandler_=this.clickHandler_=this.mouseOverHandler_=this.highlightedItem_=this.openingCoords=null}addChild(a){this.menuItems_.push(a)}render(a){const b=document.createElement("div");b.className="blocklyMenu goog-menu blocklyNonSelectable";b.tabIndex=0;this.roleName_&&setRole$$module$build$src$core$utils$aria(b,this.roleName_);this.element_=
461
- b;for(let c=0,d;d=this.menuItems_[c];c++)b.appendChild(d.createDom());this.mouseOverHandler_=conditionalBind$$module$build$src$core$browser_events(b,"mouseover",this,this.handleMouseOver_,!0);this.clickHandler_=conditionalBind$$module$build$src$core$browser_events(b,"click",this,this.handleClick_,!0);this.mouseEnterHandler_=conditionalBind$$module$build$src$core$browser_events(b,"mouseenter",this,this.handleMouseEnter_,!0);this.mouseLeaveHandler_=conditionalBind$$module$build$src$core$browser_events(b,
462
- "mouseleave",this,this.handleMouseLeave_,!0);this.onKeyDownHandler_=conditionalBind$$module$build$src$core$browser_events(b,"keydown",this,this.handleKeyEvent_);a.appendChild(b);return b}getElement(){return this.element_}focus(){const a=this.getElement();a&&(a.focus({preventScroll:!0}),addClass$$module$build$src$core$utils$dom(a,"blocklyFocused"))}blur_(){const a=this.getElement();a&&(a.blur(),removeClass$$module$build$src$core$utils$dom(a,"blocklyFocused"))}setRole(a){this.roleName_=a}dispose(){this.mouseOverHandler_&&
463
- (unbind$$module$build$src$core$browser_events(this.mouseOverHandler_),this.mouseOverHandler_=null);this.clickHandler_&&(unbind$$module$build$src$core$browser_events(this.clickHandler_),this.clickHandler_=null);this.mouseEnterHandler_&&(unbind$$module$build$src$core$browser_events(this.mouseEnterHandler_),this.mouseEnterHandler_=null);this.mouseLeaveHandler_&&(unbind$$module$build$src$core$browser_events(this.mouseLeaveHandler_),this.mouseLeaveHandler_=null);this.onKeyDownHandler_&&(unbind$$module$build$src$core$browser_events(this.onKeyDownHandler_),
464
- this.onKeyDownHandler_=null);for(let a=0,b;b=this.menuItems_[a];a++)b.dispose();this.element_=null}getMenuItem_(a){const b=this.getElement();for(;a&&a!==b;){if(a.classList.contains("blocklyMenuItem"))for(let c=0,d;d=this.menuItems_[c];c++)if(d.getElement()===a)return d;a=a.parentElement}return null}setHighlighted(a){var b=this.highlightedItem_;b&&(b.setHighlighted(!1),this.highlightedItem_=null);a&&(a.setHighlighted(!0),this.highlightedItem_=a,b=this.getElement(),scrollIntoContainerView$$module$build$src$core$utils$style(a.getElement(),
465
- b),setState$$module$build$src$core$utils$aria(b,State$$module$build$src$core$utils$aria.ACTIVEDESCENDANT,a.getId()))}highlightNext(){const a=this.highlightedItem_?this.menuItems_.indexOf(this.highlightedItem_):-1;this.highlightHelper_(a,1)}highlightPrevious(){const a=this.highlightedItem_?this.menuItems_.indexOf(this.highlightedItem_):-1;this.highlightHelper_(0>a?this.menuItems_.length:a,-1)}highlightFirst_(){this.highlightHelper_(-1,1)}highlightLast_(){this.highlightHelper_(this.menuItems_.length,
466
- -1)}highlightHelper_(a,b){a+=b;let c;for(;c=this.menuItems_[a];){if(c.isEnabled()){this.setHighlighted(c);break}a+=b}}handleMouseOver_(a){(a=this.getMenuItem_(a.target))&&(a.isEnabled()?this.highlightedItem_!==a&&this.setHighlighted(a):this.setHighlighted(null))}handleClick_(a){const b=this.openingCoords;this.openingCoords=null;if(b&&"number"===typeof a.clientX){const c=new Coordinate$$module$build$src$core$utils$coordinate(a.clientX,a.clientY);if(1>Coordinate$$module$build$src$core$utils$coordinate.distance(b,
467
- c))return}(a=this.getMenuItem_(a.target))&&a.performAction()}handleMouseEnter_(a){this.focus()}handleMouseLeave_(a){this.getElement()&&(this.blur_(),this.setHighlighted(null))}handleKeyEvent_(a){if(this.menuItems_.length&&!(a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)){var b=this.highlightedItem_;switch(a.keyCode){case KeyCodes$$module$build$src$core$utils$keycodes.ENTER:case KeyCodes$$module$build$src$core$utils$keycodes.SPACE:b&&b.performAction();break;case KeyCodes$$module$build$src$core$utils$keycodes.UP:this.highlightPrevious();
468
- break;case KeyCodes$$module$build$src$core$utils$keycodes.DOWN:this.highlightNext();break;case KeyCodes$$module$build$src$core$utils$keycodes.PAGE_UP:case KeyCodes$$module$build$src$core$utils$keycodes.HOME:this.highlightFirst_();break;case KeyCodes$$module$build$src$core$utils$keycodes.PAGE_DOWN:case KeyCodes$$module$build$src$core$utils$keycodes.END:this.highlightLast_();break;default:return}a.preventDefault();a.stopPropagation()}}getSize(){const a=this.getElement(),b=getSize$$module$build$src$core$utils$style(a);
469
- b.height=a.scrollHeight;return b}},module$build$src$core$menu={};module$build$src$core$menu.Menu=Menu$$module$build$src$core$menu;var MenuItem$$module$build$src$core$menuitem=class{constructor(a,b){this.content=a;this.opt_value=b;this.enabled_=!0;this.element_=null;this.rightToLeft_=!1;this.roleName_=null;this.highlight_=this.checked_=this.checkable_=!1;this.actionHandler_=null}createDom(){const a=document.createElement("div");a.id=getNextUniqueId$$module$build$src$core$utils$idgenerator();this.element_=a;a.className="blocklyMenuItem goog-menuitem "+(this.enabled_?"":"blocklyMenuItemDisabled goog-menuitem-disabled ")+(this.checked_?
470
- "blocklyMenuItemSelected goog-option-selected ":"")+(this.highlight_?"blocklyMenuItemHighlight goog-menuitem-highlight ":"")+(this.rightToLeft_?"blocklyMenuItemRtl goog-menuitem-rtl ":"");const b=document.createElement("div");b.className="blocklyMenuItemContent goog-menuitem-content";if(this.checkable_){var c=document.createElement("div");c.className="blocklyMenuItemCheckbox goog-menuitem-checkbox";b.appendChild(c)}c=this.content;"string"===typeof this.content&&(c=document.createTextNode(this.content));
471
- b.appendChild(c);a.appendChild(b);this.roleName_&&setRole$$module$build$src$core$utils$aria(a,this.roleName_);setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.SELECTED,this.checkable_&&this.checked_||!1);setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.DISABLED,!this.enabled_);return a}dispose(){this.element_=null}getElement(){return this.element_}getId(){return this.element_.id}getValue(){let a;return null!=(a=this.opt_value)?
472
- a:null}setRightToLeft(a){this.rightToLeft_=a}setRole(a){this.roleName_=a}setCheckable(a){this.checkable_=a}setChecked(a){this.checked_=a}setHighlighted(a){this.highlight_=a;const b=this.getElement();b&&this.isEnabled()&&(a?(addClass$$module$build$src$core$utils$dom(b,"blocklyMenuItemHighlight"),addClass$$module$build$src$core$utils$dom(b,"goog-menuitem-highlight")):(removeClass$$module$build$src$core$utils$dom(b,"blocklyMenuItemHighlight"),removeClass$$module$build$src$core$utils$dom(b,"goog-menuitem-highlight")))}isEnabled(){return this.enabled_}setEnabled(a){this.enabled_=
473
- a}performAction(){this.isEnabled()&&this.actionHandler_&&this.actionHandler_(this)}onAction(a,b){this.actionHandler_=a.bind(b)}},module$build$src$core$menuitem={};module$build$src$core$menuitem.MenuItem=MenuItem$$module$build$src$core$menuitem;var FieldDropdown$$module$build$src$core$field_dropdown=class extends Field$$module$build$src$core$field{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.svgArrow_=this.arrow_=this.imageElement_=this.menu_=this.selectedMenuItem_=null;this.SERIALIZABLE=!0;this.CURSOR="default";this.suffixField=this.prefixField=this.generatedOptions_=null;a!==Field$$module$build$src$core$field.SKIP_SETUP&&(Array.isArray(a)&&(validateOptions$$module$build$src$core$field_dropdown(a),a=JSON.parse(JSON.stringify(a))),
474
- this.menuGenerator_=a,this.trimOptions_(),this.selectedOption_=this.getOptions(!1)[0],c&&this.configure_(c),this.setValue(this.selectedOption_[1]),b&&this.setValidator(b))}fromXml(a){this.isOptionListDynamic()&&this.getOptions(!1);this.setValue(a.textContent)}loadState(a){this.loadLegacyState(FieldDropdown$$module$build$src$core$field_dropdown,a)||(this.isOptionListDynamic()&&this.getOptions(!1),this.setValue(a))}initView(){this.shouldAddBorderRect_()?this.createBorderRect_():this.clickTarget_=this.sourceBlock_.getSvgRoot();
475
- this.createTextElement_();this.imageElement_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{},this.fieldGroup_);this.getConstants().FIELD_DROPDOWN_SVG_ARROW?this.createSVGArrow_():this.createTextArrow_();this.borderRect_&&addClass$$module$build$src$core$utils$dom(this.borderRect_,"blocklyDropdownRect")}shouldAddBorderRect_(){let a;return!this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW||this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW&&
476
- !(null==(a=this.getSourceBlock())?0:a.isShadow())}createTextArrow_(){this.arrow_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TSPAN,{},this.textElement_);let a;this.arrow_.appendChild(document.createTextNode((null==(a=this.getSourceBlock())?0:a.RTL)?FieldDropdown$$module$build$src$core$field_dropdown.ARROW_CHAR+" ":" "+FieldDropdown$$module$build$src$core$field_dropdown.ARROW_CHAR));let b;(null==(b=this.getSourceBlock())?0:b.RTL)?this.getTextElement().insertBefore(this.arrow_,
477
- this.textContent_):this.getTextElement().appendChild(this.arrow_)}createSVGArrow_(){this.svgArrow_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{height:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px",width:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px"},this.fieldGroup_);this.svgArrow_.setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI)}showEditor_(a){var b=this.getSourceBlock();
478
- if(!b)throw new UnattachedFieldError$$module$build$src$core$field;this.dropdownCreate_();this.menu_.openingCoords=a&&"number"===typeof a.clientX?new Coordinate$$module$build$src$core$utils$coordinate(a.clientX,a.clientY):null;clearContent$$module$build$src$core$dropdowndiv();a=this.menu_.render(getContentDiv$$module$build$src$core$dropdowndiv());addClass$$module$build$src$core$utils$dom(a,"blocklyDropdownMenu");if(this.getConstants().FIELD_DROPDOWN_COLOURED_DIV){a=b.isShadow()?b.getParent().getColour():
479
- b.getColour();b=b.isShadow()?b.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary;if(!b)throw Error("The renderer did not properly initialize the block style");setColour$$module$build$src$core$dropdowndiv(a,b)}showPositionedByField$$module$build$src$core$dropdowndiv(this,this.dropdownDispose_.bind(this));this.menu_.focus();this.selectedMenuItem_&&this.menu_.setHighlighted(this.selectedMenuItem_);this.applyColour()}dropdownCreate_(){const a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;
480
- const b=new Menu$$module$build$src$core$menu;b.setRole(Role$$module$build$src$core$utils$aria.LISTBOX);this.menu_=b;const c=this.getOptions(!1);this.selectedMenuItem_=null;for(let e=0;e<c.length;e++){var d=c[e][0];const f=c[e][1];if("object"===typeof d){const g=new Image(d.width,d.height);g.src=d.src;g.alt=d.alt||"";d=g}d=new MenuItem$$module$build$src$core$menuitem(d,f);d.setRole(Role$$module$build$src$core$utils$aria.OPTION);d.setRightToLeft(a.RTL);d.setCheckable(!0);b.addChild(d);d.setChecked(f===
481
- this.value_);f===this.value_&&(this.selectedMenuItem_=d);d.onAction(this.handleMenuActionEvent_,this)}}dropdownDispose_(){this.menu_&&this.menu_.dispose();this.selectedMenuItem_=this.menu_=null;this.applyColour()}handleMenuActionEvent_(a){hideIfOwner$$module$build$src$core$dropdowndiv(this,!0);this.onItemSelected_(this.menu_,a)}onItemSelected_(a,b){this.setValue(b.getValue())}trimOptions_(){const a=this.menuGenerator_;if(Array.isArray(a)){var b=!1;for(var c=0;c<a.length;c++){var d=a[c][0];"string"===
482
- typeof d?a[c][0]=replaceMessageReferences$$module$build$src$core$utils$parsing(d):(null!==d.alt&&(a[c][0].alt=replaceMessageReferences$$module$build$src$core$utils$parsing(d.alt)),b=!0)}if(!(b||2>a.length)){b=[];for(c=0;c<a.length;c++)b.push(a[c][0]);c=shortestStringLength$$module$build$src$core$utils$string(b);d=commonWordPrefix$$module$build$src$core$utils$string(b,c);var e=commonWordSuffix$$module$build$src$core$utils$string(b,c);!d&&!e||c<=d+e||(d&&(this.prefixField=b[0].substring(0,d-1)),e&&
483
- (this.suffixField=b[0].substr(1-e)),this.menuGenerator_=FieldDropdown$$module$build$src$core$field_dropdown.applyTrim_(a,d,e))}}}isOptionListDynamic(){return"function"===typeof this.menuGenerator_}getOptions(a){return this.isOptionListDynamic()?(this.generatedOptions_&&a||(this.generatedOptions_=this.menuGenerator_.call(this),validateOptions$$module$build$src$core$field_dropdown(this.generatedOptions_)),this.generatedOptions_):this.menuGenerator_}doClassValidation_(a){let b=!1;const c=this.getOptions(!0);
484
- for(let d=0,e;e=c[d];d++)if(e[1]===a){b=!0;break}return b?a:(this.sourceBlock_&&console.warn("Cannot set the dropdown's value to an unavailable option. Block type: "+this.sourceBlock_.type+", Field name: "+this.name+", Value: "+a),null)}doValueUpdate_(a){super.doValueUpdate_(a);a=this.getOptions(!0);for(let b=0,c;c=a[b];b++)c[1]===this.value_&&(this.selectedOption_=c)}applyColour(){const a=this.sourceBlock_.style;if(!a.colourSecondary)throw Error("The renderer did not properly initialize the block style");
485
- if(!a.colourTertiary)throw Error("The renderer did not properly initialize the block style");this.borderRect_&&(this.borderRect_.setAttribute("stroke",a.colourTertiary),this.menu_?this.borderRect_.setAttribute("fill",a.colourTertiary):this.borderRect_.setAttribute("fill","transparent"));this.sourceBlock_&&this.arrow_&&(this.sourceBlock_.isShadow()?this.arrow_.style.fill=a.colourSecondary:this.arrow_.style.fill=a.colourPrimary)}render_(){this.getTextContent().nodeValue="";this.imageElement_.style.display=
486
- "none";const a=this.selectedOption_&&this.selectedOption_[0];a&&"object"===typeof a?this.renderSelectedImage_(a):this.renderSelectedText_();this.positionBorderRect_()}renderSelectedImage_(a){const b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;this.imageElement_.style.display="";this.imageElement_.setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",a.src);this.imageElement_.setAttribute("height",a.height);this.imageElement_.setAttribute("width",
487
- a.width);const c=Number(a.height);a=Number(a.width);var d=!!this.borderRect_;const e=Math.max(d?this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT:0,c+IMAGE_Y_PADDING$$module$build$src$core$field_dropdown);d=d?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;let f;f=this.svgArrow_?this.positionSVGArrow_(a+d,e/2-this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE/2):getFastTextWidth$$module$build$src$core$utils$dom(this.arrow_,this.getConstants().FIELD_TEXT_FONTSIZE,this.getConstants().FIELD_TEXT_FONTWEIGHT,
488
- this.getConstants().FIELD_TEXT_FONTFAMILY);this.size_.width=a+f+2*d;this.size_.height=e;let g=0;b.RTL?this.imageElement_.setAttribute("x",(d+f).toString()):(g=a+f,this.getTextElement().setAttribute("text-anchor","end"),this.imageElement_.setAttribute("x",d.toString()));this.imageElement_.setAttribute("y",(e/2-c/2).toString());this.positionTextElement_(g+d,a+f)}renderSelectedText_(){this.getTextContent().nodeValue=this.getDisplayText_();var a=this.getTextElement();addClass$$module$build$src$core$utils$dom(a,
489
- "blocklyDropdownText");a.setAttribute("text-anchor","start");var b=!!this.borderRect_;a=Math.max(b?this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT:0,this.getConstants().FIELD_TEXT_HEIGHT);const c=getFastTextWidth$$module$build$src$core$utils$dom(this.getTextElement(),this.getConstants().FIELD_TEXT_FONTSIZE,this.getConstants().FIELD_TEXT_FONTWEIGHT,this.getConstants().FIELD_TEXT_FONTFAMILY);b=b?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;let d=0;this.svgArrow_&&(d=this.positionSVGArrow_(c+
490
- b,a/2-this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE/2));this.size_.width=c+d+2*b;this.size_.height=a;this.positionTextElement_(b,c)}positionSVGArrow_(a,b){if(!this.svgArrow_)return 0;const c=this.getSourceBlock();if(!c)throw new UnattachedFieldError$$module$build$src$core$field;const d=this.borderRect_?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0,e=this.getConstants().FIELD_DROPDOWN_SVG_ARROW_PADDING,f=this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE;this.svgArrow_.setAttribute("transform",
491
- "translate("+(c.RTL?d:a+e)+","+b+")");return f+e}getText_(){if(!this.selectedOption_)return null;const a=this.selectedOption_[0];return"object"===typeof a?a.alt:a}static fromJson(a){if(!a.options)throw Error("options are required for the dropdown field. The options property must be assigned an array of [humanReadableValue, languageNeutralValue] tuples.");return new this(a.options,void 0,a)}static applyTrim_(a,b,c){const d=[];for(let e=0;e<a.length;e++){let f=a[e][0];const g=a[e][1];f=f.substring(b,
492
- f.length-c);d[e]=[f,g]}return d}};FieldDropdown$$module$build$src$core$field_dropdown.CHECKMARK_OVERHANG=25;FieldDropdown$$module$build$src$core$field_dropdown.MAX_MENU_HEIGHT_VH=.45;var IMAGE_Y_OFFSET$$module$build$src$core$field_dropdown=5,IMAGE_Y_PADDING$$module$build$src$core$field_dropdown=2*IMAGE_Y_OFFSET$$module$build$src$core$field_dropdown;FieldDropdown$$module$build$src$core$field_dropdown.ARROW_CHAR=ANDROID$$module$build$src$core$utils$useragent?"\u25bc":"\u25be";
493
- register$$module$build$src$core$field_registry("field_dropdown",FieldDropdown$$module$build$src$core$field_dropdown);$.module$build$src$core$field_dropdown={};$.module$build$src$core$field_dropdown.FieldDropdown=FieldDropdown$$module$build$src$core$field_dropdown;var BubbleOpen$$module$build$src$core$events$events_bubble_open=class extends UiBase$$module$build$src$core$events$events_ui_base{constructor(a,b,c){super(a?a.workspace.id:void 0);this.type=BUBBLE_OPEN$$module$build$src$core$events$utils;a&&(this.blockId=a.id,this.isOpen=b,this.bubbleType=c)}toJson(){const a=super.toJson();if(void 0===this.isOpen)throw Error("Whether this event is for opening the bubble is undefined. Either pass the value to the constructor, or call fromJson");if(!this.bubbleType)throw Error("The type of bubble is undefined. Either pass the value to the constructor, or call fromJson");
465
+ var module$build$src$core$utils$keycodes={};module$build$src$core$utils$keycodes.KeyCodes=KeyCodes$$module$build$src$core$utils$keycodes;var Menu$$module$build$src$core$menu=class{constructor(){this.menuItems=[];this.roleName=this.element=this.onKeyDownHandler=this.mouseLeaveHandler=this.mouseEnterHandler=this.clickHandler=this.mouseOverHandler=this.highlightedItem=this.openingCoords=null}addChild(a){this.menuItems.push(a)}render(a){const b=document.createElement("div");b.className="blocklyMenu goog-menu blocklyNonSelectable";b.tabIndex=0;this.roleName&&setRole$$module$build$src$core$utils$aria(b,this.roleName);this.element=b;for(let c=
466
+ 0,d;d=this.menuItems[c];c++)b.appendChild(d.createDom());this.mouseOverHandler=conditionalBind$$module$build$src$core$browser_events(b,"mouseover",this,this.handleMouseOver,!0);this.clickHandler=conditionalBind$$module$build$src$core$browser_events(b,"click",this,this.handleClick,!0);this.mouseEnterHandler=conditionalBind$$module$build$src$core$browser_events(b,"mouseenter",this,this.handleMouseEnter,!0);this.mouseLeaveHandler=conditionalBind$$module$build$src$core$browser_events(b,"mouseleave",this,
467
+ this.handleMouseLeave,!0);this.onKeyDownHandler=conditionalBind$$module$build$src$core$browser_events(b,"keydown",this,this.handleKeyEvent);a.appendChild(b);return b}getElement(){return this.element}focus(){const a=this.getElement();a&&(a.focus({preventScroll:!0}),addClass$$module$build$src$core$utils$dom(a,"blocklyFocused"))}blur(){const a=this.getElement();a&&(a.blur(),removeClass$$module$build$src$core$utils$dom(a,"blocklyFocused"))}setRole(a){this.roleName=a}dispose(){this.mouseOverHandler&&(unbind$$module$build$src$core$browser_events(this.mouseOverHandler),
468
+ this.mouseOverHandler=null);this.clickHandler&&(unbind$$module$build$src$core$browser_events(this.clickHandler),this.clickHandler=null);this.mouseEnterHandler&&(unbind$$module$build$src$core$browser_events(this.mouseEnterHandler),this.mouseEnterHandler=null);this.mouseLeaveHandler&&(unbind$$module$build$src$core$browser_events(this.mouseLeaveHandler),this.mouseLeaveHandler=null);this.onKeyDownHandler&&(unbind$$module$build$src$core$browser_events(this.onKeyDownHandler),this.onKeyDownHandler=null);
469
+ for(let a=0,b;b=this.menuItems[a];a++)b.dispose();this.element=null}getMenuItem(a){const b=this.getElement();for(;a&&a!==b;){if(a.classList.contains("blocklyMenuItem"))for(let c=0,d;d=this.menuItems[c];c++)if(d.getElement()===a)return d;a=a.parentElement}return null}setHighlighted(a){var b=this.highlightedItem;b&&(b.setHighlighted(!1),this.highlightedItem=null);a&&(a.setHighlighted(!0),this.highlightedItem=a,b=this.getElement(),scrollIntoContainerView$$module$build$src$core$utils$style(a.getElement(),
470
+ b),setState$$module$build$src$core$utils$aria(b,State$$module$build$src$core$utils$aria.ACTIVEDESCENDANT,a.getId()))}highlightNext(){const a=this.highlightedItem?this.menuItems.indexOf(this.highlightedItem):-1;this.highlightHelper(a,1)}highlightPrevious(){const a=this.highlightedItem?this.menuItems.indexOf(this.highlightedItem):-1;this.highlightHelper(0>a?this.menuItems.length:a,-1)}highlightFirst(){this.highlightHelper(-1,1)}highlightLast(){this.highlightHelper(this.menuItems.length,-1)}highlightHelper(a,
471
+ b){a+=b;let c;for(;c=this.menuItems[a];){if(c.isEnabled()){this.setHighlighted(c);break}a+=b}}handleMouseOver(a){(a=this.getMenuItem(a.target))&&(a.isEnabled()?this.highlightedItem!==a&&this.setHighlighted(a):this.setHighlighted(null))}handleClick(a){const b=this.openingCoords;this.openingCoords=null;if(b&&"number"===typeof a.clientX){const c=new Coordinate$$module$build$src$core$utils$coordinate(a.clientX,a.clientY);if(1>Coordinate$$module$build$src$core$utils$coordinate.distance(b,c))return}(a=
472
+ this.getMenuItem(a.target))&&a.performAction()}handleMouseEnter(a){this.focus()}handleMouseLeave(a){this.getElement()&&(this.blur(),this.setHighlighted(null))}handleKeyEvent(a){if(this.menuItems.length&&!(a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)){var b=this.highlightedItem;switch(a.keyCode){case KeyCodes$$module$build$src$core$utils$keycodes.ENTER:case KeyCodes$$module$build$src$core$utils$keycodes.SPACE:b&&b.performAction();break;case KeyCodes$$module$build$src$core$utils$keycodes.UP:this.highlightPrevious();
473
+ break;case KeyCodes$$module$build$src$core$utils$keycodes.DOWN:this.highlightNext();break;case KeyCodes$$module$build$src$core$utils$keycodes.PAGE_UP:case KeyCodes$$module$build$src$core$utils$keycodes.HOME:this.highlightFirst();break;case KeyCodes$$module$build$src$core$utils$keycodes.PAGE_DOWN:case KeyCodes$$module$build$src$core$utils$keycodes.END:this.highlightLast();break;default:return}a.preventDefault();a.stopPropagation()}}getSize(){const a=this.getElement(),b=getSize$$module$build$src$core$utils$style(a);
474
+ b.height=a.scrollHeight;return b}},module$build$src$core$menu={};module$build$src$core$menu.Menu=Menu$$module$build$src$core$menu;var MenuItem$$module$build$src$core$menuitem=class{constructor(a,b){this.content=a;this.opt_value=b;this.enabled=!0;this.element=null;this.rightToLeft=!1;this.roleName=null;this.highlight=this.checked=this.checkable=!1;this.actionHandler=null}createDom(){const a=document.createElement("div");a.id=getNextUniqueId$$module$build$src$core$utils$idgenerator();this.element=a;a.className="blocklyMenuItem goog-menuitem "+(this.enabled?"":"blocklyMenuItemDisabled goog-menuitem-disabled ")+(this.checked?"blocklyMenuItemSelected goog-option-selected ":
475
+ "")+(this.highlight?"blocklyMenuItemHighlight goog-menuitem-highlight ":"")+(this.rightToLeft?"blocklyMenuItemRtl goog-menuitem-rtl ":"");const b=document.createElement("div");b.className="blocklyMenuItemContent goog-menuitem-content";if(this.checkable){var c=document.createElement("div");c.className="blocklyMenuItemCheckbox goog-menuitem-checkbox";b.appendChild(c)}c=this.content;"string"===typeof this.content&&(c=document.createTextNode(this.content));b.appendChild(c);a.appendChild(b);this.roleName&&
476
+ setRole$$module$build$src$core$utils$aria(a,this.roleName);setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.SELECTED,this.checkable&&this.checked||!1);setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.DISABLED,!this.enabled);return a}dispose(){this.element=null}getElement(){return this.element}getId(){return this.element.id}getValue(){let a;return null!=(a=this.opt_value)?a:null}setRightToLeft(a){this.rightToLeft=a}setRole(a){this.roleName=
477
+ a}setCheckable(a){this.checkable=a}setChecked(a){this.checked=a}setHighlighted(a){this.highlight=a;const b=this.getElement();b&&this.isEnabled()&&(a?(addClass$$module$build$src$core$utils$dom(b,"blocklyMenuItemHighlight"),addClass$$module$build$src$core$utils$dom(b,"goog-menuitem-highlight")):(removeClass$$module$build$src$core$utils$dom(b,"blocklyMenuItemHighlight"),removeClass$$module$build$src$core$utils$dom(b,"goog-menuitem-highlight")))}isEnabled(){return this.enabled}setEnabled(a){this.enabled=
478
+ a}performAction(){this.isEnabled()&&this.actionHandler&&this.actionHandler(this)}onAction(a,b){this.actionHandler=a.bind(b)}},module$build$src$core$menuitem={};module$build$src$core$menuitem.MenuItem=MenuItem$$module$build$src$core$menuitem;var FieldDropdown$$module$build$src$core$field_dropdown=class extends Field$$module$build$src$core$field{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.svgArrow_=this.arrow_=this.imageElement_=this.menu_=this.selectedMenuItem_=null;this.SERIALIZABLE=!0;this.CURSOR="default";this.clickTarget_=this.suffixField=this.prefixField=this.generatedOptions_=null;isMenuGenerator$$module$build$src$core$field_dropdown(a)&&(Array.isArray(a)?(validateOptions$$module$build$src$core$field_dropdown(a),
479
+ a=trimOptions$$module$build$src$core$field_dropdown(a),this.menuGenerator_=a.options,this.prefixField=a.prefix||null,this.suffixField=a.suffix||null):this.menuGenerator_=a,this.selectedOption_=this.getOptions(!1)[0],c&&this.configure_(c),this.setValue(this.selectedOption_[1]),b&&this.setValidator(b))}fromXml(a){this.isOptionListDynamic()&&this.getOptions(!1);this.setValue(a.textContent)}loadState(a){this.loadLegacyState(FieldDropdown$$module$build$src$core$field_dropdown,a)||(this.isOptionListDynamic()&&
480
+ this.getOptions(!1),this.setValue(a))}initView(){this.shouldAddBorderRect_()?this.createBorderRect_():this.clickTarget_=this.sourceBlock_.getSvgRoot();this.createTextElement_();this.imageElement_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{},this.fieldGroup_);this.getConstants().FIELD_DROPDOWN_SVG_ARROW?this.createSVGArrow_():this.createTextArrow_();this.borderRect_&&addClass$$module$build$src$core$utils$dom(this.borderRect_,"blocklyDropdownRect")}shouldAddBorderRect_(){let a;
481
+ return!this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW||this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW&&!(null==(a=this.getSourceBlock())?0:a.isShadow())}createTextArrow_(){this.arrow_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TSPAN,{},this.textElement_);let a;this.arrow_.appendChild(document.createTextNode((null==(a=this.getSourceBlock())?0:a.RTL)?FieldDropdown$$module$build$src$core$field_dropdown.ARROW_CHAR+" ":" "+FieldDropdown$$module$build$src$core$field_dropdown.ARROW_CHAR));
482
+ let b;(null==(b=this.getSourceBlock())?0:b.RTL)?this.getTextElement().insertBefore(this.arrow_,this.textContent_):this.getTextElement().appendChild(this.arrow_)}createSVGArrow_(){this.svgArrow_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{height:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px",width:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px"},this.fieldGroup_);this.svgArrow_.setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,
483
+ "xlink:href",this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI)}showEditor_(a){var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;this.dropdownCreate_();this.menu_.openingCoords=a&&"number"===typeof a.clientX?new Coordinate$$module$build$src$core$utils$coordinate(a.clientX,a.clientY):null;clearContent$$module$build$src$core$dropdowndiv();a=this.menu_.render(getContentDiv$$module$build$src$core$dropdowndiv());addClass$$module$build$src$core$utils$dom(a,
484
+ "blocklyDropdownMenu");this.getConstants().FIELD_DROPDOWN_COLOURED_DIV&&(a=b.isShadow()?b.getParent().getColour():b.getColour(),b=b.isShadow()?b.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary,setColour$$module$build$src$core$dropdowndiv(a,b));showPositionedByField$$module$build$src$core$dropdowndiv(this,this.dropdownDispose_.bind(this));this.menu_.focus();this.selectedMenuItem_&&this.menu_.setHighlighted(this.selectedMenuItem_);this.applyColour()}dropdownCreate_(){const a=
485
+ this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;const b=new Menu$$module$build$src$core$menu;b.setRole(Role$$module$build$src$core$utils$aria.LISTBOX);this.menu_=b;const c=this.getOptions(!1);this.selectedMenuItem_=null;for(let e=0;e<c.length;e++){const [f,g]=c[e];if("object"===typeof f){var d=new Image(f.width,f.height);d.src=f.src;d.alt=f.alt||""}else d=f;d=new MenuItem$$module$build$src$core$menuitem(d,g);d.setRole(Role$$module$build$src$core$utils$aria.OPTION);
486
+ d.setRightToLeft(a.RTL);d.setCheckable(!0);b.addChild(d);d.setChecked(g===this.value_);g===this.value_&&(this.selectedMenuItem_=d);d.onAction(this.handleMenuActionEvent_,this)}}dropdownDispose_(){this.menu_&&this.menu_.dispose();this.selectedMenuItem_=this.menu_=null;this.applyColour()}handleMenuActionEvent_(a){hideIfOwner$$module$build$src$core$dropdowndiv(this,!0);this.onItemSelected_(this.menu_,a)}onItemSelected_(a,b){this.setValue(b.getValue())}isOptionListDynamic(){return"function"===typeof this.menuGenerator_}getOptions(a){if(!this.menuGenerator_)throw TypeError("A menu generator was never defined.");
487
+ if(Array.isArray(this.menuGenerator_))return this.menuGenerator_;if(a&&this.generatedOptions_)return this.generatedOptions_;this.generatedOptions_=this.menuGenerator_();validateOptions$$module$build$src$core$field_dropdown(this.generatedOptions_);return this.generatedOptions_}doClassValidation_(a){return this.getOptions(!0).some(b=>b[1]===a)?a:(this.sourceBlock_&&console.warn("Cannot set the dropdown's value to an unavailable option. Block type: "+this.sourceBlock_.type+", Field name: "+this.name+
488
+ ", Value: "+a),null)}doValueUpdate_(a){super.doValueUpdate_(a);a=this.getOptions(!0);for(let b=0,c;c=a[b];b++)c[1]===this.value_&&(this.selectedOption_=c)}applyColour(){const a=this.sourceBlock_.style;this.borderRect_&&(this.borderRect_.setAttribute("stroke",a.colourTertiary),this.menu_?this.borderRect_.setAttribute("fill",a.colourTertiary):this.borderRect_.setAttribute("fill","transparent"));this.sourceBlock_&&this.arrow_&&(this.sourceBlock_.isShadow()?this.arrow_.style.fill=a.colourSecondary:this.arrow_.style.fill=
489
+ a.colourPrimary)}render_(){this.getTextContent().nodeValue="";this.imageElement_.style.display="none";const a=this.selectedOption_&&this.selectedOption_[0];a&&"object"===typeof a?this.renderSelectedImage_(a):this.renderSelectedText_();this.positionBorderRect_()}renderSelectedImage_(a){const b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;this.imageElement_.style.display="";this.imageElement_.setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",
490
+ a.src);this.imageElement_.setAttribute("height",`${a.height}`);this.imageElement_.setAttribute("width",`${a.width}`);const c=Number(a.height);a=Number(a.width);var d=!!this.borderRect_;const e=Math.max(d?this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT:0,c+IMAGE_Y_PADDING$$module$build$src$core$field_dropdown);d=d?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0;let f;f=this.svgArrow_?this.positionSVGArrow_(a+d,e/2-this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE/2):getFastTextWidth$$module$build$src$core$utils$dom(this.arrow_,
491
+ this.getConstants().FIELD_TEXT_FONTSIZE,this.getConstants().FIELD_TEXT_FONTWEIGHT,this.getConstants().FIELD_TEXT_FONTFAMILY);this.size_.width=a+f+2*d;this.size_.height=e;let g=0;b.RTL?this.imageElement_.setAttribute("x",(d+f).toString()):(g=a+f,this.getTextElement().setAttribute("text-anchor","end"),this.imageElement_.setAttribute("x",d.toString()));this.imageElement_.setAttribute("y",(e/2-c/2).toString());this.positionTextElement_(g+d,a+f)}renderSelectedText_(){this.getTextContent().nodeValue=this.getDisplayText_();
492
+ var a=this.getTextElement();addClass$$module$build$src$core$utils$dom(a,"blocklyDropdownText");a.setAttribute("text-anchor","start");var b=!!this.borderRect_;a=Math.max(b?this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT:0,this.getConstants().FIELD_TEXT_HEIGHT);const c=getFastTextWidth$$module$build$src$core$utils$dom(this.getTextElement(),this.getConstants().FIELD_TEXT_FONTSIZE,this.getConstants().FIELD_TEXT_FONTWEIGHT,this.getConstants().FIELD_TEXT_FONTFAMILY);b=b?this.getConstants().FIELD_BORDER_RECT_X_PADDING:
493
+ 0;let d=0;this.svgArrow_&&(d=this.positionSVGArrow_(c+b,a/2-this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE/2));this.size_.width=c+d+2*b;this.size_.height=a;this.positionTextElement_(b,c)}positionSVGArrow_(a,b){if(!this.svgArrow_)return 0;const c=this.getSourceBlock();if(!c)throw new UnattachedFieldError$$module$build$src$core$field;const d=this.borderRect_?this.getConstants().FIELD_BORDER_RECT_X_PADDING:0,e=this.getConstants().FIELD_DROPDOWN_SVG_ARROW_PADDING,f=this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE;
494
+ this.svgArrow_.setAttribute("transform","translate("+(c.RTL?d:a+e)+","+b+")");return f+e}getText_(){if(!this.selectedOption_)return null;const a=this.selectedOption_[0];return"object"===typeof a?a.alt:a}static fromJson(a){if(!a.options)throw Error("options are required for the dropdown field. The options property must be assigned an array of [humanReadableValue, languageNeutralValue] tuples.");return new this(a.options,void 0,a)}};
495
+ FieldDropdown$$module$build$src$core$field_dropdown.CHECKMARK_OVERHANG=25;FieldDropdown$$module$build$src$core$field_dropdown.MAX_MENU_HEIGHT_VH=.45;FieldDropdown$$module$build$src$core$field_dropdown.ARROW_CHAR="\u25be";var IMAGE_Y_OFFSET$$module$build$src$core$field_dropdown=5,IMAGE_Y_PADDING$$module$build$src$core$field_dropdown=2*IMAGE_Y_OFFSET$$module$build$src$core$field_dropdown;register$$module$build$src$core$field_registry("field_dropdown",FieldDropdown$$module$build$src$core$field_dropdown);
496
+ $.module$build$src$core$field_dropdown={};$.module$build$src$core$field_dropdown.FieldDropdown=FieldDropdown$$module$build$src$core$field_dropdown;var BubbleOpen$$module$build$src$core$events$events_bubble_open=class extends UiBase$$module$build$src$core$events$events_ui_base{constructor(a,b,c){super(a?a.workspace.id:void 0);this.type=BUBBLE_OPEN$$module$build$src$core$events$utils;a&&(this.blockId=a.id,this.isOpen=b,this.bubbleType=c)}toJson(){const a=super.toJson();if(void 0===this.isOpen)throw Error("Whether this event is for opening the bubble is undefined. Either pass the value to the constructor, or call fromJson");if(!this.bubbleType)throw Error("The type of bubble is undefined. Either pass the value to the constructor, or call fromJson");
494
497
  a.isOpen=this.isOpen;a.bubbleType=this.bubbleType;a.blockId=this.blockId||"";return a}fromJson(a){super.fromJson(a);this.isOpen=a.isOpen;this.bubbleType=a.bubbleType;this.blockId=a.blockId}},BubbleType$$module$build$src$core$events$events_bubble_open;(function(a){a.MUTATOR="mutator";a.COMMENT="comment";a.WARNING="warning"})(BubbleType$$module$build$src$core$events$events_bubble_open||(BubbleType$$module$build$src$core$events$events_bubble_open={}));
495
- register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,BUBBLE_OPEN$$module$build$src$core$events$utils,BubbleOpen$$module$build$src$core$events$events_bubble_open);var module$build$src$core$events$events_bubble_open={};module$build$src$core$events$events_bubble_open.BubbleOpen=BubbleOpen$$module$build$src$core$events$events_bubble_open;module$build$src$core$events$events_bubble_open.BubbleType=BubbleType$$module$build$src$core$events$events_bubble_open;var Scrollbar$$module$build$src$core$scrollbar=class{constructor(a,b,c,d,e){this.workspace=a;this.horizontal=b;this.oldHostMetrics_=null;this.ratio=1;this.startDragHandle=this.handlePosition_=this.handleLength_=this.scrollbarLength_=this.startDragMouse_=0;this.containerVisible_=this.isVisible_=!0;this.svgGroup_=this.outerSvg_=this.svgHandle_=this.svgBackground_=null;this.lengthAttribute_="width";this.positionAttribute_="x";this.onMouseMoveWrapper_=this.onMouseUpWrapper_=null;this.pair_=c||!1;this.margin_=
496
- void 0!==e?e:Scrollbar$$module$build$src$core$scrollbar.DEFAULT_SCROLLBAR_MARGIN;this.origin_=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.createDom_(d);this.position=new Coordinate$$module$build$src$core$utils$coordinate(0,0);a=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness;b?(this.svgBackground_.setAttribute("height",String(a)),this.outerSvg_.setAttribute("height",String(a)),this.svgHandle_.setAttribute("height",String(a-5)),this.svgHandle_.setAttribute("y","2.5")):
497
- (this.svgBackground_.setAttribute("width",String(a)),this.outerSvg_.setAttribute("width",String(a)),this.svgHandle_.setAttribute("width",String(a-5)),this.svgHandle_.setAttribute("x","2.5"),this.lengthAttribute_="height",this.positionAttribute_="y");this.onMouseDownBarWrapper_=conditionalBind$$module$build$src$core$browser_events(this.svgBackground_,"mousedown",this,this.onMouseDownBar_);this.onMouseDownHandleWrapper_=conditionalBind$$module$build$src$core$browser_events(this.svgHandle_,"mousedown",
498
- this,this.onMouseDownHandle_)}dispose(){this.cleanUp_();this.onMouseDownBarWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseDownBarWrapper_),this.onMouseDownBarWrapper_=null);this.onMouseDownHandleWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseDownHandleWrapper_),this.onMouseDownHandleWrapper_=null);removeNode$$module$build$src$core$utils$dom(this.outerSvg_);this.svgBackground_=this.svgGroup_=this.outerSvg_=null;this.svgHandle_&&(this.workspace.getThemeManager().unsubscribe(this.svgHandle_),
499
- this.svgHandle_=null)}constrainHandleLength_(a){return a=0>=a||isNaN(a)?0:Math.min(a,this.scrollbarLength_)}setHandleLength_(a){this.handleLength_=a;this.svgHandle_.setAttribute(this.lengthAttribute_,String(this.handleLength_))}constrainHandlePosition_(a){return a=0>=a||isNaN(a)?0:Math.min(a,this.scrollbarLength_-this.handleLength_)}setHandlePosition(a){this.handlePosition_=a;this.svgHandle_.setAttribute(this.positionAttribute_,String(this.handlePosition_))}setScrollbarLength_(a){this.scrollbarLength_=
500
- a;this.outerSvg_.setAttribute(this.lengthAttribute_,String(this.scrollbarLength_));this.svgBackground_.setAttribute(this.lengthAttribute_,String(this.scrollbarLength_))}setPosition(a,b){this.position.x=a;this.position.y=b;a=this.position.x+this.origin_.x;b=this.position.y+this.origin_.y;this.outerSvg_&&setCssTransform$$module$build$src$core$utils$dom(this.outerSvg_,"translate("+a+"px,"+b+"px)")}resize(a){if(!a&&(a=this.workspace.getMetrics(),!a))return;this.oldHostMetrics_&&Scrollbar$$module$build$src$core$scrollbar.metricsAreEquivalent_(a,
501
- this.oldHostMetrics_)||(this.horizontal?this.resizeHorizontal_(a):this.resizeVertical_(a),this.oldHostMetrics_=a,this.updateMetrics_())}requiresViewResize_(a){return this.oldHostMetrics_?this.oldHostMetrics_.viewWidth!==a.viewWidth||this.oldHostMetrics_.viewHeight!==a.viewHeight||this.oldHostMetrics_.absoluteLeft!==a.absoluteLeft||this.oldHostMetrics_.absoluteTop!==a.absoluteTop:!0}resizeHorizontal_(a){this.requiresViewResize_(a)?this.resizeViewHorizontal(a):this.resizeContentHorizontal(a)}resizeViewHorizontal(a){var b=
502
- a.viewWidth-2*this.margin_;this.pair_&&(b-=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness);this.setScrollbarLength_(Math.max(0,b));b=a.absoluteLeft+this.margin_;this.pair_&&this.workspace.RTL&&(b+=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness);this.setPosition(b,a.absoluteTop+a.viewHeight-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness-this.margin_);this.resizeContentHorizontal(a)}resizeContentHorizontal(a){if(a.viewWidth>=a.scrollWidth)this.setHandleLength_(this.scrollbarLength_),
503
- this.setHandlePosition(0),this.pair_||this.setVisible(!1);else{this.pair_||this.setVisible(!0);var b=this.scrollbarLength_*a.viewWidth/a.scrollWidth;b=this.constrainHandleLength_(b);this.setHandleLength_(b);b=a.scrollWidth-a.viewWidth;var c=this.scrollbarLength_-this.handleLength_;a=(a.viewLeft-a.scrollLeft)/b*c;a=this.constrainHandlePosition_(a);this.setHandlePosition(a);this.ratio=c/b}}resizeVertical_(a){this.requiresViewResize_(a)?this.resizeViewVertical(a):this.resizeContentVertical(a)}resizeViewVertical(a){let b=
504
- a.viewHeight-2*this.margin_;this.pair_&&(b-=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness);this.setScrollbarLength_(Math.max(0,b));this.setPosition(this.workspace.RTL?a.absoluteLeft+this.margin_:a.absoluteLeft+a.viewWidth-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness-this.margin_,a.absoluteTop+this.margin_);this.resizeContentVertical(a)}resizeContentVertical(a){if(a.viewHeight>=a.scrollHeight)this.setHandleLength_(this.scrollbarLength_),this.setHandlePosition(0),this.pair_||
505
- this.setVisible(!1);else{this.pair_||this.setVisible(!0);var b=this.scrollbarLength_*a.viewHeight/a.scrollHeight;b=this.constrainHandleLength_(b);this.setHandleLength_(b);b=a.scrollHeight-a.viewHeight;var c=this.scrollbarLength_-this.handleLength_;a=(a.viewTop-a.scrollTop)/b*c;a=this.constrainHandlePosition_(a);this.setHandlePosition(a);this.ratio=c/b}}createDom_(a){let b="blocklyScrollbar"+(this.horizontal?"Horizontal":"Vertical");a&&(b+=" "+a);this.outerSvg_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,
506
- {"class":b});this.svgGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{},this.outerSvg_);this.svgBackground_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyScrollbarBackground"},this.svgGroup_);a=Math.floor((Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness-5)/2);this.svgHandle_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyScrollbarHandle",
507
- rx:a,ry:a},this.svgGroup_);this.workspace.getThemeManager().subscribe(this.svgHandle_,"scrollbarColour","fill");this.workspace.getThemeManager().subscribe(this.svgHandle_,"scrollbarOpacity","fill-opacity");insertAfter$$module$build$src$core$utils$dom(this.outerSvg_,this.workspace.getParentSvg())}isVisible(){return this.isVisible_}setContainerVisible(a){const b=a!==this.containerVisible_;this.containerVisible_=a;b&&this.updateDisplay_()}setVisible(a){const b=a!==this.isVisible();if(this.pair_)throw Error("Unable to toggle visibility of paired scrollbars.");
508
- this.isVisible_=a;b&&this.updateDisplay_()}updateDisplay_(){this.containerVisible_&&this.isVisible()?this.outerSvg_.setAttribute("display","block"):this.outerSvg_.setAttribute("display","none")}onMouseDownBar_(a){this.workspace.markFocused();clearTouchIdentifier$$module$build$src$core$touch();this.cleanUp_();if(isRightButton$$module$build$src$core$browser_events(a))a.stopPropagation();else{var b=mouseToSvg$$module$build$src$core$browser_events(a,this.workspace.getParentSvg(),this.workspace.getInverseScreenCTM());
509
- b=this.horizontal?b.x:b.y;var c=getInjectionDivXY$$module$build$src$core$utils$svg_math(this.svgHandle_);c=this.horizontal?c.x:c.y;var d=this.handlePosition_,e=.95*this.handleLength_;b<=c?d-=e:b>=c+this.handleLength_&&(d+=e);this.setHandlePosition(this.constrainHandlePosition_(d));this.updateMetrics_();a.stopPropagation();a.preventDefault()}}onMouseDownHandle_(a){this.workspace.markFocused();this.cleanUp_();isRightButton$$module$build$src$core$browser_events(a)?a.stopPropagation():(this.startDragHandle=
510
- this.handlePosition_,this.workspace.setupDragSurface(),this.startDragMouse_=this.horizontal?a.clientX:a.clientY,this.onMouseUpWrapper_=conditionalBind$$module$build$src$core$browser_events(document,"mouseup",this,this.onMouseUpHandle_),this.onMouseMoveWrapper_=conditionalBind$$module$build$src$core$browser_events(document,"mousemove",this,this.onMouseMoveHandle_),a.stopPropagation(),a.preventDefault())}onMouseMoveHandle_(a){this.setHandlePosition(this.constrainHandlePosition_(this.startDragHandle+
511
- ((this.horizontal?a.clientX:a.clientY)-this.startDragMouse_)));this.updateMetrics_()}onMouseUpHandle_(){this.workspace.resetDragSurface();clearTouchIdentifier$$module$build$src$core$touch();this.cleanUp_()}cleanUp_(){this.workspace.hideChaff(!0);this.onMouseUpWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onMouseMoveWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseMoveWrapper_),this.onMouseMoveWrapper_=null)}getRatio_(){let a=
512
- this.handlePosition_/(this.scrollbarLength_-this.handleLength_);isNaN(a)&&(a=0);return a}updateMetrics_(){const a=this.getRatio_();this.horizontal?this.workspace.setMetrics({x:a}):this.workspace.setMetrics({y:a})}set(a,b){this.setHandlePosition(this.constrainHandlePosition_(a*this.ratio));(b||void 0===b)&&this.updateMetrics_()}setOrigin(a,b){this.origin_=new Coordinate$$module$build$src$core$utils$coordinate(a,b)}static metricsAreEquivalent_(a,b){return a.viewWidth===b.viewWidth&&a.viewHeight===b.viewHeight&&
513
- a.viewLeft===b.viewLeft&&a.viewTop===b.viewTop&&a.absoluteTop===b.absoluteTop&&a.absoluteLeft===b.absoluteLeft&&a.scrollWidth===b.scrollWidth&&a.scrollHeight===b.scrollHeight&&a.scrollLeft===b.scrollLeft&&a.scrollTop===b.scrollTop}};Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness=TOUCH_ENABLED$$module$build$src$core$touch?25:15;Scrollbar$$module$build$src$core$scrollbar.DEFAULT_SCROLLBAR_MARGIN=.5;var module$build$src$core$scrollbar={};module$build$src$core$scrollbar.Scrollbar=Scrollbar$$module$build$src$core$scrollbar;var Bubble$$module$build$src$core$bubble=class{constructor(a,b,c,d,e,f){this.resizeGroup_=this.bubbleBack_=this.bubbleArrow_=this.bubbleGroup_=null;this.height_=this.width_=this.relativeTop_=this.relativeLeft_=0;this.autoLayout_=!0;this.onMouseDownResizeWrapper_=this.onMouseDownBubbleWrapper_=this.moveCallback_=this.resizeCallback_=null;this.rendered_=this.disposed=!1;this.workspace_=a;this.content_=b;this.shape_=c;c=Bubble$$module$build$src$core$bubble.ARROW_ANGLE;this.workspace_.RTL&&(c=-c);this.arrow_radians_=
514
- toRadians$$module$build$src$core$utils$math(c);a.getBubbleCanvas().appendChild(this.createDom_(b,!(!e||!f)));this.setAnchorLocation(d);e&&f||(a=this.content_.getBBox(),e=a.width+2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,f=a.height+2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH);this.setBubbleSize(e,f);this.positionBubble_();this.renderArrow_();this.rendered_=!0}createDom_(a,b){this.bubbleGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,
515
- {});var c={filter:"url(#"+this.workspace_.getRenderer().getConstants().embossFilterId+")"};JavaFx$$module$build$src$core$utils$useragent&&(c={});c=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,c,this.bubbleGroup_);this.bubbleArrow_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{},c);this.bubbleBack_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyDraggable",
516
- x:0,y:0,rx:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,ry:Bubble$$module$build$src$core$bubble.BORDER_WIDTH},c);b?(this.resizeGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),b=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.POLYGON,{points:"0,x x,x x,0".replace(/x/g,b.toString())},
517
- this.resizeGroup_),createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{"class":"blocklyResizeLine",x1:b/3,y1:b-1,x2:b-1,y2:b/3},this.resizeGroup_),createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{"class":"blocklyResizeLine",x1:2*b/3,y1:b-1,x2:b-1,y2:2*b/3},this.resizeGroup_)):this.resizeGroup_=null;this.workspace_.options.readOnly||(this.onMouseDownBubbleWrapper_=conditionalBind$$module$build$src$core$browser_events(this.bubbleBack_,
518
- "mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&(this.onMouseDownResizeWrapper_=conditionalBind$$module$build$src$core$browser_events(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_)));this.bubbleGroup_.appendChild(a);return this.bubbleGroup_}getSvgRoot(){return this.bubbleGroup_}setSvgId(a){let b;null==(b=this.bubbleGroup_)||b.setAttribute("data-block-id",a)}bubbleMouseDown_(a){const b=this.workspace_.getGesture(a);b&&b.handleBubbleStart(a,this)}showContextMenu(a){}isDeletable(){return!1}setDeleteStyle(a){}resizeMouseDown_(a){this.promote();
519
- Bubble$$module$build$src$core$bubble.unbindDragEvents_();isRightButton$$module$build$src$core$browser_events(a)||(this.workspace_.startDrag(a,new Coordinate$$module$build$src$core$utils$coordinate(this.workspace_.RTL?-this.width_:this.width_,this.height_)),Bubble$$module$build$src$core$bubble.onMouseUpWrapper_=conditionalBind$$module$build$src$core$browser_events(document,"mouseup",this,Bubble$$module$build$src$core$bubble.bubbleMouseUp_),Bubble$$module$build$src$core$bubble.onMouseMoveWrapper_=conditionalBind$$module$build$src$core$browser_events(document,
520
- "mousemove",this,this.resizeMouseMove_),this.workspace_.hideChaff());a.stopPropagation()}resizeMouseMove_(a){this.autoLayout_=!1;a=this.workspace_.moveDrag(a);this.setBubbleSize(this.workspace_.RTL?-a.x:a.x,a.y);this.workspace_.RTL&&this.positionBubble_()}registerResizeEvent(a){this.resizeCallback_=a}registerMoveEvent(a){this.moveCallback_=a}promote(){let a;const b=null==(a=this.bubbleGroup_)?void 0:a.parentNode;return(null==b?void 0:b.lastChild)!==this.bubbleGroup_&&this.bubbleGroup_?(null==b||b.appendChild(this.bubbleGroup_),
521
- !0):!1}setAnchorLocation(a){this.anchorXY_=a;this.rendered_&&this.positionBubble_()}layoutBubble_(){var a=this.workspace_.getMetricsManager().getViewMetrics(!0),b=this.getOptimalRelativeLeft_(a),c=this.getOptimalRelativeTop_(a),d=this.shape_.getBBox();const e={x:b,y:-this.height_-this.workspace_.getRenderer().getConstants().MIN_BLOCK_HEIGHT},f={x:-this.width_-30,y:c};c={x:d.width,y:c};var g={x:b,y:d.height};b=d.width<d.height?c:g;d=d.width<d.height?g:c;c=this.getOverlap_(e,a);g=this.getOverlap_(f,
522
- a);const h=this.getOverlap_(b,a);a=this.getOverlap_(d,a);a=Math.max(c,g,h,a);c===a?(this.relativeLeft_=e.x,this.relativeTop_=e.y):g===a?(this.relativeLeft_=f.x,this.relativeTop_=f.y):h===a?(this.relativeLeft_=b.x,this.relativeTop_=b.y):(this.relativeLeft_=d.x,this.relativeTop_=d.y)}getOverlap_(a,b){var c=this.workspace_.RTL?this.anchorXY_.x-a.x-this.width_:a.x+this.anchorXY_.x;a=a.y+this.anchorXY_.y;return Math.max(0,Math.min(1,(Math.min(c+this.width_,b.left+b.width)-Math.max(c,b.left))*(Math.min(a+
523
- this.height_,b.top+b.height)-Math.max(a,b.top))/(this.width_*this.height_)))}getOptimalRelativeLeft_(a){let b=-this.width_/4;if(this.width_>a.width)return b;if(this.workspace_.RTL){var c=this.anchorXY_.x-b,d=a.left+a.width;a=a.left+Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness/this.workspace_.scale;c-this.width_<a?b=-(a-this.anchorXY_.x+this.width_):c>d&&(b=-(d-this.anchorXY_.x))}else{c=b+this.anchorXY_.x;d=c+this.width_;const e=a.left;a=a.left+a.width-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness/
524
- this.workspace_.scale;c<e?b=e-this.anchorXY_.x:d>a&&(b=a-this.anchorXY_.x-this.width_)}return b}getOptimalRelativeTop_(a){let b=-this.height_/4;if(this.height_>a.height)return b;const c=this.anchorXY_.y+b,d=c+this.height_,e=a.top;a=a.top+a.height-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness/this.workspace_.scale;const f=this.anchorXY_.y;c<e?b=e-f:d>a&&(b=a-f-this.height_);return b}positionBubble_(){let a=this.anchorXY_.x;a=this.workspace_.RTL?a-(this.relativeLeft_+this.width_):a+
525
- this.relativeLeft_;this.moveTo(a,this.relativeTop_+this.anchorXY_.y)}moveTo(a,b){let c;null==(c=this.bubbleGroup_)||c.setAttribute("transform","translate("+a+","+b+")")}setDragging(a){!a&&this.moveCallback_&&this.moveCallback_()}getBubbleSize(){return new Size$$module$build$src$core$utils$size(this.width_,this.height_)}setBubbleSize(a,b){const c=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH;a=Math.max(a,c+45);b=Math.max(b,c+20);this.width_=a;this.height_=b;let d;null==(d=this.bubbleBack_)||
526
- d.setAttribute("width",a.toString());let e;null==(e=this.bubbleBack_)||e.setAttribute("height",b.toString());this.resizeGroup_&&(this.workspace_.RTL?this.resizeGroup_.setAttribute("transform","translate("+2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH+","+(b-c)+") scale(-1 1)"):this.resizeGroup_.setAttribute("transform","translate("+(a-c)+","+(b-c)+")"));this.autoLayout_&&this.layoutBubble_();this.positionBubble_();this.renderArrow_();this.resizeCallback_&&this.resizeCallback_()}renderArrow_(){const a=
527
- [];var b=this.width_/2,c=this.height_/2,d=-this.relativeLeft_,e=-this.relativeTop_;if(b===d&&c===e)a.push("M "+b+","+c);else{e-=c;d-=b;this.workspace_.RTL&&(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0>e&&(g=2*Math.PI-g);var h=g+Math.PI/2;h>2*Math.PI&&(h-=2*Math.PI);var k=Math.sin(h);const n=Math.cos(h);var l=this.getBubbleSize();h=(l.width+l.height)/Bubble$$module$build$src$core$bubble.ARROW_THICKNESS;h=Math.min(h,l.width,l.height)/4;l=1-Bubble$$module$build$src$core$bubble.ANCHOR_RADIUS/f;
528
- d=b+l*d;e=c+l*e;l=b+h*n;const p=c+h*k;b-=h*n;c-=h*k;k=g+this.arrow_radians_;k>2*Math.PI&&(k-=2*Math.PI);g=Math.sin(k)*f/Bubble$$module$build$src$core$bubble.ARROW_BEND;f=Math.cos(k)*f/Bubble$$module$build$src$core$bubble.ARROW_BEND;a.push("M"+l+","+p);a.push("C"+(l+f)+","+(p+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");let m;null==(m=this.bubbleArrow_)||m.setAttribute("d",a.join(" "))}setColour(a){let b;null==(b=this.bubbleBack_)||b.setAttribute("fill",
529
- a);let c;null==(c=this.bubbleArrow_)||c.setAttribute("fill",a)}dispose(){this.onMouseDownBubbleWrapper_&&unbind$$module$build$src$core$browser_events(this.onMouseDownBubbleWrapper_);this.onMouseDownResizeWrapper_&&unbind$$module$build$src$core$browser_events(this.onMouseDownResizeWrapper_);Bubble$$module$build$src$core$bubble.unbindDragEvents_();removeNode$$module$build$src$core$utils$dom(this.bubbleGroup_);this.disposed=!0}moveDuringDrag(a,b){a?a.translateSurface(b.x,b.y):this.moveTo(b.x,b.y);this.relativeLeft_=
530
- this.workspace_.RTL?this.anchorXY_.x-b.x-this.width_:b.x-this.anchorXY_.x;this.relativeTop_=b.y-this.anchorXY_.y;this.renderArrow_()}getRelativeToSurfaceXY(){return new Coordinate$$module$build$src$core$utils$coordinate(this.workspace_.RTL?-this.relativeLeft_+this.anchorXY_.x-this.width_:this.anchorXY_.x+this.relativeLeft_,this.anchorXY_.y+this.relativeTop_)}setAutoLayout(a){this.autoLayout_=a}static unbindDragEvents_(){Bubble$$module$build$src$core$bubble.onMouseUpWrapper_&&(unbind$$module$build$src$core$browser_events(Bubble$$module$build$src$core$bubble.onMouseUpWrapper_),
531
- Bubble$$module$build$src$core$bubble.onMouseUpWrapper_=null);Bubble$$module$build$src$core$bubble.onMouseMoveWrapper_&&(unbind$$module$build$src$core$browser_events(Bubble$$module$build$src$core$bubble.onMouseMoveWrapper_),Bubble$$module$build$src$core$bubble.onMouseMoveWrapper_=null)}static bubbleMouseUp_(a){clearTouchIdentifier$$module$build$src$core$touch();Bubble$$module$build$src$core$bubble.unbindDragEvents_()}static textToDom(a){const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TEXT,
532
- {"class":"blocklyText blocklyBubbleText blocklyNoPointerEvents",y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});a=a.split("\n");for(let c=0;c<a.length;c++){const d=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TSPAN,{dy:"1em",x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH},b),e=document.createTextNode(a[c]);d.appendChild(e)}return b}static createNonEditableBubble(a,b,c){c=new Bubble$$module$build$src$core$bubble(b.workspace,a,b.pathObject.svgPath,
533
- c,null,null);c.setSvgId(b.id);if(b.RTL){b=a.getBBox().width;for(let d=0,e;e=a.childNodes[d];d++)e.setAttribute("text-anchor","end"),e.setAttribute("x",(b+Bubble$$module$build$src$core$bubble.BORDER_WIDTH).toString())}return c}};Bubble$$module$build$src$core$bubble.BORDER_WIDTH=6;Bubble$$module$build$src$core$bubble.ARROW_THICKNESS=5;Bubble$$module$build$src$core$bubble.ARROW_ANGLE=20;Bubble$$module$build$src$core$bubble.ARROW_BEND=4;Bubble$$module$build$src$core$bubble.ANCHOR_RADIUS=8;
534
- Bubble$$module$build$src$core$bubble.onMouseUpWrapper_=null;Bubble$$module$build$src$core$bubble.onMouseMoveWrapper_=null;var module$build$src$core$bubble={};module$build$src$core$bubble.Bubble=Bubble$$module$build$src$core$bubble;var DEFAULT_SNAP_RADIUS$$module$build$src$core$config,module$build$src$core$config;DEFAULT_SNAP_RADIUS$$module$build$src$core$config=28;$.config$$module$build$src$core$config={dragRadius:5,flyoutDragRadius:10,snapRadius:DEFAULT_SNAP_RADIUS$$module$build$src$core$config,connectingSnapRadius:DEFAULT_SNAP_RADIUS$$module$build$src$core$config,currentConnectionPreference:8,bumpDelay:250};module$build$src$core$config={};module$build$src$core$config.config=$.config$$module$build$src$core$config;var Icon$$module$build$src$core$icon=class{constructor(a){this.iconGroup_=null;this.collapseHidden=!0;this.SIZE=17;this.iconXY_=this.bubble_=null;a||warn$$module$build$src$core$utils$deprecation("Calling the Icon constructor with a null block","version 9","version 10","a non-null block");this.block_=a}createIcon(){this.iconGroup_||(this.iconGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyIconGroup"}),this.getBlock().isInFlyout&&addClass$$module$build$src$core$utils$dom(this.iconGroup_,
498
+ register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,BUBBLE_OPEN$$module$build$src$core$events$utils,BubbleOpen$$module$build$src$core$events$events_bubble_open);var module$build$src$core$events$events_bubble_open={};module$build$src$core$events$events_bubble_open.BubbleOpen=BubbleOpen$$module$build$src$core$events$events_bubble_open;module$build$src$core$events$events_bubble_open.BubbleType=BubbleType$$module$build$src$core$events$events_bubble_open;var Scrollbar$$module$build$src$core$scrollbar=class{constructor(a,b,c,d,e){this.workspace=a;this.horizontal=b;this.oldHostMetrics=null;this.ratio=1;this.origin=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.startDragHandle=this.handlePosition=this.handleLength=this.scrollbarLength=this.startDragMouse=0;this.containerVisible=this.isHandleVisible=!0;this.position=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.onMouseMoveWrapper_=this.onMouseUpWrapper_=null;this.pair=
499
+ c||!1;this.margin=void 0!==e?e:Scrollbar$$module$build$src$core$scrollbar.DEFAULT_SCROLLBAR_MARGIN;a="blocklyScrollbar"+(this.horizontal?"Horizontal":"Vertical");d&&(a+=" "+d);this.outerSvg=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{"class":a});d=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{},this.outerSvg);this.svgBackground=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,
500
+ {"class":"blocklyScrollbarBackground"},d);a=Math.floor((Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness-5)/2);this.svgHandle=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyScrollbarHandle",rx:a,ry:a},d);this.workspace.getThemeManager().subscribe(this.svgHandle,"scrollbarColour","fill");this.workspace.getThemeManager().subscribe(this.svgHandle,"scrollbarOpacity","fill-opacity");insertAfter$$module$build$src$core$utils$dom(this.outerSvg,
501
+ this.workspace.getParentSvg());this.setInitialThickness();b?(this.lengthAttribute_="width",this.positionAttribute_="x"):(this.lengthAttribute_="height",this.positionAttribute_="y");this.onMouseDownBarWrapper_=conditionalBind$$module$build$src$core$browser_events(this.svgBackground,"mousedown",this,this.onMouseDownBar);this.onMouseDownHandleWrapper_=conditionalBind$$module$build$src$core$browser_events(this.svgHandle,"mousedown",this,this.onMouseDownHandle)}setInitialThickness(){const a=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness;
502
+ this.horizontal?(this.svgBackground.setAttribute("height",String(a)),this.outerSvg.setAttribute("height",String(a)),this.svgHandle.setAttribute("height",String(a-5)),this.svgHandle.setAttribute("y","2.5")):(this.svgBackground.setAttribute("width",String(a)),this.outerSvg.setAttribute("width",String(a)),this.svgHandle.setAttribute("width",String(a-5)),this.svgHandle.setAttribute("x","2.5"))}dispose(){this.cleanUp();unbind$$module$build$src$core$browser_events(this.onMouseDownBarWrapper_);unbind$$module$build$src$core$browser_events(this.onMouseDownHandleWrapper_);
503
+ removeNode$$module$build$src$core$utils$dom(this.outerSvg);this.workspace.getThemeManager().unsubscribe(this.svgHandle)}constrainHandleLength(a){return a=0>=a||isNaN(a)?0:Math.min(a,this.scrollbarLength)}setHandleLength(a){this.handleLength=a;this.svgHandle.setAttribute(this.lengthAttribute_,String(this.handleLength))}constrainHandlePosition(a){return a=0>=a||isNaN(a)?0:Math.min(a,this.scrollbarLength-this.handleLength)}setHandlePosition(a){this.handlePosition=a;this.svgHandle.setAttribute(this.positionAttribute_,
504
+ String(this.handlePosition))}setScrollbarLength(a){this.scrollbarLength=a;this.outerSvg.setAttribute(this.lengthAttribute_,String(this.scrollbarLength));this.svgBackground.setAttribute(this.lengthAttribute_,String(this.scrollbarLength))}setPosition(a,b){this.position.x=a;this.position.y=b;setCssTransform$$module$build$src$core$utils$dom(this.outerSvg,"translate("+(this.position.x+this.origin.x)+"px,"+(this.position.y+this.origin.y)+"px)")}resize(a){if(!a&&(a=this.workspace.getMetrics(),!a))return;
505
+ this.oldHostMetrics&&Scrollbar$$module$build$src$core$scrollbar.metricsAreEquivalent(a,this.oldHostMetrics)||(this.horizontal?this.resizeHorizontal(a):this.resizeVertical(a),this.oldHostMetrics=a,this.updateMetrics())}requiresViewResize(a){return this.oldHostMetrics?this.oldHostMetrics.viewWidth!==a.viewWidth||this.oldHostMetrics.viewHeight!==a.viewHeight||this.oldHostMetrics.absoluteLeft!==a.absoluteLeft||this.oldHostMetrics.absoluteTop!==a.absoluteTop:!0}resizeHorizontal(a){this.requiresViewResize(a)?
506
+ this.resizeViewHorizontal(a):this.resizeContentHorizontal(a)}resizeViewHorizontal(a){var b=a.viewWidth-2*this.margin;this.pair&&(b-=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness);this.setScrollbarLength(Math.max(0,b));b=a.absoluteLeft+this.margin;this.pair&&this.workspace.RTL&&(b+=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness);this.setPosition(b,a.absoluteTop+a.viewHeight-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness-this.margin);this.resizeContentHorizontal(a)}resizeContentHorizontal(a){if(a.viewWidth>=
507
+ a.scrollWidth)this.setHandleLength(this.scrollbarLength),this.setHandlePosition(0),this.pair||this.setVisible(!1);else{this.pair||this.setVisible(!0);var b=this.scrollbarLength*a.viewWidth/a.scrollWidth;b=this.constrainHandleLength(b);this.setHandleLength(b);b=a.scrollWidth-a.viewWidth;var c=this.scrollbarLength-this.handleLength;a=(a.viewLeft-a.scrollLeft)/b*c;a=this.constrainHandlePosition(a);this.setHandlePosition(a);this.ratio=c/b}}resizeVertical(a){this.requiresViewResize(a)?this.resizeViewVertical(a):
508
+ this.resizeContentVertical(a)}resizeViewVertical(a){let b=a.viewHeight-2*this.margin;this.pair&&(b-=Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness);this.setScrollbarLength(Math.max(0,b));this.setPosition(this.workspace.RTL?a.absoluteLeft+this.margin:a.absoluteLeft+a.viewWidth-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness-this.margin,a.absoluteTop+this.margin);this.resizeContentVertical(a)}resizeContentVertical(a){if(a.viewHeight>=a.scrollHeight)this.setHandleLength(this.scrollbarLength),
509
+ this.setHandlePosition(0),this.pair||this.setVisible(!1);else{this.pair||this.setVisible(!0);var b=this.scrollbarLength*a.viewHeight/a.scrollHeight;b=this.constrainHandleLength(b);this.setHandleLength(b);b=a.scrollHeight-a.viewHeight;var c=this.scrollbarLength-this.handleLength;a=(a.viewTop-a.scrollTop)/b*c;a=this.constrainHandlePosition(a);this.setHandlePosition(a);this.ratio=c/b}}isVisible(){return this.isHandleVisible}setContainerVisible(a){const b=a!==this.containerVisible;this.containerVisible=
510
+ a;b&&this.updateDisplay_()}setVisible(a){const b=a!==this.isVisible();if(this.pair)throw Error("Unable to toggle visibility of paired scrollbars.");this.isHandleVisible=a;b&&this.updateDisplay_()}updateDisplay_(){this.containerVisible&&this.isVisible()?this.outerSvg.setAttribute("display","block"):this.outerSvg.setAttribute("display","none")}onMouseDownBar(a){this.workspace.markFocused();clearTouchIdentifier$$module$build$src$core$touch();this.cleanUp();if(isRightButton$$module$build$src$core$browser_events(a))a.stopPropagation();
511
+ else{var b=mouseToSvg$$module$build$src$core$browser_events(a,this.workspace.getParentSvg(),this.workspace.getInverseScreenCTM());b=this.horizontal?b.x:b.y;var c=getInjectionDivXY$$module$build$src$core$utils$svg_math(this.svgHandle);c=this.horizontal?c.x:c.y;var d=this.handlePosition,e=.95*this.handleLength;b<=c?d-=e:b>=c+this.handleLength&&(d+=e);this.setHandlePosition(this.constrainHandlePosition(d));this.updateMetrics();a.stopPropagation();a.preventDefault()}}onMouseDownHandle(a){this.workspace.markFocused();
512
+ this.cleanUp();isRightButton$$module$build$src$core$browser_events(a)?a.stopPropagation():(this.startDragHandle=this.handlePosition,this.workspace.setupDragSurface(),this.startDragMouse=this.horizontal?a.clientX:a.clientY,this.onMouseUpWrapper_=conditionalBind$$module$build$src$core$browser_events(document,"mouseup",this,this.onMouseUpHandle),this.onMouseMoveWrapper_=conditionalBind$$module$build$src$core$browser_events(document,"mousemove",this,this.onMouseMoveHandle),a.stopPropagation(),a.preventDefault())}onMouseMoveHandle(a){this.setHandlePosition(this.constrainHandlePosition(this.startDragHandle+
513
+ ((this.horizontal?a.clientX:a.clientY)-this.startDragMouse)));this.updateMetrics()}onMouseUpHandle(){this.workspace.resetDragSurface();clearTouchIdentifier$$module$build$src$core$touch();this.cleanUp()}cleanUp(){this.workspace.hideChaff(!0);this.onMouseUpWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onMouseMoveWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseMoveWrapper_),this.onMouseMoveWrapper_=null)}getRatio_(){let a=
514
+ this.handlePosition/(this.scrollbarLength-this.handleLength);isNaN(a)&&(a=0);return a}updateMetrics(){const a=this.getRatio_();this.horizontal?this.workspace.setMetrics({x:a}):this.workspace.setMetrics({y:a})}set(a,b){this.setHandlePosition(this.constrainHandlePosition(a*this.ratio));(b||void 0===b)&&this.updateMetrics()}setOrigin(a,b){this.origin=new Coordinate$$module$build$src$core$utils$coordinate(a,b)}static metricsAreEquivalent(a,b){return a.viewWidth===b.viewWidth&&a.viewHeight===b.viewHeight&&
515
+ a.viewLeft===b.viewLeft&&a.viewTop===b.viewTop&&a.absoluteTop===b.absoluteTop&&a.absoluteLeft===b.absoluteLeft&&a.scrollWidth===b.scrollWidth&&a.scrollHeight===b.scrollHeight&&a.scrollLeft===b.scrollLeft&&a.scrollTop===b.scrollTop}};Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness=TOUCH_ENABLED$$module$build$src$core$touch?25:15;Scrollbar$$module$build$src$core$scrollbar.DEFAULT_SCROLLBAR_MARGIN=.5;var module$build$src$core$scrollbar={};module$build$src$core$scrollbar.Scrollbar=Scrollbar$$module$build$src$core$scrollbar;var Bubble$$module$build$src$core$bubble=class{constructor(a,b,c,d,e,f){this.resizeGroup=this.bubbleBack=this.bubbleArrow=this.bubbleGroup=null;this.height=this.width=this.relativeTop=this.relativeLeft=0;this.autoLayout=!0;this.onMouseDownResizeWrapper=this.onMouseDownBubbleWrapper=this.moveCallback=this.resizeCallback=null;this.rendered=this.disposed=!1;this.workspace_=a;this.content_=b;this.shape_=c;c=Bubble$$module$build$src$core$bubble.ARROW_ANGLE;this.workspace_.RTL&&(c=-c);this.arrowRadians=
516
+ toRadians$$module$build$src$core$utils$math(c);a.getBubbleCanvas().appendChild(this.createDom(b,!(!e||!f)));this.setAnchorLocation(d);e&&f||(a=this.content_.getBBox(),e=a.width+2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,f=a.height+2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH);this.setBubbleSize(e,f);this.positionBubble();this.renderArrow();this.rendered=!0}createDom(a,b){this.bubbleGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{});var c=
517
+ {filter:"url(#"+this.workspace_.getRenderer().getConstants().embossFilterId+")"};JavaFx$$module$build$src$core$utils$useragent&&(c={});c=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,c,this.bubbleGroup);this.bubbleArrow=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{},c);this.bubbleBack=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyDraggable",x:0,
518
+ y:0,rx:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,ry:Bubble$$module$build$src$core$bubble.BORDER_WIDTH},c);b?(this.resizeGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup),b=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.POLYGON,{points:"0,x x,x x,0".replace(/x/g,b.toString())},
519
+ this.resizeGroup),createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{"class":"blocklyResizeLine",x1:b/3,y1:b-1,x2:b-1,y2:b/3},this.resizeGroup),createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{"class":"blocklyResizeLine",x1:2*b/3,y1:b-1,x2:b-1,y2:2*b/3},this.resizeGroup)):this.resizeGroup=null;this.workspace_.options.readOnly||(this.onMouseDownBubbleWrapper=conditionalBind$$module$build$src$core$browser_events(this.bubbleBack,
520
+ "mousedown",this,this.bubbleMouseDown),this.resizeGroup&&(this.onMouseDownResizeWrapper=conditionalBind$$module$build$src$core$browser_events(this.resizeGroup,"mousedown",this,this.resizeMouseDown)));this.bubbleGroup.appendChild(a);return this.bubbleGroup}getSvgRoot(){return this.bubbleGroup}setSvgId(a){let b;null==(b=this.bubbleGroup)||b.setAttribute("data-block-id",a)}bubbleMouseDown(a){const b=this.workspace_.getGesture(a);b&&b.handleBubbleStart(a,this)}showContextMenu(a){}isDeletable(){return!1}setDeleteStyle(a){}resizeMouseDown(a){this.promote();
521
+ Bubble$$module$build$src$core$bubble.unbindDragEvents();isRightButton$$module$build$src$core$browser_events(a)||(this.workspace_.startDrag(a,new Coordinate$$module$build$src$core$utils$coordinate(this.workspace_.RTL?-this.width:this.width,this.height)),Bubble$$module$build$src$core$bubble.onMouseUpWrapper=conditionalBind$$module$build$src$core$browser_events(document,"mouseup",this,Bubble$$module$build$src$core$bubble.bubbleMouseUp),Bubble$$module$build$src$core$bubble.onMouseMoveWrapper=conditionalBind$$module$build$src$core$browser_events(document,
522
+ "mousemove",this,this.resizeMouseMove),this.workspace_.hideChaff());a.stopPropagation()}resizeMouseMove(a){this.autoLayout=!1;a=this.workspace_.moveDrag(a);this.setBubbleSize(this.workspace_.RTL?-a.x:a.x,a.y);this.workspace_.RTL&&this.positionBubble()}registerResizeEvent(a){this.resizeCallback=a}registerMoveEvent(a){this.moveCallback=a}promote(){let a;const b=null==(a=this.bubbleGroup)?void 0:a.parentNode;return(null==b?void 0:b.lastChild)!==this.bubbleGroup&&this.bubbleGroup?(null==b||b.appendChild(this.bubbleGroup),
523
+ !0):!1}setAnchorLocation(a){this.anchorXY=a;this.rendered&&this.positionBubble()}layoutBubble(){var a=this.workspace_.getMetricsManager().getViewMetrics(!0),b=this.getOptimalRelativeLeft(a),c=this.getOptimalRelativeTop(a),d=this.shape_.getBBox();const e={x:b,y:-this.height-this.workspace_.getRenderer().getConstants().MIN_BLOCK_HEIGHT},f={x:-this.width-30,y:c};c={x:d.width,y:c};var g={x:b,y:d.height};b=d.width<d.height?c:g;d=d.width<d.height?g:c;c=this.getOverlap(e,a);g=this.getOverlap(f,a);const h=
524
+ this.getOverlap(b,a);a=this.getOverlap(d,a);a=Math.max(c,g,h,a);c===a?(this.relativeLeft=e.x,this.relativeTop=e.y):g===a?(this.relativeLeft=f.x,this.relativeTop=f.y):h===a?(this.relativeLeft=b.x,this.relativeTop=b.y):(this.relativeLeft=d.x,this.relativeTop=d.y)}getOverlap(a,b){var c=this.workspace_.RTL?this.anchorXY.x-a.x-this.width:a.x+this.anchorXY.x;a=a.y+this.anchorXY.y;return Math.max(0,Math.min(1,(Math.min(c+this.width,b.left+b.width)-Math.max(c,b.left))*(Math.min(a+this.height,b.top+b.height)-
525
+ Math.max(a,b.top))/(this.width*this.height)))}getOptimalRelativeLeft(a){let b=-this.width/4;if(this.width>a.width)return b;if(this.workspace_.RTL){var c=this.anchorXY.x-b,d=a.left+a.width;a=a.left+Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness/this.workspace_.scale;c-this.width<a?b=-(a-this.anchorXY.x+this.width):c>d&&(b=-(d-this.anchorXY.x))}else{c=b+this.anchorXY.x;d=c+this.width;const e=a.left;a=a.left+a.width-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness/this.workspace_.scale;
526
+ c<e?b=e-this.anchorXY.x:d>a&&(b=a-this.anchorXY.x-this.width)}return b}getOptimalRelativeTop(a){let b=-this.height/4;if(this.height>a.height)return b;const c=this.anchorXY.y+b,d=c+this.height,e=a.top;a=a.top+a.height-Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness/this.workspace_.scale;const f=this.anchorXY.y;c<e?b=e-f:d>a&&(b=a-f-this.height);return b}positionBubble(){let a=this.anchorXY.x;a=this.workspace_.RTL?a-(this.relativeLeft+this.width):a+this.relativeLeft;this.moveTo(a,this.relativeTop+
527
+ this.anchorXY.y)}moveTo(a,b){let c;null==(c=this.bubbleGroup)||c.setAttribute("transform","translate("+a+","+b+")")}setDragging(a){!a&&this.moveCallback&&this.moveCallback()}getBubbleSize(){return new Size$$module$build$src$core$utils$size(this.width,this.height)}setBubbleSize(a,b){const c=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH;a=Math.max(a,c+45);b=Math.max(b,c+20);this.width=a;this.height=b;let d;null==(d=this.bubbleBack)||d.setAttribute("width",a.toString());let e;null==(e=this.bubbleBack)||
528
+ e.setAttribute("height",b.toString());this.resizeGroup&&(this.workspace_.RTL?this.resizeGroup.setAttribute("transform","translate("+2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH+","+(b-c)+") scale(-1 1)"):this.resizeGroup.setAttribute("transform","translate("+(a-c)+","+(b-c)+")"));this.autoLayout&&this.layoutBubble();this.positionBubble();this.renderArrow();this.resizeCallback&&this.resizeCallback()}renderArrow(){const a=[];var b=this.width/2,c=this.height/2,d=-this.relativeLeft,e=-this.relativeTop;
529
+ if(b===d&&c===e)a.push("M "+b+","+c);else{e-=c;d-=b;this.workspace_.RTL&&(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0>e&&(g=2*Math.PI-g);var h=g+Math.PI/2;h>2*Math.PI&&(h-=2*Math.PI);var k=Math.sin(h);const n=Math.cos(h);var l=this.getBubbleSize();h=(l.width+l.height)/Bubble$$module$build$src$core$bubble.ARROW_THICKNESS;h=Math.min(h,l.width,l.height)/4;l=1-Bubble$$module$build$src$core$bubble.ANCHOR_RADIUS/f;d=b+l*d;e=c+l*e;l=b+h*n;const p=c+h*k;b-=h*n;c-=h*k;k=g+this.arrowRadians;k>2*Math.PI&&
530
+ (k-=2*Math.PI);g=Math.sin(k)*f/Bubble$$module$build$src$core$bubble.ARROW_BEND;f=Math.cos(k)*f/Bubble$$module$build$src$core$bubble.ARROW_BEND;a.push("M"+l+","+p);a.push("C"+(l+f)+","+(p+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");let m;null==(m=this.bubbleArrow)||m.setAttribute("d",a.join(" "))}setColour(a){let b;null==(b=this.bubbleBack)||b.setAttribute("fill",a);let c;null==(c=this.bubbleArrow)||c.setAttribute("fill",a)}dispose(){this.onMouseDownBubbleWrapper&&
531
+ unbind$$module$build$src$core$browser_events(this.onMouseDownBubbleWrapper);this.onMouseDownResizeWrapper&&unbind$$module$build$src$core$browser_events(this.onMouseDownResizeWrapper);Bubble$$module$build$src$core$bubble.unbindDragEvents();removeNode$$module$build$src$core$utils$dom(this.bubbleGroup);this.disposed=!0}moveDuringDrag(a,b){a?a.translateSurface(b.x,b.y):this.moveTo(b.x,b.y);this.relativeLeft=this.workspace_.RTL?this.anchorXY.x-b.x-this.width:b.x-this.anchorXY.x;this.relativeTop=b.y-this.anchorXY.y;
532
+ this.renderArrow()}getRelativeToSurfaceXY(){return new Coordinate$$module$build$src$core$utils$coordinate(this.workspace_.RTL?-this.relativeLeft+this.anchorXY.x-this.width:this.anchorXY.x+this.relativeLeft,this.anchorXY.y+this.relativeTop)}setAutoLayout(a){this.autoLayout=a}static unbindDragEvents(){Bubble$$module$build$src$core$bubble.onMouseUpWrapper&&(unbind$$module$build$src$core$browser_events(Bubble$$module$build$src$core$bubble.onMouseUpWrapper),Bubble$$module$build$src$core$bubble.onMouseUpWrapper=
533
+ null);Bubble$$module$build$src$core$bubble.onMouseMoveWrapper&&(unbind$$module$build$src$core$browser_events(Bubble$$module$build$src$core$bubble.onMouseMoveWrapper),Bubble$$module$build$src$core$bubble.onMouseMoveWrapper=null)}static bubbleMouseUp(a){clearTouchIdentifier$$module$build$src$core$touch();Bubble$$module$build$src$core$bubble.unbindDragEvents()}static textToDom(a){const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TEXT,{"class":"blocklyText blocklyBubbleText blocklyNoPointerEvents",
534
+ y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});a=a.split("\n");for(let c=0;c<a.length;c++){const d=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TSPAN,{dy:"1em",x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH},b),e=document.createTextNode(a[c]);d.appendChild(e)}return b}static createNonEditableBubble(a,b,c){c=new Bubble$$module$build$src$core$bubble(b.workspace,a,b.pathObject.svgPath,c,null,null);c.setSvgId(b.id);if(b.RTL){b=a.getBBox().width;for(let d=
535
+ 0,e;e=a.childNodes[d];d++)e.setAttribute("text-anchor","end"),e.setAttribute("x",(b+Bubble$$module$build$src$core$bubble.BORDER_WIDTH).toString())}return c}};Bubble$$module$build$src$core$bubble.BORDER_WIDTH=6;Bubble$$module$build$src$core$bubble.ARROW_THICKNESS=5;Bubble$$module$build$src$core$bubble.ARROW_ANGLE=20;Bubble$$module$build$src$core$bubble.ARROW_BEND=4;Bubble$$module$build$src$core$bubble.ANCHOR_RADIUS=8;Bubble$$module$build$src$core$bubble.onMouseUpWrapper=null;
536
+ Bubble$$module$build$src$core$bubble.onMouseMoveWrapper=null;var module$build$src$core$bubble={};module$build$src$core$bubble.Bubble=Bubble$$module$build$src$core$bubble;var DEFAULT_SNAP_RADIUS$$module$build$src$core$config,module$build$src$core$config;DEFAULT_SNAP_RADIUS$$module$build$src$core$config=28;$.config$$module$build$src$core$config={dragRadius:5,flyoutDragRadius:10,snapRadius:DEFAULT_SNAP_RADIUS$$module$build$src$core$config,connectingSnapRadius:DEFAULT_SNAP_RADIUS$$module$build$src$core$config,currentConnectionPreference:8,bumpDelay:250};module$build$src$core$config={};module$build$src$core$config.config=$.config$$module$build$src$core$config;var Icon$$module$build$src$core$icon=class{constructor(a){this.iconGroup_=null;this.collapseHidden=!0;this.SIZE=17;this.iconXY_=this.bubble_=null;a||warn$$module$build$src$core$utils$deprecation("Calling the Icon constructor with a null block","version 9","version 10","a non-null block");this.block_=a}createIcon(){this.iconGroup_||(this.iconGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyIconGroup"}),this.getBlock().isInFlyout&&addClass$$module$build$src$core$utils$dom(this.iconGroup_,
535
537
  "blocklyIconGroupReadonly"),this.drawIcon_(this.iconGroup_),this.getBlock().getSvgRoot().appendChild(this.iconGroup_),conditionalBind$$module$build$src$core$browser_events(this.iconGroup_,"mouseup",this,this.iconClick_),this.updateEditable())}dispose(){removeNode$$module$build$src$core$utils$dom(this.iconGroup_);this.setVisible(!1)}updateEditable(){}isVisible(){return!!this.bubble_}iconClick_(a){this.getBlock().workspace.isDragging()||this.getBlock().isInFlyout||isRightButton$$module$build$src$core$browser_events(a)||
536
538
  this.setVisible(!this.isVisible())}applyColour(){this.bubble_&&this.isVisible()&&this.bubble_.setColour(this.getBlock().style.colourPrimary)}setIconLocation(a){this.iconXY_=a;this.bubble_&&this.isVisible()&&this.bubble_.setAnchorLocation(a)}computeIconLocation(){var a=this.getBlock().getRelativeToSurfaceXY();const b=getRelativeXY$$module$build$src$core$utils$svg_math(this.iconGroup_);a=new Coordinate$$module$build$src$core$utils$coordinate(a.x+b.x+this.SIZE/2,a.y+b.y+this.SIZE/2);Coordinate$$module$build$src$core$utils$coordinate.equals(this.getIconLocation(),
537
- a)||this.setIconLocation(a)}getIconLocation(){return this.iconXY_}getCorrectedSize(){return new Size$$module$build$src$core$utils$size(this.SIZE,this.SIZE-2)}drawIcon_(a){}setVisible(a){}getBlock(){if(!this.block_)throw Error("Block is not set for this icon.");return this.block_}},module$build$src$core$icon={};module$build$src$core$icon.Icon=Icon$$module$build$src$core$icon;$.module$build$src$core$utils$object={};$.module$build$src$core$utils$object.deepMerge=deepMerge$$module$build$src$core$utils$object;$.module$build$src$core$utils$object.inherits=inherits$$module$build$src$core$utils$object;$.module$build$src$core$utils$object.mixin=mixin$$module$build$src$core$utils$object;$.module$build$src$core$utils$object.values=values$$module$build$src$core$utils$object;var Theme$$module$build$src$core$theme=class{constructor(a,b,c,d){this.name=a;this.startHats=!1;this.blockStyles=b||Object.create(null);this.categoryStyles=c||Object.create(null);this.componentStyles=d||Object.create(null);this.fontStyle=Object.create(null);register$$module$build$src$core$registry(Type$$module$build$src$core$registry.THEME,a,this)}getClassName(){return this.name+"-theme"}setBlockStyle(a,b){this.blockStyles[a]=b}setCategoryStyle(a,b){this.categoryStyles[a]=b}getComponentStyle(a){return(a=
539
+ a)||this.setIconLocation(a)}getIconLocation(){return this.iconXY_}getCorrectedSize(){return new Size$$module$build$src$core$utils$size(this.SIZE,this.SIZE-2)}drawIcon_(a){}setVisible(a){}getBlock(){if(!this.block_)throw Error("Block is not set for this icon.");return this.block_}},module$build$src$core$icon={};module$build$src$core$icon.Icon=Icon$$module$build$src$core$icon;var module$build$src$core$utils$object={};module$build$src$core$utils$object.deepMerge=deepMerge$$module$build$src$core$utils$object;module$build$src$core$utils$object.inherits=inherits$$module$build$src$core$utils$object;module$build$src$core$utils$object.mixin=mixin$$module$build$src$core$utils$object;module$build$src$core$utils$object.values=values$$module$build$src$core$utils$object;var Theme$$module$build$src$core$theme=class{constructor(a,b,c,d){this.name=a;this.startHats=!1;this.blockStyles=b||Object.create(null);this.categoryStyles=c||Object.create(null);this.componentStyles=d||Object.create(null);this.fontStyle=Object.create(null);register$$module$build$src$core$registry(Type$$module$build$src$core$registry.THEME,a,this)}getClassName(){return this.name+"-theme"}setBlockStyle(a,b){this.blockStyles[a]=b}setCategoryStyle(a,b){this.categoryStyles[a]=b}getComponentStyle(a){return(a=
538
540
  this.componentStyles[a])&&"string"===typeof a&&this.getComponentStyle(a)?this.getComponentStyle(a):a?String(a):null}setComponentStyle(a,b){this.componentStyles[a]=b}setFontStyle(a){this.fontStyle=a}setStartHats(a){this.startHats=a}static defineTheme(a,b){a=a.toLowerCase();const c=new Theme$$module$build$src$core$theme(a);let d=b.base;if(d){if("string"===typeof d){let e;d=null!=(e=getObject$$module$build$src$core$registry(Type$$module$build$src$core$registry.THEME,d))?e:void 0}d instanceof Theme$$module$build$src$core$theme&&
539
541
  (deepMerge$$module$build$src$core$utils$object(c,d),c.name=a)}deepMerge$$module$build$src$core$utils$object(c.blockStyles,b.blockStyles);deepMerge$$module$build$src$core$utils$object(c.categoryStyles,b.categoryStyles);deepMerge$$module$build$src$core$utils$object(c.componentStyles,b.componentStyles);deepMerge$$module$build$src$core$utils$object(c.fontStyle,b.fontStyle);null!==b.startHats&&(c.startHats=b.startHats);return c}},module$build$src$core$theme={};module$build$src$core$theme.Theme=Theme$$module$build$src$core$theme;var defaultBlockStyles$$module$build$src$core$theme$classic={colour_blocks:{colourPrimary:"20"},list_blocks:{colourPrimary:"260"},logic_blocks:{colourPrimary:"210"},loop_blocks:{colourPrimary:"120"},math_blocks:{colourPrimary:"230"},procedure_blocks:{colourPrimary:"290"},text_blocks:{colourPrimary:"160"},variable_blocks:{colourPrimary:"330"},variable_dynamic_blocks:{colourPrimary:"310"},hat_blocks:{colourPrimary:"330",hat:"cap"}},categoryStyles$$module$build$src$core$theme$classic={colour_category:{colour:"20"},
540
542
  list_category:{colour:"260"},logic_category:{colour:"210"},loop_category:{colour:"120"},math_category:{colour:"230"},procedure_category:{colour:"290"},text_category:{colour:"160"},variable_category:{colour:"330"},variable_dynamic_category:{colour:"310"}},Classic$$module$build$src$core$theme$classic=new Theme$$module$build$src$core$theme("classic",defaultBlockStyles$$module$build$src$core$theme$classic,categoryStyles$$module$build$src$core$theme$classic),module$build$src$core$theme$classic={};
@@ -548,28 +550,27 @@ null!=(w=a.parentWorkspace)?w:null;this.plugins=y}static parseMoveOptions_(a,b){
548
550
  "object"===typeof d.scrollbars;d.drag=d.scrollbars?void 0===c.drag?!0:!!c.drag:!1;return d}static parseZoomOptions_(a){a=a.zoom||{};const b={};b.controls=void 0===a.controls?!1:!!a.controls;b.wheel=void 0===a.wheel?!1:!!a.wheel;b.startScale=void 0===a.startScale?1:Number(a.startScale);b.maxScale=void 0===a.maxScale?3:Number(a.maxScale);b.minScale=void 0===a.minScale?.3:Number(a.minScale);b.scaleSpeed=void 0===a.scaleSpeed?1.2:Number(a.scaleSpeed);b.pinch=void 0===a.pinch?b.wheel||b.controls:!!a.pinch;
549
551
  return b}static parseGridOptions_(a){a=a.grid||{};const b={};b.spacing=Number(a.spacing)||0;b.colour=a.colour||"#888";b.length=void 0===a.length?1:Number(a.length);b.snap=0<b.spacing&&!!a.snap;return b}static parseThemeOptions_(a){a=a.theme||Classic$$module$build$src$core$theme$classic;return"string"===typeof a?getObject$$module$build$src$core$registry(Type$$module$build$src$core$registry.THEME,a):a instanceof Theme$$module$build$src$core$theme?a:Theme$$module$build$src$core$theme.defineTheme(a.name||
550
552
  "builtin"+getNextUniqueId$$module$build$src$core$utils$idgenerator(),a)}},module$build$src$core$options={};module$build$src$core$options.Options=Options$$module$build$src$core$options;var module$build$src$core$mutator;
551
- $.Mutator$$module$build$src$core$mutator=class extends Icon$$module$build$src$core$icon{constructor(a,b){b||warn$$module$build$src$core$utils$deprecation("Calling the Mutator constructor without passing the block it is attached to","version 9","version 10","the constructor by passing the list of subblocks and the block instance to attach the mutator to");super(null!=b?b:null);this.workspace_=null;this.workspaceHeight_=this.workspaceWidth_=0;this.updateWorkspacePid_=this.sourceListener_=this.rootBlock_=
552
- this.svgDialog_=null;this.quarkNames_=a}setBlock(a){this.block_=a}getWorkspace(){return this.workspace_}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"},
553
- a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},a)}iconClick_(a){this.getBlock().isEditable()&&super.iconClick_(a)}createEditor_(){this.svgDialog_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});if(this.quarkNames_.length){var a=createElement$$module$build$src$core$utils$xml("xml");
554
- for(let d=0,e;e=this.quarkNames_[d];d++){var b=createElement$$module$build$src$core$utils$xml("block");b.setAttribute("type",e);a.appendChild(b)}}else a=null;var c=this.getBlock();b=new Options$$module$build$src$core$options({disable:!1,parentWorkspace:c.workspace,media:c.workspace.options.pathToMedia,rtl:c.RTL,horizontalLayout:!1,renderer:c.workspace.options.renderer,rendererOverrides:c.workspace.options.rendererOverrides});b.toolboxPosition=c.RTL?Position$$module$build$src$core$utils$toolbox.RIGHT:
555
- Position$$module$build$src$core$utils$toolbox.LEFT;if(c=!!a)b.languageTree=convertToolboxDefToJson$$module$build$src$core$utils$toolbox(a);this.workspace_=this.newWorkspaceSvg(b);this.workspace_.internalIsMutator=!0;this.workspace_.addChangeListener(disableOrphans$$module$build$src$core$events$utils);a=c?this.workspace_.addFlyout(Svg$$module$build$src$core$utils$svg.G):null;b=this.workspace_.createDom("blocklyMutatorBackground");a&&b.insertBefore(a,this.workspace_.svgBlockCanvas_);this.svgDialog_.appendChild(b);
556
- return this.svgDialog_}newWorkspaceSvg(a){throw Error("The implementation of newWorkspaceSvg should be monkey-patched in by blockly.ts");}updateEditable(){super.updateEditable();this.getBlock().isInFlyout||(this.getBlock().isEditable()?this.iconGroup_&&removeClass$$module$build$src$core$utils$dom(this.iconGroup_,"blocklyIconGroupReadonly"):(this.setVisible(!1),this.iconGroup_&&addClass$$module$build$src$core$utils$dom(this.iconGroup_,"blocklyIconGroupReadonly")))}resizeBubble_(){var a=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH;
557
- const b=this.workspace_.getCanvas().getBBox();let c=b.width+b.x,d=b.height+3*a;const e=this.workspace_.getFlyout();if(e){const f=e.getWorkspace().getMetricsManager().getScrollMetrics();d=Math.max(d,f.height+20);c+=e.getWidth()}this.getBlock().RTL&&(c=-b.x);c+=3*a;if(Math.abs(this.workspaceWidth_-c)>a||Math.abs(this.workspaceHeight_-d)>a)this.workspaceWidth_=c,this.workspaceHeight_=d,this.bubble_.setBubbleSize(c+a,d+a),this.svgDialog_.setAttribute("width",`${this.workspaceWidth_}`),this.svgDialog_.setAttribute("height",
558
- `${this.workspaceHeight_}`),this.workspace_.setCachedParentSvgSize(this.workspaceWidth_,this.workspaceHeight_);this.getBlock().RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()}onBubbleMove_(){this.workspace_&&this.workspace_.recordDragTargets()}setVisible(a){if(a!==this.isVisible()){var b=this.getBlock();fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(b,
559
- a,"mutator"));if(a){this.bubble_=new Bubble$$module$build$src$core$bubble(b.workspace,this.createEditor_(),b.pathObject.svgPath,this.iconXY_,null,null);this.bubble_.setSvgId(b.id);this.bubble_.registerMoveEvent(this.onBubbleMove_.bind(this));var c=this.workspace_.options.languageTree;a=this.workspace_.getFlyout();c&&(a.init(this.workspace_),a.show(c));this.rootBlock_=b.decompose(this.workspace_);c=this.rootBlock_.getDescendants(!1);for(let d=0,e;e=c[d];d++)e.render();this.rootBlock_.setMovable(!1);
560
- this.rootBlock_.setDeletable(!1);a?(c=2*a.CORNER_RADIUS,a=this.rootBlock_.RTL?a.getWidth()+c:c):a=c=16;b.RTL&&(a=-a);this.rootBlock_.moveBy(a,c);if(b.saveConnections){const d=this.rootBlock_;b.saveConnections(d);this.sourceListener_=()=>{const e=this.getBlock();e.saveConnections&&e.saveConnections(d)};b.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_();this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));this.updateWorkspace_();this.applyColour()}else this.svgDialog_=
561
- null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,null==(c=this.bubble_)||c.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&&(b.workspace.removeChangeListener(this.sourceListener_),this.sourceListener_=null)}}workspaceChanged_(a){this.shouldIgnoreMutatorEvent_(a)||this.updateWorkspacePid_||(this.updateWorkspacePid_=setTimeout(()=>{this.updateWorkspacePid_=null;this.updateWorkspace_()},0))}shouldIgnoreMutatorEvent_(a){return a.isUiEvent||
562
- a.type===CREATE$$module$build$src$core$events$utils||a.type===CHANGE$$module$build$src$core$events$utils&&"disabled"===a.element}updateWorkspace_(){if(!this.workspace_.isDragging()){var a=this.workspace_.getTopBlocks(!1);for(let d=0,e;e=a[d];d++){var b=e.getRelativeToSurfaceXY();20>b.y&&e.moveBy(0,20-b.y);if(e.RTL){var c=-20;const f=this.workspace_.getFlyout();f&&(c-=f.getWidth());b.x>c&&e.moveBy(c-b.x,0)}else 20>b.x&&e.moveBy(20-b.x,0)}}if(this.rootBlock_&&this.rootBlock_.workspace===this.workspace_){(a=
563
- getGroup$$module$build$src$core$events$utils())||setGroup$$module$build$src$core$events$utils(!0);const d=this.getBlock();b=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);c=d.rendered;d.rendered=!1;d.compose(this.rootBlock_);d.rendered=c;d.initSvg();d.rendered&&d.render();c=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);if(b!==c){fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(d,
564
- "mutation",null,b,c));const e=getGroup$$module$build$src$core$events$utils();setTimeout(function(){const f=getGroup$$module$build$src$core$events$utils();setGroup$$module$build$src$core$events$utils(e);d.bumpNeighbours();setGroup$$module$build$src$core$events$utils(f)},$.config$$module$build$src$core$config.bumpDelay)}this.workspace_.isDragging()||setTimeout(()=>this.resizeBubble_(),0);setGroup$$module$build$src$core$events$utils(a)}}dispose(){this.getBlock().mutator=null;super.dispose()}updateBlockStyle(){var a=
565
- this.workspace_;if(a&&a.getAllBlocks(!1)){const b=a.getAllBlocks(!1);for(let c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout()){a=a.getWorkspace().getAllBlocks(!1);for(let c=0,d;d=a[c];c++)d.setStyle(d.getStyleName())}}}static reconnect(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;const d=a.targetBlock();return d&&d!==b||!c||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)}static findParentWs(a){let b=null;if(a&&a.options){const c=
566
- a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):c&&(b=c)}return b}};module$build$src$core$mutator={};module$build$src$core$mutator.Mutator=$.Mutator$$module$build$src$core$mutator;var allExtensions$$module$build$src$core$extensions=Object.create(null),TEST_ONLY$$module$build$src$core$extensions={allExtensions:allExtensions$$module$build$src$core$extensions};register$$module$build$src$core$extensions("parent_tooltip_when_inline",extensionParentTooltip$$module$build$src$core$extensions);$.module$build$src$core$extensions={};$.module$build$src$core$extensions.TEST_ONLY=TEST_ONLY$$module$build$src$core$extensions;$.module$build$src$core$extensions.apply=apply$$module$build$src$core$extensions;
553
+ $.Mutator$$module$build$src$core$mutator=class extends Icon$$module$build$src$core$icon{constructor(a,b){b||warn$$module$build$src$core$utils$deprecation("Calling the Mutator constructor without passing the block it is attached to","version 9","version 10","the constructor by passing the list of subblocks and the block instance to attach the mutator to");super(null!=b?b:null);this.workspace=null;this.workspaceHeight=this.workspaceWidth=0;this.updateWorkspacePid=this.sourceListener=this.rootBlock=
554
+ this.svgDialog=null;this.quarkNames=a}setBlock(a){this.block_=a}getWorkspace(){return this.workspace}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"},
555
+ a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},a)}iconClick_(a){this.getBlock().isEditable()&&super.iconClick_(a)}createEditor(){this.svgDialog=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});if(this.quarkNames.length){var a=createElement$$module$build$src$core$utils$xml("xml");
556
+ for(let d=0,e;e=this.quarkNames[d];d++){var b=createElement$$module$build$src$core$utils$xml("block");b.setAttribute("type",e);a.appendChild(b)}}else a=null;var c=this.getBlock();b=new Options$$module$build$src$core$options({disable:!1,parentWorkspace:c.workspace,media:c.workspace.options.pathToMedia,rtl:c.RTL,horizontalLayout:!1,renderer:c.workspace.options.renderer,rendererOverrides:c.workspace.options.rendererOverrides});b.toolboxPosition=c.RTL?Position$$module$build$src$core$utils$toolbox.RIGHT:
557
+ Position$$module$build$src$core$utils$toolbox.LEFT;if(c=!!a)b.languageTree=convertToolboxDefToJson$$module$build$src$core$utils$toolbox(a);this.workspace=this.newWorkspaceSvg(b);this.workspace.internalIsMutator=!0;this.workspace.addChangeListener(disableOrphans$$module$build$src$core$events$utils);a=c?this.workspace.addFlyout(Svg$$module$build$src$core$utils$svg.G):null;b=this.workspace.createDom("blocklyMutatorBackground");a&&b.insertBefore(a,this.workspace.svgBlockCanvas_);this.svgDialog.appendChild(b);
558
+ return this.svgDialog}newWorkspaceSvg(a){throw Error("The implementation of newWorkspaceSvg should be monkey-patched in by blockly.ts");}updateEditable(){super.updateEditable();this.getBlock().isInFlyout||(this.getBlock().isEditable()?this.iconGroup_&&removeClass$$module$build$src$core$utils$dom(this.iconGroup_,"blocklyIconGroupReadonly"):(this.setVisible(!1),this.iconGroup_&&addClass$$module$build$src$core$utils$dom(this.iconGroup_,"blocklyIconGroupReadonly")))}resizeBubble(){if(this.workspace){var a=
559
+ 2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,b=this.workspace.getCanvas(),c=b.getBBox(),d=c.width+c.x,e=c.height+3*a,f=this.workspace.getFlyout();if(f){const g=f.getWorkspace().getMetricsManager().getScrollMetrics();e=Math.max(e,g.height+20);d+=f.getWidth()}(f=this.getBlock().RTL)&&(d=-c.x);d+=3*a;if(Math.abs(this.workspaceWidth-d)>a||Math.abs(this.workspaceHeight-e)>a)this.workspaceWidth=d,this.workspaceHeight=e,this.bubble_.setBubbleSize(d+a,e+a),this.svgDialog.setAttribute("width",`${d}`),
560
+ this.svgDialog.setAttribute("height",`${e}`),this.workspace.setCachedParentSvgSize(d,e);f&&b.setAttribute("transform",`translate(${this.workspaceWidth}, 0)`);this.workspace.resize()}}onBubbleMove(){this.workspace&&this.workspace.recordDragTargets()}setVisible(a){if(a!==this.isVisible()){var b=this.getBlock();fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(b,a,"mutator"));if(a){this.bubble_=new Bubble$$module$build$src$core$bubble(b.workspace,
561
+ this.createEditor(),b.pathObject.svgPath,this.iconXY_,null,null);a=this.workspace;this.bubble_.setSvgId(b.id);this.bubble_.registerMoveEvent(this.onBubbleMove.bind(this));var c=a.options.languageTree,d=a.getFlyout();c&&(d.init(a),d.show(c));this.rootBlock=b.decompose(a);c=this.rootBlock.getDescendants(!1);for(let e=0,f;f=c[e];e++)f.render();this.rootBlock.setMovable(!1);this.rootBlock.setDeletable(!1);d?(c=2*d.CORNER_RADIUS,d=this.rootBlock.RTL?d.getWidth()+c:c):d=c=16;b.RTL&&(d=-d);this.rootBlock.moveBy(d,
562
+ c);if(b.saveConnections){const e=this.rootBlock;b.saveConnections(e);this.sourceListener=()=>{const f=this.getBlock();f.saveConnections&&f.saveConnections(e)};b.workspace.addChangeListener(this.sourceListener)}this.resizeBubble();a.addChangeListener(this.workspaceChanged.bind(this));this.updateWorkspace();this.applyColour()}else this.svgDialog=null,this.workspace.dispose(),this.rootBlock=this.workspace=null,null==(d=this.bubble_)||d.dispose(),this.bubble_=null,this.workspaceHeight=this.workspaceWidth=
563
+ 0,this.sourceListener&&(b.workspace.removeChangeListener(this.sourceListener),this.sourceListener=null)}}workspaceChanged(a){this.shouldIgnoreMutatorEvent_(a)||this.updateWorkspacePid||(this.updateWorkspacePid=setTimeout(()=>{this.updateWorkspacePid=null;this.updateWorkspace()},0))}shouldIgnoreMutatorEvent_(a){return a.isUiEvent||a.type===CREATE$$module$build$src$core$events$utils||a.type===CHANGE$$module$build$src$core$events$utils&&"disabled"===a.element}updateWorkspace(){if(!this.workspace.isDragging()){var a=
564
+ this.workspace.getTopBlocks(!1);for(let d=0,e;e=a[d];d++){var b=e.getRelativeToSurfaceXY();20>b.y&&e.moveBy(0,20-b.y);if(e.RTL){var c=-20;const f=this.workspace.getFlyout();f&&(c-=f.getWidth());b.x>c&&e.moveBy(c-b.x,0)}else 20>b.x&&e.moveBy(20-b.x,0)}}if(this.rootBlock&&this.rootBlock.workspace===this.workspace){(a=getGroup$$module$build$src$core$events$utils())||setGroup$$module$build$src$core$events$utils(!0);const d=this.getBlock();b=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);
565
+ c=d.rendered;d.rendered=!1;d.compose(this.rootBlock);d.rendered=c;d.initSvg();d.rendered&&d.render();c=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);if(b!==c){fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(d,"mutation",null,b,c));const e=getGroup$$module$build$src$core$events$utils();setTimeout(function(){const f=getGroup$$module$build$src$core$events$utils();setGroup$$module$build$src$core$events$utils(e);
566
+ d.bumpNeighbours();setGroup$$module$build$src$core$events$utils(f)},$.config$$module$build$src$core$config.bumpDelay)}this.workspace.isDragging()||setTimeout(()=>this.resizeBubble(),0);setGroup$$module$build$src$core$events$utils(a)}}dispose(){this.getBlock().mutator=null;super.dispose()}updateBlockStyle(){var a=this.workspace;if(a&&a.getAllBlocks(!1)){const b=a.getAllBlocks(!1);for(let c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout()){a=a.getWorkspace().getAllBlocks(!1);for(let c=
567
+ 0,d;d=a[c];c++)d.setStyle(d.getStyleName())}}}static reconnect(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;const d=a.targetBlock();return d&&d!==b||!c||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)}static findParentWs(a){let b=null;if(a&&a.options){const c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):c&&(b=c)}return b}};module$build$src$core$mutator={};module$build$src$core$mutator.Mutator=$.Mutator$$module$build$src$core$mutator;var allExtensions$$module$build$src$core$extensions=Object.create(null),TEST_ONLY$$module$build$src$core$extensions={allExtensions:allExtensions$$module$build$src$core$extensions};register$$module$build$src$core$extensions("parent_tooltip_when_inline",extensionParentTooltip$$module$build$src$core$extensions);$.module$build$src$core$extensions={};$.module$build$src$core$extensions.TEST_ONLY=TEST_ONLY$$module$build$src$core$extensions;$.module$build$src$core$extensions.apply=apply$$module$build$src$core$extensions;
567
568
  $.module$build$src$core$extensions.buildTooltipForDropdown=buildTooltipForDropdown$$module$build$src$core$extensions;$.module$build$src$core$extensions.buildTooltipWithFieldText=buildTooltipWithFieldText$$module$build$src$core$extensions;$.module$build$src$core$extensions.isRegistered=isRegistered$$module$build$src$core$extensions;$.module$build$src$core$extensions.register=register$$module$build$src$core$extensions;$.module$build$src$core$extensions.registerMixin=registerMixin$$module$build$src$core$extensions;
568
569
  $.module$build$src$core$extensions.registerMutator=registerMutator$$module$build$src$core$extensions;$.module$build$src$core$extensions.runAfterPageLoad=runAfterPageLoad$$module$build$src$core$extensions;$.module$build$src$core$extensions.unregister=unregister$$module$build$src$core$extensions;var module$build$src$core$utils$array={};module$build$src$core$utils$array.removeElem=removeElem$$module$build$src$core$utils$array;var module$build$src$core$utils$svg_paths={};module$build$src$core$utils$svg_paths.arc=arc$$module$build$src$core$utils$svg_paths;module$build$src$core$utils$svg_paths.curve=curve$$module$build$src$core$utils$svg_paths;module$build$src$core$utils$svg_paths.line=line$$module$build$src$core$utils$svg_paths;module$build$src$core$utils$svg_paths.lineOnAxis=lineOnAxis$$module$build$src$core$utils$svg_paths;module$build$src$core$utils$svg_paths.lineTo=lineTo$$module$build$src$core$utils$svg_paths;
569
570
  module$build$src$core$utils$svg_paths.moveBy=moveBy$$module$build$src$core$utils$svg_paths;module$build$src$core$utils$svg_paths.moveTo=moveTo$$module$build$src$core$utils$svg_paths;module$build$src$core$utils$svg_paths.point=point$$module$build$src$core$utils$svg_paths;var getInjectionDivXY_$$module$build$src$core$utils=getInjectionDivXY$$module$build$src$core$utils,module$build$src$core$utils={};module$build$src$core$utils.Coordinate=Coordinate$$module$build$src$core$utils$coordinate;module$build$src$core$utils.KeyCodes=KeyCodes$$module$build$src$core$utils$keycodes;module$build$src$core$utils.Rect=Rect$$module$build$src$core$utils$rect;module$build$src$core$utils.Size=Size$$module$build$src$core$utils$size;module$build$src$core$utils.Svg=Svg$$module$build$src$core$utils$svg;
570
571
  module$build$src$core$utils.aria=module$build$src$core$utils$aria;module$build$src$core$utils.array=module$build$src$core$utils$array;module$build$src$core$utils.arrayRemove=arrayRemove$$module$build$src$core$utils;module$build$src$core$utils.browserEvents=module$build$src$core$browser_events;module$build$src$core$utils.checkMessageReferences=checkMessageReferences$$module$build$src$core$utils;module$build$src$core$utils.colour=module$build$src$core$utils$colour;
571
572
  module$build$src$core$utils.deprecation=module$build$src$core$utils$deprecation;module$build$src$core$utils.dom=module$build$src$core$utils$dom;module$build$src$core$utils.extensions=$.module$build$src$core$extensions;module$build$src$core$utils.getBlockTypeCounts=getBlockTypeCounts$$module$build$src$core$utils;module$build$src$core$utils.getDocumentScroll=getDocumentScroll$$module$build$src$core$utils;module$build$src$core$utils.getInjectionDivXY_=getInjectionDivXY$$module$build$src$core$utils;
572
- module$build$src$core$utils.getRelativeXY=getRelativeXY$$module$build$src$core$utils;module$build$src$core$utils.getViewportBBox=getViewportBBox$$module$build$src$core$utils;module$build$src$core$utils.idGenerator=module$build$src$core$utils$idgenerator;module$build$src$core$utils.is3dSupported=is3dSupported$$module$build$src$core$utils;module$build$src$core$utils.math=module$build$src$core$utils$math;module$build$src$core$utils.object=$.module$build$src$core$utils$object;
573
+ module$build$src$core$utils.getRelativeXY=getRelativeXY$$module$build$src$core$utils;module$build$src$core$utils.getViewportBBox=getViewportBBox$$module$build$src$core$utils;module$build$src$core$utils.idGenerator=module$build$src$core$utils$idgenerator;module$build$src$core$utils.is3dSupported=is3dSupported$$module$build$src$core$utils;module$build$src$core$utils.math=module$build$src$core$utils$math;module$build$src$core$utils.object=module$build$src$core$utils$object;
573
574
  module$build$src$core$utils.parseBlockColour=parseBlockColour$$module$build$src$core$utils;module$build$src$core$utils.parsing=module$build$src$core$utils$parsing;module$build$src$core$utils.replaceMessageReferences=replaceMessageReferences$$module$build$src$core$utils;module$build$src$core$utils.runAfterPageLoad=runAfterPageLoad$$module$build$src$core$utils;module$build$src$core$utils.screenToWsCoordinates=screenToWsCoordinates$$module$build$src$core$utils;module$build$src$core$utils.string=$.module$build$src$core$utils$string;
574
575
  module$build$src$core$utils.style=module$build$src$core$utils$style;module$build$src$core$utils.svgMath=module$build$src$core$utils$svg_math;module$build$src$core$utils.svgPaths=module$build$src$core$utils$svg_paths;module$build$src$core$utils.tokenizeInterpolation=tokenizeInterpolation$$module$build$src$core$utils;module$build$src$core$utils.toolbox=module$build$src$core$utils$toolbox;module$build$src$core$utils.userAgent=module$build$src$core$utils$useragent;module$build$src$core$utils.xml=$.module$build$src$core$utils$xml;var TrashcanOpen$$module$build$src$core$events$events_trashcan_open=class extends UiBase$$module$build$src$core$events$events_ui_base{constructor(a,b){super(b);this.type=TRASHCAN_OPEN$$module$build$src$core$events$utils;this.isOpen=a}toJson(){const a=super.toJson();if(void 0===this.isOpen)throw Error("Whether this is already open or not is undefined. Either pass a value to the constructor, or call fromJson");a.isOpen=this.isOpen;return a}fromJson(a){super.fromJson(a);this.isOpen=a.isOpen}};
575
576
  register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,TRASHCAN_OPEN$$module$build$src$core$events$utils,TrashcanOpen$$module$build$src$core$events$events_trashcan_open);var module$build$src$core$events$events_trashcan_open={};module$build$src$core$events$events_trashcan_open.TrashcanOpen=TrashcanOpen$$module$build$src$core$events$events_trashcan_open;var Capability$$module$build$src$core$component_manager=class{constructor(a){this.name_=a}toString(){return this.name_}};Capability$$module$build$src$core$component_manager.POSITIONABLE=new Capability$$module$build$src$core$component_manager("positionable");Capability$$module$build$src$core$component_manager.DRAG_TARGET=new Capability$$module$build$src$core$component_manager("drag_target");Capability$$module$build$src$core$component_manager.DELETE_AREA=new Capability$$module$build$src$core$component_manager("delete_area");
@@ -584,9 +585,10 @@ b,c){super(`The block ${b.toDevString()} is missing a(n) ${a}
584
585
  connection`);this.block=b;this.state=c}},BadConnectionCheck$$module$build$src$core$serialization$exceptions=class extends DeserializationError$$module$build$src$core$serialization$exceptions{constructor(a,b,c,d){super(`The block ${c.toDevString()} could not connect its
585
586
  ${b} to its parent, because: ${a}`);this.childBlock=c;this.childState=d}},RealChildOfShadow$$module$build$src$core$serialization$exceptions=class extends DeserializationError$$module$build$src$core$serialization$exceptions{constructor(a){super("Encountered a real block which is defined as a child of a shadow\nblock. It is an invariant of Blockly that shadow blocks only have shadow\nchildren");this.state=a}},module$build$src$core$serialization$exceptions={};
586
587
  module$build$src$core$serialization$exceptions.BadConnectionCheck=BadConnectionCheck$$module$build$src$core$serialization$exceptions;module$build$src$core$serialization$exceptions.DeserializationError=DeserializationError$$module$build$src$core$serialization$exceptions;module$build$src$core$serialization$exceptions.MissingBlockType=MissingBlockType$$module$build$src$core$serialization$exceptions;module$build$src$core$serialization$exceptions.MissingConnection=MissingConnection$$module$build$src$core$serialization$exceptions;
587
- module$build$src$core$serialization$exceptions.RealChildOfShadow=RealChildOfShadow$$module$build$src$core$serialization$exceptions;var VARIABLES$$module$build$src$core$serialization$priorities=100,BLOCKS$$module$build$src$core$serialization$priorities=50,module$build$src$core$serialization$priorities={};module$build$src$core$serialization$priorities.BLOCKS=BLOCKS$$module$build$src$core$serialization$priorities;module$build$src$core$serialization$priorities.VARIABLES=VARIABLES$$module$build$src$core$serialization$priorities;var module$build$src$core$serialization$registry={};module$build$src$core$serialization$registry.register=register$$module$build$src$core$serialization$registry;module$build$src$core$serialization$registry.unregister=unregister$$module$build$src$core$serialization$registry;var saveBlock$$module$build$src$core$serialization$blocks=save$$module$build$src$core$serialization$blocks,BlockSerializer$$module$build$src$core$serialization$blocks=class{constructor(){this.priority=BLOCKS$$module$build$src$core$serialization$priorities}save(a){const b=[];for(const c of a.getTopBlocks(!1))(a=save$$module$build$src$core$serialization$blocks(c,{addCoordinates:!0,doFullSerialization:!1}))&&b.push(a);return b.length?{languageVersion:0,blocks:b}:null}load(a,b){a=a.blocks;for(const c of a)append$$module$build$src$core$serialization$blocks(c,
588
- b,{recordUndo:getRecordUndo$$module$build$src$core$events$utils()})}clear(a){for(const b of a.getTopBlocks(!1))b.dispose(!1)}};register$$module$build$src$core$serialization$registry("blocks",new BlockSerializer$$module$build$src$core$serialization$blocks);var module$build$src$core$serialization$blocks={};module$build$src$core$serialization$blocks.append=append$$module$build$src$core$serialization$blocks;module$build$src$core$serialization$blocks.appendInternal=appendInternal$$module$build$src$core$serialization$blocks;
589
- module$build$src$core$serialization$blocks.save=save$$module$build$src$core$serialization$blocks;var BlockCreate$$module$build$src$core$events$events_block_create=class extends BlockBase$$module$build$src$core$events$events_block_base{constructor(a){super(a);this.type=CREATE$$module$build$src$core$events$utils;a&&(a.isShadow()&&(this.recordUndo=!1),this.xml=blockToDomWithXY$$module$build$src$core$xml(a),this.ids=getDescendantIds$$module$build$src$core$events$utils(a),this.json=save$$module$build$src$core$serialization$blocks(a,{addCoordinates:!0}))}toJson(){const a=super.toJson();if(!this.xml)throw Error("The block XML is undefined. Either pass a block to the constructor, or call fromJson");
588
+ module$build$src$core$serialization$exceptions.RealChildOfShadow=RealChildOfShadow$$module$build$src$core$serialization$exceptions;var VARIABLES$$module$build$src$core$serialization$priorities=100,PROCEDURES$$module$build$src$core$serialization$priorities=75,BLOCKS$$module$build$src$core$serialization$priorities=50,module$build$src$core$serialization$priorities={};module$build$src$core$serialization$priorities.BLOCKS=BLOCKS$$module$build$src$core$serialization$priorities;module$build$src$core$serialization$priorities.PROCEDURES=PROCEDURES$$module$build$src$core$serialization$priorities;
589
+ module$build$src$core$serialization$priorities.VARIABLES=VARIABLES$$module$build$src$core$serialization$priorities;var module$build$src$core$serialization$registry={};module$build$src$core$serialization$registry.register=register$$module$build$src$core$serialization$registry;module$build$src$core$serialization$registry.unregister=unregister$$module$build$src$core$serialization$registry;var saveBlock$$module$build$src$core$serialization$blocks=save$$module$build$src$core$serialization$blocks,BlockSerializer$$module$build$src$core$serialization$blocks=class{constructor(){this.priority=BLOCKS$$module$build$src$core$serialization$priorities}save(a){const b=[];for(const c of a.getTopBlocks(!1))(a=save$$module$build$src$core$serialization$blocks(c,{addCoordinates:!0,doFullSerialization:!1}))&&b.push(a);return b.length?{languageVersion:0,blocks:b}:null}load(a,b){a=a.blocks;for(const c of a)append$$module$build$src$core$serialization$blocks(c,
590
+ b,{recordUndo:getRecordUndo$$module$build$src$core$events$utils()})}clear(a){for(const b of a.getTopBlocks(!1))b.dispose(!1)}};register$$module$build$src$core$serialization$registry("blocks",new BlockSerializer$$module$build$src$core$serialization$blocks);var module$build$src$core$serialization$blocks={};module$build$src$core$serialization$blocks.BlockSerializer=BlockSerializer$$module$build$src$core$serialization$blocks;module$build$src$core$serialization$blocks.append=append$$module$build$src$core$serialization$blocks;
591
+ module$build$src$core$serialization$blocks.appendInternal=appendInternal$$module$build$src$core$serialization$blocks;module$build$src$core$serialization$blocks.save=save$$module$build$src$core$serialization$blocks;var BlockCreate$$module$build$src$core$events$events_block_create=class extends BlockBase$$module$build$src$core$events$events_block_base{constructor(a){super(a);this.type=CREATE$$module$build$src$core$events$utils;a&&(a.isShadow()&&(this.recordUndo=!1),this.xml=blockToDomWithXY$$module$build$src$core$xml(a),this.ids=getDescendantIds$$module$build$src$core$events$utils(a),this.json=save$$module$build$src$core$serialization$blocks(a,{addCoordinates:!0}))}toJson(){const a=super.toJson();if(!this.xml)throw Error("The block XML is undefined. Either pass a block to the constructor, or call fromJson");
590
592
  if(!this.ids)throw Error("The block IDs are undefined. Either pass a block to the constructor, or call fromJson");if(!this.json)throw Error("The block JSON is undefined. Either pass a block to the constructor, or call fromJson");a.xml=domToText$$module$build$src$core$xml(this.xml);a.ids=this.ids;a.json=this.json;this.recordUndo||(a.recordUndo=this.recordUndo);return a}fromJson(a){super.fromJson(a);this.xml=textToDom$$module$build$src$core$xml(a.xml);this.ids=a.ids;this.json=a.json;void 0!==a.recordUndo&&
591
593
  (this.recordUndo=a.recordUndo)}run(a){const b=this.getEventWorkspace_();if(!this.json)throw Error("The block JSON is undefined. Either pass a block to the constructor, or call fromJson");if(!this.ids)throw Error("The block IDs are undefined. Either pass a block to the constructor, or call fromJson");if(a)append$$module$build$src$core$serialization$blocks(this.json,b);else for(a=0;a<this.ids.length;a++){const c=this.ids[a],d=b.getBlockById(c);d?d.dispose(!1):c===this.blockId&&console.warn("Can't uncreate non-existent block: "+
592
594
  c)}}};register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,CREATE$$module$build$src$core$events$utils,BlockCreate$$module$build$src$core$events$events_block_create);var module$build$src$core$events$events_block_create={};module$build$src$core$events$events_block_create.BlockCreate=BlockCreate$$module$build$src$core$events$events_block_create;var BlockDelete$$module$build$src$core$events$events_block_delete=class extends BlockBase$$module$build$src$core$events$events_block_base{constructor(a){super(a);this.type=DELETE$$module$build$src$core$events$utils;if(a){if(a.getParent())throw Error("Connected blocks cannot be deleted.");a.isShadow()&&(this.recordUndo=!1);this.oldXml=blockToDomWithXY$$module$build$src$core$xml(a);this.ids=getDescendantIds$$module$build$src$core$events$utils(a);this.wasShadow=a.isShadow();this.oldJson=save$$module$build$src$core$serialization$blocks(a,
@@ -674,16 +676,16 @@ f.name===b&&(d=e,-1!==c))break;if(-1===c)throw Error('Named input "'+a+'" not fo
674
676
  a&&(fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(this,"comment",null,this.commentModel.text,a)),this.comment=this.commentModel.text=a)}setWarningText(a,b){}setMutator(a){}getRelativeToSurfaceXY(){return this.xy_}moveBy(a,b){if(this.parentBlock_)throw Error("Block has parent.");const c=new (get$$module$build$src$core$events$utils(MOVE$$module$build$src$core$events$utils))(this);this.xy_.translate(a,b);c.recordNew();
675
677
  fire$$module$build$src$core$events$utils(c)}makeConnection_(a){return new Connection$$module$build$src$core$connection(this,a)}allInputsFilled(a){void 0===a&&(a=!0);if(!a&&this.isShadow())return!1;for(let c=0,d;d=this.inputList[c];c++)if(d.connection){var b=d.connection.targetBlock();if(!b||!b.allInputsFilled(a))return!1}return(b=this.getNextBlock())?b.allInputsFilled(a):!0}toDevString(){let a=this.type?'"'+this.type+'" block':"Block";this.id&&(a+=' (id="'+this.id+'")');return a}};
676
678
  Block$$module$build$src$core$block.COLLAPSED_INPUT_NAME=COLLAPSED_INPUT_NAME$$module$build$src$core$constants;Block$$module$build$src$core$block.COLLAPSED_FIELD_NAME=COLLAPSED_FIELD_NAME$$module$build$src$core$constants;var module$build$src$core$block={};module$build$src$core$block.Block=Block$$module$build$src$core$block;var disconnectPid$$module$build$src$core$block_animations=null,disconnectGroup$$module$build$src$core$block_animations=null,module$build$src$core$block_animations={};module$build$src$core$block_animations.connectionUiEffect=connectionUiEffect$$module$build$src$core$block_animations;module$build$src$core$block_animations.disconnectUiEffect=disconnectUiEffect$$module$build$src$core$block_animations;module$build$src$core$block_animations.disconnectUiStop=disconnectUiStop$$module$build$src$core$block_animations;
677
- module$build$src$core$block_animations.disposeUiEffect=disposeUiEffect$$module$build$src$core$block_animations;var Comment$$module$build$src$core$comment=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.cachedText_="";this.paragraphElement_=this.textarea_=this.foreignObject_=this.onInputWrapper_=this.onChangeWrapper_=this.onWheelWrapper_=this.onMouseUpWrapper_=null;this.model_=a.commentModel;let b;this.model_.text=null!=(b=this.model_.text)?b:"";this.createIcon()}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",
678
- r:"8",cx:"8",cy:"8"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)}createEditor_(){this.foreignObject_=
679
+ module$build$src$core$block_animations.disposeUiEffect=disposeUiEffect$$module$build$src$core$block_animations;var Comment$$module$build$src$core$comment=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.cachedText="";this.paragraphElement_=this.textarea_=this.foreignObject=this.onInputWrapper=this.onChangeWrapper=this.onWheelWrapper=this.onMouseUpWrapper=null;this.model=a.commentModel;let b;this.model.text=null!=(b=this.model.text)?b:"";this.createIcon()}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",
680
+ r:"8",cx:"8",cy:"8"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)}createEditor(){this.foreignObject=
679
681
  createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.FOREIGNOBJECT,{x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});const a=document.createElementNS(HTML_NS$$module$build$src$core$utils$dom,"body");a.setAttribute("xmlns",HTML_NS$$module$build$src$core$utils$dom);a.className="blocklyMinimalBody";const b=this.textarea_=document.createElementNS(HTML_NS$$module$build$src$core$utils$dom,"textarea");b.className=
680
- "blocklyCommentTextarea";b.setAttribute("dir",this.getBlock().RTL?"RTL":"LTR");let c;b.value=null!=(c=this.model_.text)?c:"";this.resizeTextarea_();a.appendChild(b);this.foreignObject_.appendChild(a);this.onMouseUpWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"mouseup",this,this.startEdit_,!0,!0);this.onWheelWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"wheel",this,function(d){d.stopPropagation()});this.onChangeWrapper_=conditionalBind$$module$build$src$core$browser_events(b,
681
- "change",this,function(d){this.cachedText_!==this.model_.text&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(this.getBlock(),"comment",null,this.cachedText_,this.model_.text))});this.onInputWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"input",this,function(d){this.model_.text=b.value});setTimeout(b.focus.bind(b),0);return this.foreignObject_}updateEditable(){super.updateEditable();this.isVisible()&&
682
- (this.disposeBubble_(),this.createBubble_())}onBubbleResize_(){this.isVisible()&&this.bubble_&&(this.model_.size=this.bubble_.getBubbleSize(),this.resizeTextarea_())}resizeTextarea_(){var a=this.model_.size;const b=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,c=a.width-b;a=a.height-b;this.foreignObject_.setAttribute("width",`${c}`);this.foreignObject_.setAttribute("height",`${a}`);this.textarea_.style.width=c-4+"px";this.textarea_.style.height=a-4+"px"}setVisible(a){a!==this.isVisible()&&(fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(this.getBlock(),
683
- a,"comment")),(this.model_.pinned=a)?this.createBubble_():this.disposeBubble_())}createBubble_(){this.getBlock().isEditable()?this.createEditableBubble_():this.createNonEditableBubble_()}createEditableBubble_(){const a=this.getBlock();this.bubble_=new Bubble$$module$build$src$core$bubble(a.workspace,this.createEditor_(),a.pathObject.svgPath,this.iconXY_,this.model_.size.width,this.model_.size.height);this.bubble_.setSvgId(a.id);this.bubble_.registerResizeEvent(this.onBubbleResize_.bind(this));this.applyColour()}createNonEditableBubble_(){let a;
684
- this.paragraphElement_=Bubble$$module$build$src$core$bubble.textToDom(null!=(a=this.model_.text)?a:"");this.bubble_=Bubble$$module$build$src$core$bubble.createNonEditableBubble(this.paragraphElement_,this.getBlock(),this.iconXY_);this.applyColour()}disposeBubble_(){this.onMouseUpWrapper_&&(unbind$$module$build$src$core$browser_events(this.onMouseUpWrapper_),this.onMouseUpWrapper_=null);this.onWheelWrapper_&&(unbind$$module$build$src$core$browser_events(this.onWheelWrapper_),this.onWheelWrapper_=null);
685
- this.onChangeWrapper_&&(unbind$$module$build$src$core$browser_events(this.onChangeWrapper_),this.onChangeWrapper_=null);this.onInputWrapper_&&(unbind$$module$build$src$core$browser_events(this.onInputWrapper_),this.onInputWrapper_=null);this.bubble_&&(this.bubble_.dispose(),this.bubble_=null);this.paragraphElement_=this.foreignObject_=this.textarea_=null}startEdit_(a){let b;(null==(b=this.bubble_)?0:b.promote())&&this.textarea_.focus();this.cachedText_=this.model_.text}getBubbleSize(){return this.model_.size}setBubbleSize(a,
686
- b){this.bubble_?this.bubble_.setBubbleSize(a,b):(this.model_.size.width=a,this.model_.size.height=b)}updateText(){if(this.textarea_){let a;this.textarea_.value=null!=(a=this.model_.text)?a:""}else this.paragraphElement_&&(this.paragraphElement_.firstChild.textContent=this.model_.text)}dispose(){this.getBlock().comment=null;super.dispose()}};register$$module$build$src$core$css("\n.blocklyCommentTextarea {\n background-color: #fef49c;\n border: 0;\n display: block;\n margin: 0;\n outline: 0;\n padding: 3px;\n resize: none;\n text-overflow: hidden;\n}\n");
682
+ "blocklyCommentTextarea";b.setAttribute("dir",this.getBlock().RTL?"RTL":"LTR");let c;b.value=null!=(c=this.model.text)?c:"";this.resizeTextarea();a.appendChild(b);this.foreignObject.appendChild(a);this.onMouseUpWrapper=conditionalBind$$module$build$src$core$browser_events(b,"mouseup",this,this.startEdit,!0,!0);this.onWheelWrapper=conditionalBind$$module$build$src$core$browser_events(b,"wheel",this,function(d){d.stopPropagation()});this.onChangeWrapper=conditionalBind$$module$build$src$core$browser_events(b,
683
+ "change",this,function(d){this.cachedText!==this.model.text&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(this.getBlock(),"comment",null,this.cachedText,this.model.text))});this.onInputWrapper=conditionalBind$$module$build$src$core$browser_events(b,"input",this,function(d){this.model.text=b.value});setTimeout(b.focus.bind(b),0);return this.foreignObject}updateEditable(){super.updateEditable();this.isVisible()&&(this.disposeBubble(),
684
+ this.createBubble())}onBubbleResize(){this.isVisible()&&this.bubble_&&(this.model.size=this.bubble_.getBubbleSize(),this.resizeTextarea())}resizeTextarea(){if(this.textarea_&&this.foreignObject){var a=this.model.size,b=2*Bubble$$module$build$src$core$bubble.BORDER_WIDTH,c=a.width-b;a=a.height-b;this.foreignObject.setAttribute("width",`${c}`);this.foreignObject.setAttribute("height",`${a}`);this.textarea_.style.width=c-4+"px";this.textarea_.style.height=a-4+"px"}}setVisible(a){a!==this.isVisible()&&
685
+ (fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(this.getBlock(),a,"comment")),(this.model.pinned=a)?this.createBubble():this.disposeBubble())}createBubble(){this.getBlock().isEditable()?this.createEditableBubble():this.createNonEditableBubble()}createEditableBubble(){const a=this.getBlock();this.bubble_=new Bubble$$module$build$src$core$bubble(a.workspace,this.createEditor(),a.pathObject.svgPath,this.iconXY_,
686
+ this.model.size.width,this.model.size.height);this.bubble_.setSvgId(a.id);this.bubble_.registerResizeEvent(this.onBubbleResize.bind(this));this.applyColour()}createNonEditableBubble(){let a;this.paragraphElement_=Bubble$$module$build$src$core$bubble.textToDom(null!=(a=this.model.text)?a:"");this.bubble_=Bubble$$module$build$src$core$bubble.createNonEditableBubble(this.paragraphElement_,this.getBlock(),this.iconXY_);this.applyColour()}disposeBubble(){this.onMouseUpWrapper&&(unbind$$module$build$src$core$browser_events(this.onMouseUpWrapper),
687
+ this.onMouseUpWrapper=null);this.onWheelWrapper&&(unbind$$module$build$src$core$browser_events(this.onWheelWrapper),this.onWheelWrapper=null);this.onChangeWrapper&&(unbind$$module$build$src$core$browser_events(this.onChangeWrapper),this.onChangeWrapper=null);this.onInputWrapper&&(unbind$$module$build$src$core$browser_events(this.onInputWrapper),this.onInputWrapper=null);this.bubble_&&(this.bubble_.dispose(),this.bubble_=null);this.paragraphElement_=this.foreignObject=this.textarea_=null}startEdit(a){let b;
688
+ (null==(b=this.bubble_)?0:b.promote())&&this.textarea_.focus();this.cachedText=this.model.text}getBubbleSize(){return this.model.size}setBubbleSize(a,b){this.bubble_?this.bubble_.setBubbleSize(a,b):(this.model.size.width=a,this.model.size.height=b)}updateText(){if(this.textarea_){let a;this.textarea_.value=null!=(a=this.model.text)?a:""}else this.paragraphElement_&&(this.paragraphElement_.firstChild.textContent=this.model.text)}dispose(){this.getBlock().comment=null;super.dispose()}};register$$module$build$src$core$css("\n.blocklyCommentTextarea {\n background-color: #fef49c;\n border: 0;\n display: block;\n margin: 0;\n outline: 0;\n padding: 3px;\n resize: none;\n text-overflow: hidden;\n}\n");
687
689
  var module$build$src$core$comment={};module$build$src$core$comment.Comment=Comment$$module$build$src$core$comment;var copyData$$module$build$src$core$clipboard=null,TEST_ONLY$$module$build$src$core$clipboard={duplicateInternal:duplicateInternal$$module$build$src$core$clipboard,copyInternal:copyInternal$$module$build$src$core$clipboard},module$build$src$core$clipboard={};module$build$src$core$clipboard.TEST_ONLY=TEST_ONLY$$module$build$src$core$clipboard;module$build$src$core$clipboard.copy=copy$$module$build$src$core$clipboard;module$build$src$core$clipboard.duplicate=duplicate$$module$build$src$core$clipboard;
688
690
  module$build$src$core$clipboard.paste=paste$$module$build$src$core$clipboard;var currentBlock$$module$build$src$core$contextmenu,dummyOwner$$module$build$src$core$contextmenu,menu_$$module$build$src$core$contextmenu;currentBlock$$module$build$src$core$contextmenu=null;dummyOwner$$module$build$src$core$contextmenu={};menu_$$module$build$src$core$contextmenu=null;$.module$build$src$core$contextmenu={};$.module$build$src$core$contextmenu.callbackFactory=callbackFactory$$module$build$src$core$contextmenu;$.module$build$src$core$contextmenu.commentDeleteOption=commentDeleteOption$$module$build$src$core$contextmenu;
689
691
  $.module$build$src$core$contextmenu.commentDuplicateOption=commentDuplicateOption$$module$build$src$core$contextmenu;$.module$build$src$core$contextmenu.dispose=dispose$$module$build$src$core$contextmenu;$.module$build$src$core$contextmenu.getCurrentBlock=getCurrentBlock$$module$build$src$core$contextmenu;$.module$build$src$core$contextmenu.hide=hide$$module$build$src$core$contextmenu;$.module$build$src$core$contextmenu.setCurrentBlock=setCurrentBlock$$module$build$src$core$contextmenu;
@@ -704,18 +706,18 @@ RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.WILL_
704
706
  if(!b.isInFlyout){var c=!1;if(!b.isMovable()){b=a.getSourceBlock().getRootBlock();if(!b.isMovable())return;a=this;c=!0}var d=getSelected$$module$build$src$core$common()==b;d||b.addSelect();var e=a.x+$.config$$module$build$src$core$config.snapRadius+Math.floor(Math.random()*BUMP_RANDOMNESS$$module$build$src$core$rendered_connection)-this.x,f=a.y+$.config$$module$build$src$core$config.snapRadius+Math.floor(Math.random()*BUMP_RANDOMNESS$$module$build$src$core$rendered_connection)-this.y;c&&(f=-f);b.RTL&&
705
707
  (e=a.x-$.config$$module$build$src$core$config.snapRadius-Math.floor(Math.random()*BUMP_RANDOMNESS$$module$build$src$core$rendered_connection)-this.x);b.moveBy(e,f);d||b.removeSelect()}}}moveTo(a,b){this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.WILL_TRACK?(this.db_.addConnection(this,b),this.trackedState_=RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.TRACKED):this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.TRACKED&&
706
708
  (this.db_.removeConnection(this,this.y),this.db_.addConnection(this,b));this.x=a;this.y=b}moveBy(a,b){this.moveTo(this.x+a,this.y+b)}moveToOffset(a){this.moveTo(a.x+this.offsetInBlock_.x,a.y+this.offsetInBlock_.y)}setOffsetInBlock(a,b){this.offsetInBlock_.x=a;this.offsetInBlock_.y=b}getOffsetInBlock(){return this.offsetInBlock_}tighten(){const a=this.targetConnection.x-this.x,b=this.targetConnection.y-this.y;if(0!==a||0!==b){const d=this.targetBlock();var c=d.getSvgRoot();if(!c)throw Error("block is not rendered.");
707
- c=getRelativeXY$$module$build$src$core$utils$svg_math(c);d.getSvgRoot().setAttribute("transform","translate("+(c.x-a)+","+(c.y-b)+")");d.moveConnections(-a,-b)}}closest(a,b){return this.dbOpposite_.searchForClosest(this,a,b)}highlight(){var a=this.sourceBlock_.workspace.getRenderer().getConstants();var b=a.shapeFor(this);this.type===ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE||this.type===ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE?(a=a.TAB_OFFSET_FROM_TOP,
708
- b=moveBy$$module$build$src$core$utils$svg_paths(0,-a)+lineOnAxis$$module$build$src$core$utils$svg_paths("v",a)+b.pathDown+lineOnAxis$$module$build$src$core$utils$svg_paths("v",a)):(a=a.NOTCH_OFFSET_LEFT-a.CORNER_RADIUS,b=moveBy$$module$build$src$core$utils$svg_paths(-a,0)+lineOnAxis$$module$build$src$core$utils$svg_paths("h",a)+b.pathLeft+lineOnAxis$$module$build$src$core$utils$svg_paths("h",a));a=this.sourceBlock_.getRelativeToSurfaceXY();this.highlightPath=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
709
- {"class":"blocklyHighlightedConnectionPath",d:b,transform:"translate("+(this.x-a.x)+","+(this.y-a.y)+")"+(this.sourceBlock_.RTL?" scale(-1 1)":"")},this.sourceBlock_.getSvgRoot())}unhighlight(){this.highlightPath&&(removeNode$$module$build$src$core$utils$dom(this.highlightPath),this.highlightPath=null)}setTracking(a){a&&this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.TRACKED||!a&&this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.UNTRACKED||
709
+ c=getRelativeXY$$module$build$src$core$utils$svg_math(c);d.getSvgRoot().setAttribute("transform","translate("+(c.x-a)+","+(c.y-b)+")");d.moveConnections(-a,-b)}}closest(a,b){return this.dbOpposite_.searchForClosest(this,a,b)}highlight(){if(!this.highlightPath){var a=this.sourceBlock_.workspace.getRenderer().getConstants();var b=a.shapeFor(this);this.type===ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE||this.type===ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE?
710
+ (a=a.TAB_OFFSET_FROM_TOP,b=moveBy$$module$build$src$core$utils$svg_paths(0,-a)+lineOnAxis$$module$build$src$core$utils$svg_paths("v",a)+b.pathDown+lineOnAxis$$module$build$src$core$utils$svg_paths("v",a)):(a=a.NOTCH_OFFSET_LEFT-a.CORNER_RADIUS,b=moveBy$$module$build$src$core$utils$svg_paths(-a,0)+lineOnAxis$$module$build$src$core$utils$svg_paths("h",a)+b.pathLeft+lineOnAxis$$module$build$src$core$utils$svg_paths("h",a));a=this.sourceBlock_.getRelativeToSurfaceXY();this.highlightPath=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
711
+ {"class":"blocklyHighlightedConnectionPath",d:b,transform:"translate("+(this.x-a.x)+","+(this.y-a.y)+")"+(this.sourceBlock_.RTL?" scale(-1 1)":"")},this.sourceBlock_.getSvgRoot())}}unhighlight(){this.highlightPath&&(removeNode$$module$build$src$core$utils$dom(this.highlightPath),this.highlightPath=null)}setTracking(a){a&&this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.TRACKED||!a&&this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.UNTRACKED||
710
712
  this.sourceBlock_.isInFlyout||(a?(this.db_.addConnection(this,this.y),this.trackedState_=RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.TRACKED):(this.trackedState_===RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.TRACKED&&this.db_.removeConnection(this,this.y),this.trackedState_=RenderedConnection$$module$build$src$core$rendered_connection.TrackedState.UNTRACKED))}stopTrackingAll(){this.setTracking(!1);if(this.targetConnection){const c=this.targetBlock().getDescendants(!1);
711
713
  for(let d=0;d<c.length;d++){var a=c[d],b=a.getConnections_(!0);for(let e=0;e<b.length;e++)b[e].setTracking(!1);a=a.getIcons();for(b=0;b<a.length;b++)a[b].setVisible(!1)}}}startTrackingAll(){this.setTracking(!0);let a=[];if(this.type!==ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE&&this.type!==ConnectionType$$module$build$src$core$connection_type.NEXT_STATEMENT)return a;const b=this.targetBlock();if(b){let c;b.isCollapsed()?(c=[],b.outputConnection&&c.push(b.outputConnection),b.nextConnection&&
712
714
  c.push(b.nextConnection),b.previousConnection&&c.push(b.previousConnection)):c=b.getConnections_(!0);for(let d=0;d<c.length;d++)a.push(...c[d].startTrackingAll());a.length||(a=[b])}return a}onFailedConnect(a){const b=this.getSourceBlock();if(getRecordUndo$$module$build$src$core$events$utils()){const c=getGroup$$module$build$src$core$events$utils();setTimeout(function(){b.isDisposed()||b.getParent()||(setGroup$$module$build$src$core$events$utils(c),this.bumpAwayFrom(a),setGroup$$module$build$src$core$events$utils(!1))}.bind(this),
713
715
  $.config$$module$build$src$core$config.bumpDelay)}}disconnectInternal_(a,b){super.disconnectInternal_(a,b);a.rendered&&a.render();b.rendered&&(b.updateDisabled(),b.render(),b.getSvgRoot().style.display="block")}respawnShadow_(){super.respawnShadow_();var a=this.targetBlock();a&&(a.initSvg(),a.render(!1),a=this.getSourceBlock(),a.rendered&&a.render())}neighbours(a){return this.dbOpposite_.getNeighbours(this,a)}connect_(a){super.connect_(a);var b=this.getSourceBlock();a=a.getSourceBlock();const c=b.rendered,
714
716
  d=a.rendered;c&&b.updateDisabled();d&&a.updateDisabled();c&&d&&(this.type===ConnectionType$$module$build$src$core$connection_type.NEXT_STATEMENT||this.type===ConnectionType$$module$build$src$core$connection_type.PREVIOUS_STATEMENT?a.render():b.render());if(b=b.getInputWithBlock(a))b=b.isVisible(),a.getSvgRoot().style.display=b?"block":"none"}onCheckChanged_(){!this.isConnected()||this.targetConnection&&this.getConnectionChecker().canConnect(this,this.targetConnection,!1)||((this.isSuperior()?this.targetBlock():
715
717
  this.sourceBlock_).unplug(),this.sourceBlock_.bumpNeighbours())}};(function(a){a=a.TrackedState||(a.TrackedState={});a[a.WILL_TRACK=-1]="WILL_TRACK";a[a.UNTRACKED=0]="UNTRACKED";a[a.TRACKED=1]="TRACKED"})(RenderedConnection$$module$build$src$core$rendered_connection||(RenderedConnection$$module$build$src$core$rendered_connection={}));
716
- var TrackedState$$module$build$src$core$rendered_connection=RenderedConnection$$module$build$src$core$rendered_connection.TrackedState,module$build$src$core$rendered_connection={};module$build$src$core$rendered_connection.RenderedConnection=RenderedConnection$$module$build$src$core$rendered_connection;module$build$src$core$rendered_connection.TrackedState=TrackedState$$module$build$src$core$rendered_connection;var Warning$$module$build$src$core$warning=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.paragraphElement_=null;this.collapseHidden=!1;this.createIcon();this.text_=Object.create(null)}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
717
- {"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},a)}setVisible(a){a!==this.isVisible()&&(fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(this.getBlock(),a,"warning")),a?this.createBubble_():this.disposeBubble_())}createBubble_(){this.paragraphElement_=
718
- Bubble$$module$build$src$core$bubble.textToDom(this.getText());this.bubble_=Bubble$$module$build$src$core$bubble.createNonEditableBubble(this.paragraphElement_,this.getBlock(),this.iconXY_);this.applyColour()}disposeBubble_(){this.bubble_&&(this.bubble_.dispose(),this.bubble_=null);this.paragraphElement_=null}setText(a,b){this.text_[b]!==a&&(a?this.text_[b]=a:delete this.text_[b],this.isVisible()&&(this.setVisible(!1),this.setVisible(!0)))}getText(){const a=[];for(const b in this.text_)a.push(this.text_[b]);
718
+ var TrackedState$$module$build$src$core$rendered_connection=RenderedConnection$$module$build$src$core$rendered_connection.TrackedState,module$build$src$core$rendered_connection={};module$build$src$core$rendered_connection.RenderedConnection=RenderedConnection$$module$build$src$core$rendered_connection;module$build$src$core$rendered_connection.TrackedState=TrackedState$$module$build$src$core$rendered_connection;var Warning$$module$build$src$core$warning=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.paragraphElement=null;this.collapseHidden=!1;this.createIcon();this.text=Object.create(null)}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
719
+ {"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},a)}setVisible(a){a!==this.isVisible()&&(fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(this.getBlock(),a,"warning")),a?this.createBubble():this.disposeBubble())}createBubble(){this.paragraphElement=
720
+ Bubble$$module$build$src$core$bubble.textToDom(this.getText());this.bubble_=Bubble$$module$build$src$core$bubble.createNonEditableBubble(this.paragraphElement,this.getBlock(),this.iconXY_);this.applyColour()}disposeBubble(){this.bubble_&&(this.bubble_.dispose(),this.bubble_=null);this.paragraphElement=null}setText(a,b){this.text[b]!==a&&(a?this.text[b]=a:delete this.text[b],this.isVisible()&&(this.setVisible(!1),this.setVisible(!0)))}getText(){const a=[];for(const b in this.text)a.push(this.text[b]);
719
721
  return a.join("\n")}dispose(){this.getBlock().warning=null;super.dispose()}},module$build$src$core$warning={};module$build$src$core$warning.Warning=Warning$$module$build$src$core$warning;var BlockSvg$$module$build$src$core$block_svg=class extends Block$$module$build$src$core$block{constructor(a,b,c){super(a,b,c);this.renderingDebugger=null;this.width=this.height=0;this.warningTextDb=new Map;this.warning=this.commentIcon_=this.mutator=null;this.eventsInit_=this.renderIsInProgress_=this.rendered=!1;this.workspace=a;this.decompose=this.decompose;this.compose=this.compose;this.saveConnections=this.saveConnections;this.customContextMenu=this.customContextMenu;this.svgGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,
720
722
  {});this.svgGroup_.translate_="";this.style=a.getRenderer().getConstants().getBlockStyle(null);this.pathObject=a.getRenderer().makePathObject(this.svgGroup_,this.style);this.useDragSurface_=!!a.getBlockDragSurface();a=this.pathObject.svgPath;a.tooltip=this;bindMouseEvents$$module$build$src$core$tooltip(a);this.svgGroup_.setAttribute("data-id",this.id);this.doInit_()}initSvg(){if(!this.workspace.rendered)throw TypeError("Workspace is headless.");for(let b=0,c;c=this.inputList[b];b++)c.init();var a=
721
723
  this.getIcons();for(let b=0;b<a.length;b++)a[b].createIcon();this.applyColour();this.pathObject.updateMovable(this.isMovable());a=this.getSvgRoot();this.workspace.options.readOnly||this.eventsInit_||!a||conditionalBind$$module$build$src$core$browser_events(a,"mousedown",this,this.onMouseDown_);this.eventsInit_=!0;a.parentNode||this.workspace.getCanvas().appendChild(a)}getColourSecondary(){return this.style.colourSecondary}getColourTertiary(){return this.style.colourTertiary}select(){if(this.isShadow()&&
@@ -744,8 +746,8 @@ this.workspace.getRenderer().getConstants().getBlockStyle(a);this.styleName_=a;i
744
746
  b){super.setNextStatement(a,b);this.rendered&&(this.render(),this.bumpNeighbours())}setOutput(a,b){super.setOutput(a,b);this.rendered&&(this.render(),this.bumpNeighbours())}setInputsInline(a){super.setInputsInline(a);this.rendered&&(this.render(),this.bumpNeighbours())}removeInput(a,b){a=super.removeInput(a,b);this.rendered&&(this.render(),this.bumpNeighbours());return a}moveNumberedInputBefore(a,b){super.moveNumberedInputBefore(a,b);this.rendered&&(this.render(),this.bumpNeighbours())}appendInput_(a,
745
747
  b){a=super.appendInput_(a,b);this.rendered&&(this.render(),this.bumpNeighbours());return a}setConnectionTracking(a){this.previousConnection&&this.previousConnection.setTracking(a);this.outputConnection&&this.outputConnection.setTracking(a);if(this.nextConnection){this.nextConnection.setTracking(a);var b=this.nextConnection.targetBlock();b&&b.setConnectionTracking(a)}if(!this.collapsed_)for(b=0;b<this.inputList.length;b++){var c=this.inputList[b].connection;c&&(c.setTracking(a),(c=c.targetBlock())&&
746
748
  c.setConnectionTracking(a))}}getConnections_(a){const b=[];if(a||this.rendered)if(this.outputConnection&&b.push(this.outputConnection),this.previousConnection&&b.push(this.previousConnection),this.nextConnection&&b.push(this.nextConnection),a||!this.collapsed_)for(let c=0,d;d=this.inputList[c];c++)d.connection&&b.push(d.connection);return b}lastConnectionInStack(a){return super.lastConnectionInStack(a)}getMatchingConnection(a,b){return super.getMatchingConnection(a,b)}makeConnection_(a){return new RenderedConnection$$module$build$src$core$rendered_connection(this,
747
- a)}getNextBlock(){return super.getNextBlock()}getPreviousBlock(){return super.getPreviousBlock()}bumpNeighbours(){if(!this.isDeadOrDying()&&!this.workspace.isDragging()){var a=this.getRootBlock();if(!a.isInFlyout){var b=this.getConnections_(!1);for(let c=0,d;d=b[c];c++){const e=d;e.isConnected()&&e.isSuperior()&&e.targetBlock().bumpNeighbours();const f=d.neighbours($.config$$module$build$src$core$config.snapRadius);for(let g=0,h;h=f[g];g++){const k=h;e.isConnected()&&k.isConnected()||k.getSourceBlock().getRootBlock()!==
748
- a&&(e.isSuperior()?k.bumpAwayFrom(e):e.bumpAwayFrom(k))}}}}}scheduleSnapAndBump(){const a=getGroup$$module$build$src$core$events$utils();setTimeout(()=>{setGroup$$module$build$src$core$events$utils(a);this.snapToGrid();setGroup$$module$build$src$core$events$utils(!1)},$.config$$module$build$src$core$config.bumpDelay/2);setTimeout(()=>{setGroup$$module$build$src$core$events$utils(a);this.bumpNeighbours();setGroup$$module$build$src$core$events$utils(!1)},$.config$$module$build$src$core$config.bumpDelay)}positionNearConnection(a,
749
+ a)}getNextBlock(){return super.getNextBlock()}getPreviousBlock(){return super.getPreviousBlock()}bumpNeighbours(){this.getRootBlock().bumpNeighboursInternal()}bumpNeighboursInternal(){const a=this.getRootBlock();if(!(this.isDeadOrDying()||this.workspace.isDragging()||a.isInFlyout))for(const b of this.getConnections_(!1)){if(b.isSuperior()){let c;null==(c=b.targetBlock())||c.bumpNeighboursInternal()}for(const c of b.neighbours($.config$$module$build$src$core$config.snapRadius))c.getSourceBlock().getRootBlock()!==
750
+ a&&(b.isConnected()&&c.isConnected()||(b.isSuperior()?c.bumpAwayFrom(b):b.bumpAwayFrom(c)))}}scheduleSnapAndBump(){const a=getGroup$$module$build$src$core$events$utils();setTimeout(()=>{setGroup$$module$build$src$core$events$utils(a);this.snapToGrid();setGroup$$module$build$src$core$events$utils(!1)},$.config$$module$build$src$core$config.bumpDelay/2);setTimeout(()=>{setGroup$$module$build$src$core$events$utils(a);this.bumpNeighbours();setGroup$$module$build$src$core$events$utils(!1)},$.config$$module$build$src$core$config.bumpDelay)}positionNearConnection(a,
749
751
  b){a.type!==ConnectionType$$module$build$src$core$connection_type.NEXT_STATEMENT&&a.type!==ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE||this.moveBy(b.x-a.x,b.y-a.y)}getFirstStatementConnection(){return super.getFirstStatementConnection()}getChildren(a){return super.getChildren(a)}render(a){if(!this.renderIsInProgress_){this.renderIsInProgress_=!0;try{this.rendered=!0;startTextWidthCache$$module$build$src$core$utils$dom();this.isCollapsed()&&this.updateCollapsed_();this.workspace.getRenderer().render(this);
750
752
  this.updateConnectionLocations_();if(!1!==a){const b=this.getParent();b?b.render(!0):this.workspace.resizeContents()}stopTextWidthCache$$module$build$src$core$utils$dom();this.updateMarkers_()}finally{this.renderIsInProgress_=!1}}}updateMarkers_(){this.workspace.keyboardAccessibilityMode&&this.pathObject.cursorSvg&&this.workspace.getCursor().draw();this.workspace.keyboardAccessibilityMode&&this.pathObject.markerSvg&&this.workspace.getMarker(MarkerManager$$module$build$src$core$marker_manager.LOCAL_MARKER).draw()}updateConnectionLocations_(){const a=
751
753
  this.getRelativeToSurfaceXY();this.previousConnection&&this.previousConnection.moveToOffset(a);this.outputConnection&&this.outputConnection.moveToOffset(a);for(let b=0;b<this.inputList.length;b++){const c=this.inputList[b].connection;c&&(c.moveToOffset(a),c.isConnected()&&c.tighten())}this.nextConnection&&(this.nextConnection.moveToOffset(a),this.nextConnection.isConnected()&&this.nextConnection.tighten())}setCursorSvg(a){this.pathObject.setCursorSvg(a)}setMarkerSvg(a){this.pathObject.setMarkerSvg(a)}getHeightWidth(){let a=
@@ -849,13 +851,13 @@ this.targetBlock_.isEnabled()&&(getGroup$$module$build$src$core$events$utils()||
849
851
  setGroup$$module$build$src$core$events$utils(!1)}doWorkspaceClick_(a){a=this.creatorWorkspace;getSelected$$module$build$src$core$common()&&getSelected$$module$build$src$core$common().unselect();this.fireWorkspaceClick_(this.startWorkspace_||a)}bringBlockToFront_(){this.targetBlock_&&!this.flyout_&&this.targetBlock_.bringToFront()}setStartField(a){if(this.hasStarted_)throw Error("Tried to call gesture.setStartField, but the gesture had already been started.");this.startField_||(this.startField_=a)}setStartBubble(a){this.startBubble_||
850
852
  (this.startBubble_=a)}setStartBlock(a){this.startBlock_||this.startBubble_||(this.startBlock_=a,a.isInFlyout&&a!==a.getRootBlock()?this.setTargetBlock_(a.getRootBlock()):this.setTargetBlock_(a))}setTargetBlock_(a){a.isShadow()?this.setTargetBlock_(a.getParent()):this.targetBlock_=a}setStartWorkspace_(a){this.startWorkspace_||(this.startWorkspace_=a)}setStartFlyout_(a){this.flyout_||(this.flyout_=a)}isBubbleClick_(){return!!this.startBubble_&&!this.hasExceededDragRadius_}isBlockClick_(){return!!this.startBlock_&&
851
853
  !this.hasExceededDragRadius_&&!this.isFieldClick_()}isFieldClick_(){return(this.startField_?this.startField_.isClickable():!1)&&!this.hasExceededDragRadius_&&(!this.flyout_||!this.flyout_.autoClose)}isWorkspaceClick_(){return!this.startBlock_&&!this.startBubble_&&!this.startField_&&!this.hasExceededDragRadius_}isDragging(){return!!this.workspaceDragger_||!!this.blockDragger_||!!this.bubbleDragger_}hasStarted(){return this.hasStarted_}getInsertionMarkers(){return this.blockDragger_?this.blockDragger_.getInsertionMarkers():
852
- []}getCurrentDragger(){let a,b;return null!=(b=null!=(a=this.blockDragger_)?a:this.workspaceDragger_)?b:this.bubbleDragger_}static inProgress(){const a=getAllWorkspaces$$module$build$src$core$common();for(let b=0,c;c=a[b];b++)if(c.currentGesture_)return!0;return!1}},module$build$src$core$gesture={};module$build$src$core$gesture.Gesture=Gesture$$module$build$src$core$gesture;var ShortcutRegistry$$module$build$src$core$shortcut_registry=class{constructor(){this.shortcuts=new Map;this.keyMap=new Map;this.reset()}reset(){this.shortcuts.clear();this.keyMap.clear()}register(a,b){if(this.shortcuts.get(a.name)&&!b)throw Error('Shortcut with name "'+a.name+'" already exists.');this.shortcuts.set(a.name,a);if((b=a.keyCodes)&&0<b.length)for(let c=0;c<b.length;c++)this.addKeyMapping(b[c],a.name,!!a.allowCollision)}unregister(a){if(!this.shortcuts.get(a))return console.warn('Keyboard shortcut with name "'+
853
- a+'" not found.'),!1;this.removeAllKeyMappings(a);this.shortcuts.delete(a);return!0}addKeyMapping(a,b,c){a=String(a);const d=this.keyMap.get(a);if(d&&!c)throw Error('Shortcut with name "'+b+'" collides with shortcuts '+d.toString());d&&c?d.unshift(b):this.keyMap.set(a,[b])}removeKeyMapping(a,b,c){const d=this.keyMap.get(a);if(!d)return c||console.warn('No keyboard shortcut with name "'+b+'" registered with key code "'+a+'"'),!1;const e=d.indexOf(b);if(-1<e)return d.splice(e,1),0===d.length&&this.keyMap.delete(a),
854
- !0;c||console.warn('No keyboard shortcut with name "'+b+'" registered with key code "'+a+'"');return!1}removeAllKeyMappings(a){for(const b of this.keyMap.keys())this.removeKeyMapping(b,a,!0)}setKeyMap(a){this.keyMap.clear();for(const b in a)this.keyMap.set(b,a[b])}getKeyMap(){const a=Object.create(null);for(const [b,c]of this.keyMap)a[b]=c;return a}getRegistry(){const a=Object.create(null);for(const [b,c]of this.shortcuts)a[b]=c;return deepMerge$$module$build$src$core$utils$object(Object.create(null),
855
- a)}onKeyDown(a,b){var c=this.serializeKeyEvent_(b);c=this.getShortcutNamesByKeyCode(c);if(!c)return!1;for(let d=0,e;e=c[d];d++){const f=this.shortcuts.get(e);let g,h;if(null==(g=f)||!g.preconditionFn||(null==(h=f)?0:h.preconditionFn(a))){let k,l;if((null==(k=f)?0:k.callback)&&(null==(l=f)?0:l.callback(a,b,f)))return!0}}return!1}getShortcutNamesByKeyCode(a){return this.keyMap.get(a)||[]}getKeyCodesByShortcutName(a){const b=[];for(const [c,d]of this.keyMap)-1<d.indexOf(a)&&b.push(c);return b}serializeKeyEvent_(a){let b=
856
- "";for(const c in ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys)a.getModifierState(c)&&(""!==b&&(b+="+"),b+=c);""!==b&&a.keyCode?b=b+"+"+a.keyCode:a.keyCode&&(b=a.keyCode.toString());return b}checkModifiers_(a){for(let b=0,c;c=a[b];b++)if(!(c in ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys))throw Error(c+" is not a valid modifier key.");}createSerializedKey(a,b){let c="";if(b){this.checkModifiers_(b);for(const d in ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys)-1<
857
- b.indexOf(ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys[d])&&(""!==c&&(c+="+"),c+=d)}""!==c&&a?c=c+"+"+a:a&&(c=a.toString());return c}};ShortcutRegistry$$module$build$src$core$shortcut_registry.registry=new ShortcutRegistry$$module$build$src$core$shortcut_registry;
858
- (function(a){a=a.modifierKeys||(a.modifierKeys={});a[a.Shift=16]="Shift";a[a.Control=17]="Control";a[a.Alt=18]="Alt";a[a.Meta=91]="Meta"})(ShortcutRegistry$$module$build$src$core$shortcut_registry||(ShortcutRegistry$$module$build$src$core$shortcut_registry={}));var module$build$src$core$shortcut_registry={};module$build$src$core$shortcut_registry.ShortcutRegistry=ShortcutRegistry$$module$build$src$core$shortcut_registry;var names$$module$build$src$core$shortcut_items;(function(a){a.ESCAPE="escape";a.DELETE="delete";a.COPY="copy";a.CUT="cut";a.PASTE="paste";a.UNDO="undo";a.REDO="redo"})(names$$module$build$src$core$shortcut_items||(names$$module$build$src$core$shortcut_items={}));registerDefaultShortcuts$$module$build$src$core$shortcut_items();var module$build$src$core$shortcut_items={};module$build$src$core$shortcut_items.names=names$$module$build$src$core$shortcut_items;
854
+ []}getCurrentDragger(){let a,b;return null!=(b=null!=(a=this.blockDragger_)?a:this.workspaceDragger_)?b:this.bubbleDragger_}static inProgress(){const a=getAllWorkspaces$$module$build$src$core$common();for(let b=0,c;c=a[b];b++)if(c.currentGesture_)return!0;return!1}},module$build$src$core$gesture={};module$build$src$core$gesture.Gesture=Gesture$$module$build$src$core$gesture;var ShortcutRegistry$$module$build$src$core$shortcut_registry=class{constructor(){this.shortcuts=new Map;this.keyMap=new Map;this.reset()}reset(){this.shortcuts.clear();this.keyMap.clear()}register(a,b){if(this.shortcuts.get(a.name)&&!b)throw Error(`Shortcut named "${a.name}" already exists.`);this.shortcuts.set(a.name,a);if((b=a.keyCodes)&&0<b.length)for(let c=0;c<b.length;c++)this.addKeyMapping(b[c],a.name,!!a.allowCollision)}unregister(a){if(!this.shortcuts.get(a))return console.warn(`Keyboard shortcut named "${a}" not found.`),
855
+ !1;this.removeAllKeyMappings(a);this.shortcuts.delete(a);return!0}addKeyMapping(a,b,c){a=String(a);const d=this.keyMap.get(a);if(d&&!c)throw Error(`Shortcut named "${b}" collides with shortcuts "${d}"`);d&&c?d.unshift(b):this.keyMap.set(a,[b])}removeKeyMapping(a,b,c){const d=this.keyMap.get(a);if(!d)return c||console.warn(`No keyboard shortcut named "${b}" registered with key code "${a}"`),!1;const e=d.indexOf(b);if(-1<e)return d.splice(e,1),0===d.length&&this.keyMap.delete(a),!0;c||console.warn(`No keyboard shortcut named "${b}" registered with key code "${a}"`);
856
+ return!1}removeAllKeyMappings(a){for(const b of this.keyMap.keys())this.removeKeyMapping(b,a,!0)}setKeyMap(a){this.keyMap.clear();for(const b in a)this.keyMap.set(b,a[b])}getKeyMap(){const a=Object.create(null);for(const [b,c]of this.keyMap)a[b]=c;return a}getRegistry(){const a=Object.create(null);for(const [b,c]of this.shortcuts)a[b]=c;return deepMerge$$module$build$src$core$utils$object(Object.create(null),a)}onKeyDown(a,b){var c=this.serializeKeyEvent_(b);c=this.getShortcutNamesByKeyCode(c);if(!c)return!1;
857
+ for(let d=0,e;e=c[d];d++){const f=this.shortcuts.get(e);let g,h;if(null==(g=f)||!g.preconditionFn||(null==(h=f)?0:h.preconditionFn(a))){let k,l;if((null==(k=f)?0:k.callback)&&(null==(l=f)?0:l.callback(a,b,f)))return!0}}return!1}getShortcutNamesByKeyCode(a){return this.keyMap.get(a)||[]}getKeyCodesByShortcutName(a){const b=[];for(const [c,d]of this.keyMap)-1<d.indexOf(a)&&b.push(c);return b}serializeKeyEvent_(a){let b="";for(const c in ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys)a.getModifierState(c)&&
858
+ (""!==b&&(b+="+"),b+=c);""!==b&&a.keyCode?b=b+"+"+a.keyCode:a.keyCode&&(b=a.keyCode.toString());return b}checkModifiers_(a){for(let b=0,c;c=a[b];b++)if(!(c in ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys))throw Error(c+" is not a valid modifier key.");}createSerializedKey(a,b){let c="";if(b){this.checkModifiers_(b);for(const d in ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys)-1<b.indexOf(ShortcutRegistry$$module$build$src$core$shortcut_registry.modifierKeys[d])&&
859
+ (""!==c&&(c+="+"),c+=d)}""!==c&&a?c=c+"+"+a:a&&(c=a.toString());return c}};ShortcutRegistry$$module$build$src$core$shortcut_registry.registry=new ShortcutRegistry$$module$build$src$core$shortcut_registry;(function(a){a=a.modifierKeys||(a.modifierKeys={});a[a.Shift=16]="Shift";a[a.Control=17]="Control";a[a.Alt=18]="Alt";a[a.Meta=91]="Meta"})(ShortcutRegistry$$module$build$src$core$shortcut_registry||(ShortcutRegistry$$module$build$src$core$shortcut_registry={}));
860
+ var module$build$src$core$shortcut_registry={};module$build$src$core$shortcut_registry.ShortcutRegistry=ShortcutRegistry$$module$build$src$core$shortcut_registry;var names$$module$build$src$core$shortcut_items;(function(a){a.ESCAPE="escape";a.DELETE="delete";a.COPY="copy";a.CUT="cut";a.PASTE="paste";a.UNDO="undo";a.REDO="redo"})(names$$module$build$src$core$shortcut_items||(names$$module$build$src$core$shortcut_items={}));registerDefaultShortcuts$$module$build$src$core$shortcut_items();var module$build$src$core$shortcut_items={};module$build$src$core$shortcut_items.names=names$$module$build$src$core$shortcut_items;
859
861
  module$build$src$core$shortcut_items.registerCopy=registerCopy$$module$build$src$core$shortcut_items;module$build$src$core$shortcut_items.registerCut=registerCut$$module$build$src$core$shortcut_items;module$build$src$core$shortcut_items.registerDefaultShortcuts=registerDefaultShortcuts$$module$build$src$core$shortcut_items;module$build$src$core$shortcut_items.registerDelete=registerDelete$$module$build$src$core$shortcut_items;module$build$src$core$shortcut_items.registerEscape=registerEscape$$module$build$src$core$shortcut_items;
860
862
  module$build$src$core$shortcut_items.registerPaste=registerPaste$$module$build$src$core$shortcut_items;module$build$src$core$shortcut_items.registerRedo=registerRedo$$module$build$src$core$shortcut_items;module$build$src$core$shortcut_items.registerUndo=registerUndo$$module$build$src$core$shortcut_items;var ThemeChange$$module$build$src$core$events$events_theme_change=class extends UiBase$$module$build$src$core$events$events_ui_base{constructor(a,b){super(b);this.type=THEME_CHANGE$$module$build$src$core$events$utils;this.themeName=a}toJson(){const a=super.toJson();if(!this.themeName)throw Error("The theme name is undefined. Either pass a theme name to the constructor, or call fromJson");a.themeName=this.themeName;return a}fromJson(a){super.fromJson(a);this.themeName=a.themeName}};
861
863
  register$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT,THEME_CHANGE$$module$build$src$core$events$utils,ThemeChange$$module$build$src$core$events$events_theme_change);var module$build$src$core$events$events_theme_change={};module$build$src$core$events$events_theme_change.ThemeChange=ThemeChange$$module$build$src$core$events$events_theme_change;var ViewportChange$$module$build$src$core$events$events_viewport=class extends UiBase$$module$build$src$core$events$events_ui_base{constructor(a,b,c,d,e){super(d);this.type=VIEWPORT_CHANGE$$module$build$src$core$events$utils;this.viewTop=a;this.viewLeft=b;this.scale=c;this.oldScale=e}toJson(){const a=super.toJson();if(void 0===this.viewTop)throw Error("The view top is undefined. Either pass a value to the constructor, or call fromJson");if(void 0===this.viewLeft)throw Error("The view left is undefined. Either pass a value to the constructor, or call fromJson");
@@ -872,9 +874,14 @@ null)}populateVariables(a){a=allUsedVarModels$$module$build$src$core$variables(a
872
874
  b===$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE?this.variablePrefix_:"";this.db.has(b)||this.db.set(b,new Map);const e=this.db.get(b);if(e.has(a))return d+e.get(a);b=this.getDistinctName(c,b);e.set(a,b.substr(d.length));return b}getUserNames(a){let b;return(a=null==(b=this.db.get(a))?void 0:b.keys())?Array.from(a):[]}getDistinctName(a,b){a=this.safeName_(a);let c="";for(;this.dbReverse.has(a+c)||this.reservedWords.has(a+c);)c=c?c+1:2;a+=c;this.dbReverse.add(a);return(b===$.NameType$$module$build$src$core$names.VARIABLE||
873
875
  b===$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE?this.variablePrefix_:"")+a}safeName_(a){a?(a=encodeURI(a.replace(/ /g,"_")).replace(/[^\w]/g,"_"),-1!=="0123456789".indexOf(a[0])&&(a="my_"+a)):a=Msg$$module$build$src$core$msg.UNNAMED_KEY||"unnamed";return a}static equals(a,b){return a.toLowerCase()===b.toLowerCase()}};
874
876
  (function(a){a=a.NameType||(a.NameType={});a.DEVELOPER_VARIABLE="DEVELOPER_VARIABLE";a.VARIABLE="VARIABLE";a.PROCEDURE="PROCEDURE"})(Names$$module$build$src$core$names||(Names$$module$build$src$core$names={}));$.NameType$$module$build$src$core$names=Names$$module$build$src$core$names.NameType;Names$$module$build$src$core$names.DEVELOPER_VARIABLE_TYPE=$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE;$.module$build$src$core$names={};$.module$build$src$core$names.NameType=$.NameType$$module$build$src$core$names;
875
- $.module$build$src$core$names.Names=Names$$module$build$src$core$names;var CATEGORY_NAME$$module$build$src$core$procedures,DEFAULT_ARG$$module$build$src$core$procedures;CATEGORY_NAME$$module$build$src$core$procedures="PROCEDURE";DEFAULT_ARG$$module$build$src$core$procedures="x";$.module$build$src$core$procedures={};$.module$build$src$core$procedures.CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$procedures;$.module$build$src$core$procedures.DEFAULT_ARG=DEFAULT_ARG$$module$build$src$core$procedures;$.module$build$src$core$procedures.allProcedures=allProcedures$$module$build$src$core$procedures;
876
- $.module$build$src$core$procedures.findLegalName=findLegalName$$module$build$src$core$procedures;$.module$build$src$core$procedures.flyoutCategory=flyoutCategory$$module$build$src$core$procedures;$.module$build$src$core$procedures.getCallers=getCallers$$module$build$src$core$procedures;$.module$build$src$core$procedures.getDefinition=getDefinition$$module$build$src$core$procedures;$.module$build$src$core$procedures.isNameUsed=isNameUsed$$module$build$src$core$procedures;
877
- $.module$build$src$core$procedures.mutateCallers=mutateCallers$$module$build$src$core$procedures;$.module$build$src$core$procedures.mutatorOpenListener=mutatorOpenListener$$module$build$src$core$procedures;$.module$build$src$core$procedures.rename=rename$$module$build$src$core$procedures;var TypesContainer$$module$build$src$core$renderers$measurables$types=class{constructor(){this.NONE=0;this.FIELD=1;this.HAT=2;this.ICON=4;this.SPACER=8;this.BETWEEN_ROW_SPACER=16;this.IN_ROW_SPACER=32;this.EXTERNAL_VALUE_INPUT=64;this.INPUT=128;this.INLINE_INPUT=256;this.STATEMENT_INPUT=512;this.CONNECTION=1024;this.PREVIOUS_CONNECTION=2048;this.NEXT_CONNECTION=4096;this.OUTPUT_CONNECTION=8192;this.CORNER=16384;this.LEFT_SQUARE_CORNER=32768;this.LEFT_ROUND_CORNER=65536;this.RIGHT_SQUARE_CORNER=131072;
877
+ $.module$build$src$core$names.Names=Names$$module$build$src$core$names;var module$build$src$core$interfaces$i_procedure_block={};module$build$src$core$interfaces$i_procedure_block.isProcedureBlock=isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block;var module$build$src$core$procedures$update_procedures={};module$build$src$core$procedures$update_procedures.triggerProceduresUpdate=triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures;var ObservableProcedureMap$$module$build$src$core$procedures$observable_procedure_map=class extends Map{constructor(a){super();this.workspace=a}set(a,b){super.set(a,b);return this}delete(a){a=super.delete(a);triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);return a}clear(){super.clear();triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace)}add(a){return this.set(a.getId(),a)}getProcedures(){return[...this.values()]}},
878
+ module$build$src$core$procedures$observable_procedure_map={};module$build$src$core$procedures$observable_procedure_map.ObservableProcedureMap=ObservableProcedureMap$$module$build$src$core$procedures$observable_procedure_map;var ObservableProcedureModel$$module$build$src$core$procedures$observable_procedure_model=class{constructor(a,b,c){this.workspace=a;this.parameters=[];this.returnTypes=null;this.enabled=!0;this.id=null!=c?c:genUid$$module$build$src$core$utils$idgenerator();this.name=b}setName(a){this.name=a;triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);return this}insertParameter(a,b){this.parameters.splice(b,0,a);triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);
879
+ return this}deleteParameter(a){this.parameters.splice(a,1);triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);return this}setReturnTypes(a){if(a&&a.length)throw Error("The built-in ProcedureModel does not support typing. You need to implement your own custom ProcedureModel.");this.returnTypes=a;triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);return this}setEnabled(a){this.enabled=a;triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);
880
+ return this}getId(){return this.id}getName(){return this.name}getParameter(a){return this.parameters[a]}getParameters(){return[...this.parameters]}getReturnTypes(){return this.returnTypes}getEnabled(){return this.enabled}},module$build$src$core$procedures$observable_procedure_model={};module$build$src$core$procedures$observable_procedure_model.ObservableProcedureModel=ObservableProcedureModel$$module$build$src$core$procedures$observable_procedure_model;var ObservableParameterModel$$module$build$src$core$procedures$observable_parameter_model=class{constructor(a,b,c){this.workspace=a;this.id=null!=c?c:genUid$$module$build$src$core$utils$idgenerator();let d;this.variable=null!=(d=this.workspace.getVariable(b))?d:a.createVariable(b)}setName(a){if(a==this.variable.name)return this;let b;this.variable=null!=(b=this.workspace.getVariable(a))?b:this.workspace.createVariable(a);triggerProceduresUpdate$$module$build$src$core$procedures$update_procedures(this.workspace);
881
+ return this}setTypes(a){throw Error("The built-in ParameterModel does not support typing. You need to implement your own custom ParameterModel.");}getName(){return this.variable.name}getTypes(){return[]}getId(){return this.id}getVariableModel(){return this.variable}},module$build$src$core$procedures$observable_parameter_model={};module$build$src$core$procedures$observable_parameter_model.ObservableParameterModel=ObservableParameterModel$$module$build$src$core$procedures$observable_parameter_model;var CATEGORY_NAME$$module$build$src$core$procedures,DEFAULT_ARG$$module$build$src$core$procedures;CATEGORY_NAME$$module$build$src$core$procedures="PROCEDURE";DEFAULT_ARG$$module$build$src$core$procedures="x";$.module$build$src$core$procedures={};$.module$build$src$core$procedures.CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$procedures;$.module$build$src$core$procedures.DEFAULT_ARG=DEFAULT_ARG$$module$build$src$core$procedures;$.module$build$src$core$procedures.ObservableParameterModel=ObservableParameterModel$$module$build$src$core$procedures$observable_parameter_model;
882
+ $.module$build$src$core$procedures.ObservableProcedureMap=ObservableProcedureMap$$module$build$src$core$procedures$observable_procedure_map;$.module$build$src$core$procedures.ObservableProcedureModel=ObservableProcedureModel$$module$build$src$core$procedures$observable_procedure_model;$.module$build$src$core$procedures.allProcedures=allProcedures$$module$build$src$core$procedures;$.module$build$src$core$procedures.findLegalName=findLegalName$$module$build$src$core$procedures;
883
+ $.module$build$src$core$procedures.flyoutCategory=flyoutCategory$$module$build$src$core$procedures;$.module$build$src$core$procedures.getCallers=getCallers$$module$build$src$core$procedures;$.module$build$src$core$procedures.getDefinition=getDefinition$$module$build$src$core$procedures;$.module$build$src$core$procedures.isNameUsed=isNameUsed$$module$build$src$core$procedures;$.module$build$src$core$procedures.mutateCallers=mutateCallers$$module$build$src$core$procedures;
884
+ $.module$build$src$core$procedures.mutatorOpenListener=mutatorOpenListener$$module$build$src$core$procedures;$.module$build$src$core$procedures.rename=rename$$module$build$src$core$procedures;var TypesContainer$$module$build$src$core$renderers$measurables$types=class{constructor(){this.NONE=0;this.FIELD=1;this.HAT=2;this.ICON=4;this.SPACER=8;this.BETWEEN_ROW_SPACER=16;this.IN_ROW_SPACER=32;this.EXTERNAL_VALUE_INPUT=64;this.INPUT=128;this.INLINE_INPUT=256;this.STATEMENT_INPUT=512;this.CONNECTION=1024;this.PREVIOUS_CONNECTION=2048;this.NEXT_CONNECTION=4096;this.OUTPUT_CONNECTION=8192;this.CORNER=16384;this.LEFT_SQUARE_CORNER=32768;this.LEFT_ROUND_CORNER=65536;this.RIGHT_SQUARE_CORNER=131072;
878
885
  this.RIGHT_ROUND_CORNER=262144;this.JAGGED_EDGE=524288;this.ROW=1048576;this.TOP_ROW=2097152;this.BOTTOM_ROW=4194304;this.INPUT_ROW=8388608;this.LEFT_CORNER=this.LEFT_SQUARE_CORNER|this.LEFT_ROUND_CORNER;this.RIGHT_CORNER=this.RIGHT_SQUARE_CORNER|this.RIGHT_ROUND_CORNER;this.nextTypeValue_=16777216}getType(a){Object.prototype.hasOwnProperty.call(this,a)||(this[a]=this.nextTypeValue_,this.nextTypeValue_<<=1);return this[a]}isField(a){return a.type&this.FIELD}isHat(a){return a.type&this.HAT}isIcon(a){return a.type&
879
886
  this.ICON}isSpacer(a){return a.type&this.SPACER}isInRowSpacer(a){return a.type&this.IN_ROW_SPACER}isInput(a){return a.type&this.INPUT}isExternalInput(a){return a.type&this.EXTERNAL_VALUE_INPUT}isInlineInput(a){return a.type&this.INLINE_INPUT}isStatementInput(a){return a.type&this.STATEMENT_INPUT}isPreviousConnection(a){return a.type&this.PREVIOUS_CONNECTION}isNextConnection(a){return a.type&this.NEXT_CONNECTION}isPreviousOrNextConnection(a){return a.type&(this.PREVIOUS_CONNECTION|this.NEXT_CONNECTION)}isLeftRoundedCorner(a){return a.type&
880
887
  this.LEFT_ROUND_CORNER}isRightRoundedCorner(a){return a.type&this.RIGHT_ROUND_CORNER}isLeftSquareCorner(a){return a.type&this.LEFT_SQUARE_CORNER}isRightSquareCorner(a){return a.type&this.RIGHT_SQUARE_CORNER}isCorner(a){return a.type&this.CORNER}isJaggedEdge(a){return a.type&this.JAGGED_EDGE}isRow(a){return a.type&this.ROW}isBetweenRowSpacer(a){return a.type&this.BETWEEN_ROW_SPACER}isTopRow(a){return a.type&this.TOP_ROW}isBottomRow(a){return a.type&this.BOTTOM_ROW}isTopOrBottomRow(a){return a.type&
@@ -991,10 +998,9 @@ this.markerSvg_);this.markerInput_=createSvgElement$$module$build$src$core$utils
991
998
  a,this.markerSvgLine_);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.ANIMATE,a,this.markerInput_);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.ANIMATE,Object.assign({},a,{attributeName:"stroke"}),this.markerBlock_)}return this.markerSvg_}applyColour_(a){if(!(this.markerSvgLine_&&this.markerSvgRect_&&this.markerInput_&&this.markerBlock_))throw Error("createDom should be called before applying color to the markerj");
992
999
  this.markerSvgLine_.setAttribute("fill",this.colour_);this.markerSvgRect_.setAttribute("stroke",this.colour_);this.markerInput_.setAttribute("fill",this.colour_);this.markerBlock_.setAttribute("stroke",this.colour_);this.isCursor()&&(a=this.colour_+";transparent;transparent;",this.markerSvgLine_.firstElementChild.setAttribute("values",a),this.markerInput_.firstElementChild.setAttribute("values",a),this.markerBlock_.firstElementChild.setAttribute("values",a))}dispose(){this.svgGroup_&&removeNode$$module$build$src$core$utils$dom(this.svgGroup_)}},
993
1000
  module$build$src$core$renderers$common$marker_svg={};module$build$src$core$renderers$common$marker_svg.MarkerSvg=MarkerSvg$$module$build$src$core$renderers$common$marker_svg;var PathObject$$module$build$src$core$renderers$common$path_object=class{constructor(a,b,c){this.markerSvg=this.cursorSvg=null;this.constants=c;this.style=b;this.svgRoot=a;this.svgPath=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyPath"},this.svgRoot)}setPath(a){this.svgPath.setAttribute("d",a)}flipRTL(){this.svgPath.setAttribute("transform","scale(-1 1)")}setCursorSvg(a){a?(this.svgRoot.appendChild(a),this.cursorSvg=a):this.cursorSvg=
994
- null}setMarkerSvg(a){a?(this.cursorSvg?this.svgRoot.insertBefore(a,this.cursorSvg):this.svgRoot.appendChild(a),this.markerSvg=a):this.markerSvg=null}applyColour(a){if(!this.style.colourTertiary)throw Error("The renderer did not properly initialize the block style");this.svgPath.setAttribute("stroke",this.style.colourTertiary);this.svgPath.setAttribute("fill",this.style.colourPrimary);this.updateShadow_(a.isShadow());this.updateDisabled_(!a.isEnabled()||a.getInheritedDisabled())}setStyle(a){this.style=
995
- a}setClass_(a,b){a&&(b?addClass$$module$build$src$core$utils$dom(this.svgRoot,a):removeClass$$module$build$src$core$utils$dom(this.svgRoot,a))}updateHighlighted(a){a?this.svgPath.setAttribute("filter","url(#"+this.constants.embossFilterId+")"):this.svgPath.setAttribute("filter","none")}updateShadow_(a){if(a){if(!this.style.colourSecondary)throw Error("The renderer did not properly initialize the block style");this.svgPath.setAttribute("stroke","none");this.svgPath.setAttribute("fill",this.style.colourSecondary)}}updateDisabled_(a){this.setClass_("blocklyDisabled",
996
- a);a&&this.svgPath.setAttribute("fill","url(#"+this.constants.disabledPatternId+")")}updateSelected(a){this.setClass_("blocklySelected",a)}updateDraggingDelete(a){this.setClass_("blocklyDraggingDelete",a)}updateInsertionMarker(a){this.setClass_("blocklyInsertionMarker",a)}updateMovable(a){this.setClass_("blocklyDraggable",a)}updateReplacementFade(a){this.setClass_("blocklyReplaceable",a)}updateShapeForInputHighlight(a,b){}},module$build$src$core$renderers$common$path_object={};
997
- module$build$src$core$renderers$common$path_object.PathObject=PathObject$$module$build$src$core$renderers$common$path_object;var DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager="The insertion marker manager tried to create a marker but the result is missing %1. If you are using a mutator, make sure your domToMutation method is properly defined.",InsertionMarkerManager$$module$build$src$core$insertion_marker_manager=class{constructor(a){this.localConnection_=this.closestConnection_=this.lastMarker_=this.lastOnStack_=null;this.wouldDeleteBlock_=!1;this.fadedBlock_=this.highlightedBlock_=this.markerConnection_=
1001
+ null}setMarkerSvg(a){a?(this.cursorSvg?this.svgRoot.insertBefore(a,this.cursorSvg):this.svgRoot.appendChild(a),this.markerSvg=a):this.markerSvg=null}applyColour(a){this.svgPath.setAttribute("stroke",this.style.colourTertiary);this.svgPath.setAttribute("fill",this.style.colourPrimary);this.updateShadow_(a.isShadow());this.updateDisabled_(!a.isEnabled()||a.getInheritedDisabled())}setStyle(a){this.style=a}setClass_(a,b){a&&(b?addClass$$module$build$src$core$utils$dom(this.svgRoot,a):removeClass$$module$build$src$core$utils$dom(this.svgRoot,
1002
+ a))}updateHighlighted(a){a?this.svgPath.setAttribute("filter","url(#"+this.constants.embossFilterId+")"):this.svgPath.setAttribute("filter","none")}updateShadow_(a){a&&(this.svgPath.setAttribute("stroke","none"),this.svgPath.setAttribute("fill",this.style.colourSecondary))}updateDisabled_(a){this.setClass_("blocklyDisabled",a);a&&this.svgPath.setAttribute("fill","url(#"+this.constants.disabledPatternId+")")}updateSelected(a){this.setClass_("blocklySelected",a)}updateDraggingDelete(a){this.setClass_("blocklyDraggingDelete",
1003
+ a)}updateInsertionMarker(a){this.setClass_("blocklyInsertionMarker",a)}updateMovable(a){this.setClass_("blocklyDraggable",a)}updateReplacementFade(a){this.setClass_("blocklyReplaceable",a)}updateShapeForInputHighlight(a,b){}},module$build$src$core$renderers$common$path_object={};module$build$src$core$renderers$common$path_object.PathObject=PathObject$$module$build$src$core$renderers$common$path_object;var DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager="The insertion marker manager tried to create a marker but the result is missing %1. If you are using a mutator, make sure your domToMutation method is properly defined.",InsertionMarkerManager$$module$build$src$core$insertion_marker_manager=class{constructor(a){this.localConnection_=this.closestConnection_=this.lastMarker_=this.lastOnStack_=null;this.wouldDeleteBlock_=!1;this.fadedBlock_=this.highlightedBlock_=this.markerConnection_=
998
1004
  null;setSelected$$module$build$src$core$common(a);this.topBlock_=a;this.workspace_=a.workspace;this.firstMarker_=this.createMarkerBlock_(this.topBlock_);this.availableConnections_=this.initAvailableConnections_()}dispose(){this.availableConnections_.length=0;disable$$module$build$src$core$events$utils();try{this.firstMarker_&&this.firstMarker_.dispose(),this.lastMarker_&&this.lastMarker_.dispose()}finally{enable$$module$build$src$core$events$utils()}}updateAvailableConnections(){this.availableConnections_=
999
1005
  this.initAvailableConnections_()}wouldDeleteBlock(){return this.wouldDeleteBlock_}wouldConnectBlock(){return!!this.closestConnection_}applyConnections(){if(this.closestConnection_){if(!this.localConnection_)throw Error("Cannot apply connections because there is no local connection");disable$$module$build$src$core$events$utils();this.hidePreview_();enable$$module$build$src$core$events$utils();this.localConnection_.connect(this.closestConnection_);if(this.topBlock_.rendered){const a=this.localConnection_.isSuperior()?
1000
1006
  this.closestConnection_:this.localConnection_;connectionUiEffect$$module$build$src$core$block_animations(a.getSourceBlock());this.topBlock_.getRootBlock().bringToFront()}}}update(a,b){const c=this.getCandidate_(a);if((this.wouldDeleteBlock_=this.shouldDelete_(c,b))||this.shouldUpdatePreviews_(c,a))disable$$module$build$src$core$events$utils(),this.maybeHidePreview_(c),this.maybeShowPreview_(c),enable$$module$build$src$core$events$utils()}createMarkerBlock_(a){var b=a.type;disable$$module$build$src$core$events$utils();
@@ -1056,88 +1062,89 @@ a,b,d);a=this.variableMap.get(b)||[];a.push(d);this.variableMap.delete(b);this.v
1056
1062
  0,f;f=d[e];e++)if("procedures_defnoreturn"===f.type||"procedures_defreturn"===f.type){a=String(f.getFieldValue("NAME"));c=Msg$$module$build$src$core$msg.CANNOT_DELETE_VARIABLE_PROCEDURE.replace("%1",c).replace("%2",a);alert$$module$build$src$core$dialog(c);return}1<d.length?(c=Msg$$module$build$src$core$msg.DELETE_VARIABLE_CONFIRMATION.replace("%1",String(d.length)).replace("%2",c),confirm$$module$build$src$core$dialog(c,e=>{e&&b&&this.deleteVariableInternal(b,d)})):this.deleteVariableInternal(b,
1057
1063
  d)}else console.warn("Can't delete non-existent variable: "+a)}deleteVariableInternal(a,b){const c=getGroup$$module$build$src$core$events$utils();c||setGroup$$module$build$src$core$events$utils(!0);try{for(let d=0;d<b.length;d++)b[d].dispose(!0);this.deleteVariable(a)}finally{c||setGroup$$module$build$src$core$events$utils(!1)}}getVariable(a,b){if(b=this.variableMap.get(b||""))for(let c=0,d;d=b[c];c++)if(Names$$module$build$src$core$names.equals(d.name,a))return d;return null}getVariableById(a){for(const [,
1058
1064
  b]of this.variableMap)for(const c of b)if(c.getId()===a)return c;return null}getVariablesOfType(a){return(a=this.variableMap.get(a||""))?a.slice():[]}getVariableTypes(a){const b=new Set(this.variableMap.keys());if(a&&a.getPotentialVariableMap())for(const c of a.getPotentialVariableMap().variableMap.keys())b.add(c);b.has("")||b.add("");return Array.from(b.values())}getAllVariables(){let a=[];for(const b of this.variableMap.values())a=a.concat(b);return a}getAllVariableNames(){return Array.from(this.variableMap.values()).flat().map(a=>
1059
- a.name)}getVariableUsesById(a){const b=[],c=this.workspace.getAllBlocks(!1);for(let d=0;d<c.length;d++){const e=c[d].getVarModels();if(e)for(let f=0;f<e.length;f++)e[f].getId()===a&&b.push(c[d])}return b}},module$build$src$core$variable_map={};module$build$src$core$variable_map.VariableMap=VariableMap$$module$build$src$core$variable_map;var Workspace$$module$build$src$core$workspace=class{constructor(a){this.isClearing=this.internalIsMutator=this.internalIsFlyout=this.rendered=!1;this.MAX_UNDO=1024;this.connectionDBList=[];this.topBlocks_=[];this.topComments_=[];this.commentDB=new Map;this.listeners_=[];this.undoStack_=[];this.redoStack_=[];this.blockDB=new Map;this.typedBlocksDB=new Map;this.potentialVariableMap_=null;this.id=genUid$$module$build$src$core$utils$idgenerator();registerWorkspace$$module$build$src$core$common(this);
1060
- this.options=a||new Options$$module$build$src$core$options({});this.RTL=!!this.options.RTL;this.horizontalLayout=!!this.options.horizontalLayout;this.toolboxPosition=this.options.toolboxPosition;this.connectionChecker=new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.CONNECTION_CHECKER,this.options,!0))(this);this.variableMap_=new VariableMap$$module$build$src$core$variable_map(this)}get isFlyout(){return this.internalIsFlyout}get isMutator(){return this.internalIsMutator}dispose(){this.listeners_.length=
1061
- 0;this.clear();unregisterWorkpace$$module$build$src$core$common(this)}sortObjects_(a,b){a=a.getRelativeToSurfaceXY();b=b.getRelativeToSurfaceXY();return a.y+Workspace$$module$build$src$core$workspace.prototype.sortObjects_.offset*a.x-(b.y+Workspace$$module$build$src$core$workspace.prototype.sortObjects_.offset*b.x)}addTopBlock(a){this.topBlocks_.push(a)}removeTopBlock(a){if(!removeElem$$module$build$src$core$utils$array(this.topBlocks_,a))throw Error("Block not present in workspace's list of top-most blocks.");
1062
- }getTopBlocks(a){const b=[].concat(this.topBlocks_);a&&1<b.length&&(this.sortObjects_.offset=Math.sin(toRadians$$module$build$src$core$utils$math(Workspace$$module$build$src$core$workspace.SCAN_ANGLE)),this.RTL&&(this.sortObjects_.offset*=-1),b.sort(this.sortObjects_));return b}addTypedBlock(a){this.typedBlocksDB.has(a.type)||this.typedBlocksDB.set(a.type,[]);this.typedBlocksDB.get(a.type).push(a)}removeTypedBlock(a){removeElem$$module$build$src$core$utils$array(this.typedBlocksDB.get(a.type),a);
1063
- this.typedBlocksDB.get(a.type).length||this.typedBlocksDB.delete(a.type)}getBlocksByType(a,b){if(!this.typedBlocksDB.has(a))return[];a=this.typedBlocksDB.get(a).slice(0);b&&a&&1<a.length&&(this.sortObjects_.offset=Math.sin(toRadians$$module$build$src$core$utils$math(Workspace$$module$build$src$core$workspace.SCAN_ANGLE)),this.RTL&&(this.sortObjects_.offset*=-1),a.sort(this.sortObjects_));return a.filter(function(c){return!c.isInsertionMarker()})}addTopComment(a){this.topComments_.push(a);this.commentDB.has(a.id)&&
1064
- console.warn('Overriding an existing comment on this workspace, with id "'+a.id+'"');this.commentDB.set(a.id,a)}removeTopComment(a){if(!removeElem$$module$build$src$core$utils$array(this.topComments_,a))throw Error("Comment not present in workspace's list of top-most comments.");this.commentDB.delete(a.id)}getTopComments(a){const b=[].concat(this.topComments_);a&&1<b.length&&(this.sortObjects_.offset=Math.sin(toRadians$$module$build$src$core$utils$math(Workspace$$module$build$src$core$workspace.SCAN_ANGLE)),
1065
- this.RTL&&(this.sortObjects_.offset*=-1),b.sort(this.sortObjects_));return b}getAllBlocks(a){if(a){var b=this.getTopBlocks(!0);a=[];for(let c=0;c<b.length;c++)a.push(...b[c].getDescendants(!0))}else for(a=this.getTopBlocks(!1),b=0;b<a.length;b++)a.push(...a[b].getChildren(!1));return a.filter(function(c){return!c.isInsertionMarker()})}clear(){this.isClearing=!0;try{const a=getGroup$$module$build$src$core$events$utils();for(a||setGroup$$module$build$src$core$events$utils(!0);this.topBlocks_.length;)this.topBlocks_[0].dispose(!1);
1066
- for(;this.topComments_.length;)this.topComments_[this.topComments_.length-1].dispose();a||setGroup$$module$build$src$core$events$utils(!1);this.variableMap_.clear();this.potentialVariableMap_&&this.potentialVariableMap_.clear()}finally{this.isClearing=!1}}renameVariableById(a,b){this.variableMap_.renameVariableById(a,b)}createVariable(a,b,c){return this.variableMap_.createVariable(a,b,c)}getVariableUsesById(a){return this.variableMap_.getVariableUsesById(a)}deleteVariableById(a){this.variableMap_.deleteVariableById(a)}getVariable(a,
1067
- b){return this.variableMap_.getVariable(a,b)}getVariableById(a){return this.variableMap_.getVariableById(a)}getVariablesOfType(a){return this.variableMap_.getVariablesOfType(a)}getVariableTypes(){return this.variableMap_.getVariableTypes(this)}getAllVariables(){return this.variableMap_.getAllVariables()}getAllVariableNames(){return this.variableMap_.getAllVariableNames()}getWidth(){return 0}newBlock(a,b){throw Error("The implementation of newBlock should be monkey-patched in by blockly.ts");}remainingCapacity(){return isNaN(this.options.maxBlocks)?
1068
- Infinity:this.options.maxBlocks-this.getAllBlocks(!1).length}remainingCapacityOfType(a){return this.options.maxInstances?(void 0!==this.options.maxInstances[a]?this.options.maxInstances[a]:Infinity)-this.getBlocksByType(a,!1).length:Infinity}isCapacityAvailable(a){if(!this.hasBlockLimits())return!0;let b=0;for(const c in a){if(a[c]>this.remainingCapacityOfType(c))return!1;b+=a[c]}return b>this.remainingCapacity()?!1:!0}hasBlockLimits(){return Infinity!==this.options.maxBlocks||!!this.options.maxInstances}getUndoStack(){return this.undoStack_}getRedoStack(){return this.redoStack_}undo(a){var b=
1069
- a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_;const d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group===b[b.length-1].group;)e.push(b.pop());for(b=0;b<e.length;b++)c.push(e[b]);e=filter$$module$build$src$core$events$utils(e,a);setRecordUndo$$module$build$src$core$events$utils(!1);try{for(c=0;c<e.length;c++)e[c].run(a)}finally{setRecordUndo$$module$build$src$core$events$utils(!0)}}}clearUndo(){this.undoStack_.length=0;this.redoStack_.length=0;clearPendingUndo$$module$build$src$core$events$utils()}addChangeListener(a){this.listeners_.push(a);
1070
- return a}removeChangeListener(a){removeElem$$module$build$src$core$utils$array(this.listeners_,a)}fireChangeListener(a){if(a.recordUndo)for(this.undoStack_.push(a),this.redoStack_.length=0;this.undoStack_.length>this.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();for(let b=0;b<this.listeners_.length;b++)(0,this.listeners_[b])(a)}getBlockById(a){return this.blockDB.get(a)||null}setBlockById(a,b){this.blockDB.set(a,b)}removeBlockById(a){this.blockDB.delete(a)}getCommentById(a){let b;return null!=
1071
- (b=this.commentDB.get(a))?b:null}allInputsFilled(a){const b=this.getTopBlocks(!1);for(let c=0;c<b.length;c++)if(!b[c].allInputsFilled(a))return!1;return!0}getPotentialVariableMap(){return this.potentialVariableMap_}createPotentialVariableMap(){this.potentialVariableMap_=new VariableMap$$module$build$src$core$variable_map(this)}getVariableMap(){return this.variableMap_}setVariableMap(a){this.variableMap_=a}static getById(a){return getWorkspaceById$$module$build$src$core$common(a)}static getAll(){return getAllWorkspaces$$module$build$src$core$common()}};
1072
- Workspace$$module$build$src$core$workspace.SCAN_ANGLE=3;var module$build$src$core$workspace={};module$build$src$core$workspace.Workspace=Workspace$$module$build$src$core$workspace;var SOUND_LIMIT$$module$build$src$core$workspace_audio=100,WorkspaceAudio$$module$build$src$core$workspace_audio=class{constructor(a){this.parentWorkspace=a;this.sounds=new Map;this.lastSound_=null}dispose(){this.sounds.clear()}load(a,b){if(a.length){try{var c=new globalThis.Audio}catch(e){return}for(let e=0;e<a.length;e++){const f=a[e],g=f.match(/\.(\w+)$/);if(g&&c.canPlayType("audio/"+g[1])){var d=new globalThis.Audio(f);break}}d&&this.sounds.set(b,d)}}preload(){for(const a of this.sounds.values()){a.volume=
1065
+ a.name)}getVariableUsesById(a){const b=[],c=this.workspace.getAllBlocks(!1);for(let d=0;d<c.length;d++){const e=c[d].getVarModels();if(e)for(let f=0;f<e.length;f++)e[f].getId()===a&&b.push(c[d])}return b}},module$build$src$core$variable_map={};module$build$src$core$variable_map.VariableMap=VariableMap$$module$build$src$core$variable_map;var Workspace$$module$build$src$core$workspace=class{constructor(a){this.isClearing=this.internalIsMutator=this.internalIsFlyout=this.rendered=!1;this.MAX_UNDO=1024;this.connectionDBList=[];this.topBlocks=[];this.topComments=[];this.commentDB=new Map;this.listeners=[];this.undoStack_=[];this.redoStack_=[];this.blockDB=new Map;this.typedBlocksDB=new Map;this.procedureMap=new ObservableProcedureMap$$module$build$src$core$procedures$observable_procedure_map(this);this.potentialVariableMap=null;this.id=
1066
+ genUid$$module$build$src$core$utils$idgenerator();registerWorkspace$$module$build$src$core$common(this);this.options=a||new Options$$module$build$src$core$options({});this.RTL=!!this.options.RTL;this.horizontalLayout=!!this.options.horizontalLayout;this.toolboxPosition=this.options.toolboxPosition;this.connectionChecker=new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.CONNECTION_CHECKER,this.options,!0))(this);this.variableMap=new VariableMap$$module$build$src$core$variable_map(this)}get isFlyout(){return this.internalIsFlyout}get isMutator(){return this.internalIsMutator}dispose(){this.listeners.length=
1067
+ 0;this.clear();unregisterWorkpace$$module$build$src$core$common(this)}sortObjects_(a,b){a=a.getRelativeToSurfaceXY();b=b.getRelativeToSurfaceXY();return a.y+Workspace$$module$build$src$core$workspace.prototype.sortObjects_.offset*a.x-(b.y+Workspace$$module$build$src$core$workspace.prototype.sortObjects_.offset*b.x)}addTopBlock(a){this.topBlocks.push(a)}removeTopBlock(a){if(!removeElem$$module$build$src$core$utils$array(this.topBlocks,a))throw Error("Block not present in workspace's list of top-most blocks.");
1068
+ }getTopBlocks(a){const b=[].concat(this.topBlocks);a&&1<b.length&&(this.sortObjects_.offset=Math.sin(toRadians$$module$build$src$core$utils$math(Workspace$$module$build$src$core$workspace.SCAN_ANGLE)),this.RTL&&(this.sortObjects_.offset*=-1),b.sort(this.sortObjects_));return b}addTypedBlock(a){this.typedBlocksDB.has(a.type)||this.typedBlocksDB.set(a.type,[]);this.typedBlocksDB.get(a.type).push(a)}removeTypedBlock(a){removeElem$$module$build$src$core$utils$array(this.typedBlocksDB.get(a.type),a);this.typedBlocksDB.get(a.type).length||
1069
+ this.typedBlocksDB.delete(a.type)}getBlocksByType(a,b){if(!this.typedBlocksDB.has(a))return[];a=this.typedBlocksDB.get(a).slice(0);b&&a&&1<a.length&&(this.sortObjects_.offset=Math.sin(toRadians$$module$build$src$core$utils$math(Workspace$$module$build$src$core$workspace.SCAN_ANGLE)),this.RTL&&(this.sortObjects_.offset*=-1),a.sort(this.sortObjects_));return a.filter(function(c){return!c.isInsertionMarker()})}addTopComment(a){this.topComments.push(a);this.commentDB.has(a.id)&&console.warn('Overriding an existing comment on this workspace, with id "'+
1070
+ a.id+'"');this.commentDB.set(a.id,a)}removeTopComment(a){if(!removeElem$$module$build$src$core$utils$array(this.topComments,a))throw Error("Comment not present in workspace's list of top-most comments.");this.commentDB.delete(a.id)}getTopComments(a){const b=[].concat(this.topComments);a&&1<b.length&&(this.sortObjects_.offset=Math.sin(toRadians$$module$build$src$core$utils$math(Workspace$$module$build$src$core$workspace.SCAN_ANGLE)),this.RTL&&(this.sortObjects_.offset*=-1),b.sort(this.sortObjects_));
1071
+ return b}getAllBlocks(a){if(a){var b=this.getTopBlocks(!0);a=[];for(let c=0;c<b.length;c++)a.push(...b[c].getDescendants(!0))}else for(a=this.getTopBlocks(!1),b=0;b<a.length;b++)a.push(...a[b].getChildren(!1));return a.filter(function(c){return!c.isInsertionMarker()})}clear(){this.isClearing=!0;try{const a=getGroup$$module$build$src$core$events$utils();for(a||setGroup$$module$build$src$core$events$utils(!0);this.topBlocks.length;)this.topBlocks[0].dispose(!1);for(;this.topComments.length;)this.topComments[this.topComments.length-
1072
+ 1].dispose();a||setGroup$$module$build$src$core$events$utils(!1);this.variableMap.clear();this.potentialVariableMap&&this.potentialVariableMap.clear()}finally{this.isClearing=!1}}renameVariableById(a,b){this.variableMap.renameVariableById(a,b)}createVariable(a,b,c){return this.variableMap.createVariable(a,b,c)}getVariableUsesById(a){return this.variableMap.getVariableUsesById(a)}deleteVariableById(a){this.variableMap.deleteVariableById(a)}getVariable(a,b){return this.variableMap.getVariable(a,b)}getVariableById(a){return this.variableMap.getVariableById(a)}getVariablesOfType(a){return this.variableMap.getVariablesOfType(a)}getVariableTypes(){return this.variableMap.getVariableTypes(this)}getAllVariables(){return this.variableMap.getAllVariables()}getAllVariableNames(){return this.variableMap.getAllVariableNames()}getWidth(){return 0}newBlock(a,
1073
+ b){throw Error("The implementation of newBlock should be monkey-patched in by blockly.ts");}remainingCapacity(){return isNaN(this.options.maxBlocks)?Infinity:this.options.maxBlocks-this.getAllBlocks(!1).length}remainingCapacityOfType(a){return this.options.maxInstances?(void 0!==this.options.maxInstances[a]?this.options.maxInstances[a]:Infinity)-this.getBlocksByType(a,!1).length:Infinity}isCapacityAvailable(a){if(!this.hasBlockLimits())return!0;let b=0;for(const c in a){if(a[c]>this.remainingCapacityOfType(c))return!1;
1074
+ b+=a[c]}return b>this.remainingCapacity()?!1:!0}hasBlockLimits(){return Infinity!==this.options.maxBlocks||!!this.options.maxInstances}getUndoStack(){return this.undoStack_}getRedoStack(){return this.redoStack_}undo(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_;const d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group===b[b.length-1].group;)e.push(b.pop());for(b=0;b<e.length;b++)c.push(e[b]);e=filter$$module$build$src$core$events$utils(e,a);setRecordUndo$$module$build$src$core$events$utils(!1);
1075
+ try{for(c=0;c<e.length;c++)e[c].run(a)}finally{setRecordUndo$$module$build$src$core$events$utils(!0)}}}clearUndo(){this.undoStack_.length=0;this.redoStack_.length=0;clearPendingUndo$$module$build$src$core$events$utils()}addChangeListener(a){this.listeners.push(a);return a}removeChangeListener(a){removeElem$$module$build$src$core$utils$array(this.listeners,a)}fireChangeListener(a){if(a.recordUndo)for(this.undoStack_.push(a),this.redoStack_.length=0;this.undoStack_.length>this.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();
1076
+ for(let b=0;b<this.listeners.length;b++)(0,this.listeners[b])(a)}getBlockById(a){return this.blockDB.get(a)||null}setBlockById(a,b){this.blockDB.set(a,b)}removeBlockById(a){this.blockDB.delete(a)}getCommentById(a){let b;return null!=(b=this.commentDB.get(a))?b:null}allInputsFilled(a){const b=this.getTopBlocks(!1);for(let c=0;c<b.length;c++)if(!b[c].allInputsFilled(a))return!1;return!0}getPotentialVariableMap(){return this.potentialVariableMap}createPotentialVariableMap(){this.potentialVariableMap=
1077
+ new VariableMap$$module$build$src$core$variable_map(this)}getVariableMap(){return this.variableMap}setVariableMap(a){this.variableMap=a}getProcedureMap(){return this.procedureMap}static getById(a){return getWorkspaceById$$module$build$src$core$common(a)}static getAll(){return getAllWorkspaces$$module$build$src$core$common()}};Workspace$$module$build$src$core$workspace.SCAN_ANGLE=3;var module$build$src$core$workspace={};module$build$src$core$workspace.Workspace=Workspace$$module$build$src$core$workspace;var SOUND_LIMIT$$module$build$src$core$workspace_audio=100,WorkspaceAudio$$module$build$src$core$workspace_audio=class{constructor(a){this.parentWorkspace=a;this.sounds=new Map;this.lastSound_=null}dispose(){this.sounds.clear()}load(a,b){if(a.length){try{var c=new globalThis.Audio}catch(e){return}for(let e=0;e<a.length;e++){const f=a[e],g=f.match(/\.(\w+)$/);if(g&&c.canPlayType("audio/"+g[1])){var d=new globalThis.Audio(f);break}}d&&this.sounds.set(b,d)}}preload(){for(const a of this.sounds.values()){a.volume=
1073
1078
  .01;const b=a.play();void 0!==b?b.then(a.pause).catch(function(){}):a.pause();if(IPAD$$module$build$src$core$utils$useragent||IPHONE$$module$build$src$core$utils$useragent)break}}play(a,b){var c=this.sounds.get(a);c?(a=new Date,null!==this.lastSound_&&a.getTime()-this.lastSound_.getTime()<SOUND_LIMIT$$module$build$src$core$workspace_audio||(this.lastSound_=a,c=IPAD$$module$build$src$core$utils$useragent||ANDROID$$module$build$src$core$utils$useragent?c:c.cloneNode(),c.volume=void 0===b?1:b,c.play())):
1074
- this.parentWorkspace&&this.parentWorkspace.getAudioManager().play(a,b)}},module$build$src$core$workspace_audio={};module$build$src$core$workspace_audio.WorkspaceAudio=WorkspaceAudio$$module$build$src$core$workspace_audio;var ZoomControls$$module$build$src$core$zoom_controls=class{constructor(a){this.workspace=a;this.id="zoomControls";this.zoomResetGroup=this.zoomOutGroup=this.zoomInGroup=this.onZoomOutWrapper_=this.onZoomInWrapper_=this.onZoomResetWrapper_=null;this.HEIGHT_=this.WIDTH_=32;this.SMALL_SPACING_=2;this.LARGE_SPACING_=11;this.MARGIN_HORIZONTAL_=this.MARGIN_VERTICAL_=20;this.svgGroup=null;this.top_=this.left_=0;this.initialized_=!1}createDom(){this.svgGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,
1075
- {});const a=String(Math.random()).substring(2);this.createZoomOutSvg_(a);this.createZoomInSvg_(a);this.workspace.isMovable()&&this.createZoomResetSvg_(a);return this.svgGroup}init(){this.workspace.getComponentManager().addComponent({component:this,weight:2,capabilities:[ComponentManager$$module$build$src$core$component_manager.Capability.POSITIONABLE]});this.initialized_=!0}dispose(){this.workspace.getComponentManager().removeComponent("zoomControls");this.svgGroup&&removeNode$$module$build$src$core$utils$dom(this.svgGroup);
1076
- this.onZoomResetWrapper_&&unbind$$module$build$src$core$browser_events(this.onZoomResetWrapper_);this.onZoomInWrapper_&&unbind$$module$build$src$core$browser_events(this.onZoomInWrapper_);this.onZoomOutWrapper_&&unbind$$module$build$src$core$browser_events(this.onZoomOutWrapper_)}getBoundingRectangle(){let a=this.SMALL_SPACING_+2*this.HEIGHT_;this.zoomResetGroup&&(a+=this.LARGE_SPACING_+this.HEIGHT_);return new Rect$$module$build$src$core$utils$rect(this.top_,this.top_+a,this.left_,this.left_+this.WIDTH_)}position(a,
1077
- b){if(this.initialized_){var c=getCornerOppositeToolbox$$module$build$src$core$positionable_helpers(this.workspace,a),d=this.SMALL_SPACING_+2*this.HEIGHT_;this.zoomResetGroup&&(d+=this.LARGE_SPACING_+this.HEIGHT_);a=getStartPositionRect$$module$build$src$core$positionable_helpers(c,new Size$$module$build$src$core$utils$size(this.WIDTH_,d),this.MARGIN_HORIZONTAL_,this.MARGIN_VERTICAL_,a,this.workspace);c=c.vertical;b=bumpPositionRect$$module$build$src$core$positionable_helpers(a,this.MARGIN_VERTICAL_,
1078
- c===verticalPosition$$module$build$src$core$positionable_helpers.TOP?bumpDirection$$module$build$src$core$positionable_helpers.DOWN:bumpDirection$$module$build$src$core$positionable_helpers.UP,b);if(c===verticalPosition$$module$build$src$core$positionable_helpers.TOP){var e=this.SMALL_SPACING_+this.HEIGHT_,f;null==(f=this.zoomInGroup)||f.setAttribute("transform","translate(0, "+e+")");this.zoomResetGroup&&this.zoomResetGroup.setAttribute("transform","translate(0, "+(e+this.LARGE_SPACING_+this.HEIGHT_)+
1079
- ")")}else{f=this.zoomResetGroup?this.LARGE_SPACING_+this.HEIGHT_:0;let h;null==(h=this.zoomInGroup)||h.setAttribute("transform","translate(0, "+f+")");f=f+this.SMALL_SPACING_+this.HEIGHT_;null==(e=this.zoomOutGroup)||e.setAttribute("transform","translate(0, "+f+")")}this.top_=b.top;this.left_=b.left;var g;null==(g=this.svgGroup)||g.setAttribute("transform","translate("+this.left_+","+this.top_+")")}}createZoomOutSvg_(a){this.zoomOutGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,
1080
- {"class":"blocklyZoom"},this.svgGroup);const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CLIPPATH,{id:"blocklyZoomoutClipPath"+a},this.zoomOutGroup);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{width:32,height:32},b);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{width:SPRITE$$module$build$src$core$sprites.width,height:SPRITE$$module$build$src$core$sprites.height,
1081
- x:-64,y:-92,"clip-path":"url(#blocklyZoomoutClipPath"+a+")"},this.zoomOutGroup).setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",this.workspace.options.pathToMedia+SPRITE$$module$build$src$core$sprites.url);this.onZoomOutWrapper_=conditionalBind$$module$build$src$core$browser_events(this.zoomOutGroup,"mousedown",null,this.zoom_.bind(this,-1))}createZoomInSvg_(a){this.zoomInGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyZoom"},
1082
- this.svgGroup);const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CLIPPATH,{id:"blocklyZoominClipPath"+a},this.zoomInGroup);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{width:32,height:32},b);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{width:SPRITE$$module$build$src$core$sprites.width,height:SPRITE$$module$build$src$core$sprites.height,x:-32,y:-92,"clip-path":"url(#blocklyZoominClipPath"+
1083
- a+")"},this.zoomInGroup).setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",this.workspace.options.pathToMedia+SPRITE$$module$build$src$core$sprites.url);this.onZoomInWrapper_=conditionalBind$$module$build$src$core$browser_events(this.zoomInGroup,"mousedown",null,this.zoom_.bind(this,1))}zoom_(a,b){this.workspace.markFocused();this.workspace.zoomCenter(a);this.fireZoomEvent_();clearTouchIdentifier$$module$build$src$core$touch();b.stopPropagation();b.preventDefault()}createZoomResetSvg_(a){this.zoomResetGroup=
1084
- createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyZoom"},this.svgGroup);const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CLIPPATH,{id:"blocklyZoomresetClipPath"+a},this.zoomResetGroup);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{width:32,height:32},b);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{width:SPRITE$$module$build$src$core$sprites.width,
1085
- height:SPRITE$$module$build$src$core$sprites.height,y:-92,"clip-path":"url(#blocklyZoomresetClipPath"+a+")"},this.zoomResetGroup).setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",this.workspace.options.pathToMedia+SPRITE$$module$build$src$core$sprites.url);this.onZoomResetWrapper_=conditionalBind$$module$build$src$core$browser_events(this.zoomResetGroup,"mousedown",null,this.resetZoom_.bind(this))}resetZoom_(a){this.workspace.markFocused();const b=Math.log(this.workspace.options.zoomOptions.startScale/
1086
- this.workspace.scale)/Math.log(this.workspace.options.zoomOptions.scaleSpeed);this.workspace.beginCanvasTransition();this.workspace.zoomCenter(b);this.workspace.scrollCenter();setTimeout(this.workspace.endCanvasTransition.bind(this.workspace),500);this.fireZoomEvent_();clearTouchIdentifier$$module$build$src$core$touch();a.stopPropagation();a.preventDefault()}fireZoomEvent_(){const a=new (get$$module$build$src$core$events$utils(CLICK$$module$build$src$core$events$utils))(null,this.workspace.id,"zoom_controls");
1087
- fire$$module$build$src$core$events$utils(a)}};register$$module$build$src$core$css("\n.blocklyZoom>image, .blocklyZoom>svg>image {\n opacity: .4;\n}\n\n.blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {\n opacity: .6;\n}\n\n.blocklyZoom>image:active, .blocklyZoom>svg>image:active {\n opacity: .8;\n}\n");var module$build$src$core$zoom_controls={};module$build$src$core$zoom_controls.ZoomControls=ZoomControls$$module$build$src$core$zoom_controls;var ZOOM_TO_FIT_MARGIN$$module$build$src$core$workspace_svg=20,WorkspaceSvg$$module$build$src$core$workspace_svg=class extends Workspace$$module$build$src$core$workspace{constructor(a,b,c){super(a);this.resizeHandlerWrapper_=null;this.resizesEnabled_=this.isVisible_=this.rendered=!0;this.startScrollY=this.startScrollX=this.scrollY=this.scrollX=0;this.dragDeltaXY_=null;this.oldScale_=this.scale=1;this.oldLeft_=this.oldTop_=0;this.workspaceDragSurface_=this.blockDragSurface_=this.currentGesture_=this.toolbox_=
1088
- this.flyout_=this.scrollbar=this.trashcan=null;this.isDragSurfaceActive_=!1;this.inverseScreenCTM_=this.targetWorkspace=this.configureContextMenu=this.lastRecordedPageScroll_=this.injectionDiv_=null;this.inverseScreenCTMDirty_=!0;this.highlightedBlocks_=[];this.toolboxCategoryCallbacks=new Map;this.flyoutButtonCallbacks=new Map;this.cachedParentSvg_=null;this.keyboardAccessibilityMode=!1;this.topBoundedElements_=[];this.dragTargetAreas_=[];this.zoomControls_=null;this.metricsManager_=new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.METRICS_MANAGER,
1089
- a,!0))(this);this.getMetrics=a.getMetrics||this.metricsManager_.getMetrics.bind(this.metricsManager_);this.setMetrics=a.setMetrics||WorkspaceSvg$$module$build$src$core$workspace_svg.setTopLevelWorkspaceMetrics_;this.componentManager_=new ComponentManager$$module$build$src$core$component_manager;this.connectionDBList=ConnectionDB$$module$build$src$core$connection_db.init(this.connectionChecker);b&&(this.blockDragSurface_=b);c&&(this.workspaceDragSurface_=c);this.useWorkspaceDragSurface_=!!this.workspaceDragSurface_;
1090
- this.audioManager_=new WorkspaceAudio$$module$build$src$core$workspace_audio(a.parentWorkspace);this.grid_=this.options.gridPattern?new Grid$$module$build$src$core$grid(this.options.gridPattern,a.gridOptions):null;this.markerManager_=new MarkerManager$$module$build$src$core$marker_manager(this);$.module$build$src$core$variables&&flyoutCategory$$module$build$src$core$variables&&this.registerToolboxCategoryCallback(CATEGORY_NAME$$module$build$src$core$variables,flyoutCategory$$module$build$src$core$variables);
1079
+ this.parentWorkspace&&this.parentWorkspace.getAudioManager().play(a,b)}},module$build$src$core$workspace_audio={};module$build$src$core$workspace_audio.WorkspaceAudio=WorkspaceAudio$$module$build$src$core$workspace_audio;var ZoomControls$$module$build$src$core$zoom_controls=class{constructor(a){this.workspace=a;this.id="zoomControls";this.zoomResetGroup=this.zoomOutGroup=this.zoomInGroup=this.onZoomOutWrapper=this.onZoomInWrapper=this.onZoomResetWrapper=null;this.HEIGHT=this.WIDTH=32;this.SMALL_SPACING=2;this.LARGE_SPACING=11;this.MARGIN_HORIZONTAL=this.MARGIN_VERTICAL=20;this.svgGroup=null;this.top=this.left=0;this.initialized=!1}createDom(){this.svgGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,
1080
+ {});const a=String(Math.random()).substring(2);this.createZoomOutSvg(a);this.createZoomInSvg(a);this.workspace.isMovable()&&this.createZoomResetSvg(a);return this.svgGroup}init(){this.workspace.getComponentManager().addComponent({component:this,weight:2,capabilities:[ComponentManager$$module$build$src$core$component_manager.Capability.POSITIONABLE]});this.initialized=!0}dispose(){this.workspace.getComponentManager().removeComponent("zoomControls");this.svgGroup&&removeNode$$module$build$src$core$utils$dom(this.svgGroup);
1081
+ this.onZoomResetWrapper&&unbind$$module$build$src$core$browser_events(this.onZoomResetWrapper);this.onZoomInWrapper&&unbind$$module$build$src$core$browser_events(this.onZoomInWrapper);this.onZoomOutWrapper&&unbind$$module$build$src$core$browser_events(this.onZoomOutWrapper)}getBoundingRectangle(){let a=this.SMALL_SPACING+2*this.HEIGHT;this.zoomResetGroup&&(a+=this.LARGE_SPACING+this.HEIGHT);return new Rect$$module$build$src$core$utils$rect(this.top,this.top+a,this.left,this.left+this.WIDTH)}position(a,
1082
+ b){if(this.initialized){var c=getCornerOppositeToolbox$$module$build$src$core$positionable_helpers(this.workspace,a),d=this.SMALL_SPACING+2*this.HEIGHT;this.zoomResetGroup&&(d+=this.LARGE_SPACING+this.HEIGHT);a=getStartPositionRect$$module$build$src$core$positionable_helpers(c,new Size$$module$build$src$core$utils$size(this.WIDTH,d),this.MARGIN_HORIZONTAL,this.MARGIN_VERTICAL,a,this.workspace);c=c.vertical;b=bumpPositionRect$$module$build$src$core$positionable_helpers(a,this.MARGIN_VERTICAL,c===verticalPosition$$module$build$src$core$positionable_helpers.TOP?
1083
+ bumpDirection$$module$build$src$core$positionable_helpers.DOWN:bumpDirection$$module$build$src$core$positionable_helpers.UP,b);if(c===verticalPosition$$module$build$src$core$positionable_helpers.TOP){var e=this.SMALL_SPACING+this.HEIGHT,f;null==(f=this.zoomInGroup)||f.setAttribute("transform","translate(0, "+e+")");this.zoomResetGroup&&this.zoomResetGroup.setAttribute("transform","translate(0, "+(e+this.LARGE_SPACING+this.HEIGHT)+")")}else{f=this.zoomResetGroup?this.LARGE_SPACING+this.HEIGHT:0;let h;
1084
+ null==(h=this.zoomInGroup)||h.setAttribute("transform","translate(0, "+f+")");f=f+this.SMALL_SPACING+this.HEIGHT;null==(e=this.zoomOutGroup)||e.setAttribute("transform","translate(0, "+f+")")}this.top=b.top;this.left=b.left;var g;null==(g=this.svgGroup)||g.setAttribute("transform","translate("+this.left+","+this.top+")")}}createZoomOutSvg(a){this.zoomOutGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyZoom"},this.svgGroup);const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CLIPPATH,
1085
+ {id:"blocklyZoomoutClipPath"+a},this.zoomOutGroup);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{width:32,height:32},b);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{width:SPRITE$$module$build$src$core$sprites.width,height:SPRITE$$module$build$src$core$sprites.height,x:-64,y:-92,"clip-path":"url(#blocklyZoomoutClipPath"+a+")"},this.zoomOutGroup).setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",
1086
+ this.workspace.options.pathToMedia+SPRITE$$module$build$src$core$sprites.url);this.onZoomOutWrapper=conditionalBind$$module$build$src$core$browser_events(this.zoomOutGroup,"mousedown",null,this.zoom.bind(this,-1))}createZoomInSvg(a){this.zoomInGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyZoom"},this.svgGroup);const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CLIPPATH,{id:"blocklyZoominClipPath"+
1087
+ a},this.zoomInGroup);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{width:32,height:32},b);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{width:SPRITE$$module$build$src$core$sprites.width,height:SPRITE$$module$build$src$core$sprites.height,x:-32,y:-92,"clip-path":"url(#blocklyZoominClipPath"+a+")"},this.zoomInGroup).setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",this.workspace.options.pathToMedia+
1088
+ SPRITE$$module$build$src$core$sprites.url);this.onZoomInWrapper=conditionalBind$$module$build$src$core$browser_events(this.zoomInGroup,"mousedown",null,this.zoom.bind(this,1))}zoom(a,b){this.workspace.markFocused();this.workspace.zoomCenter(a);this.fireZoomEvent();clearTouchIdentifier$$module$build$src$core$touch();b.stopPropagation();b.preventDefault()}createZoomResetSvg(a){this.zoomResetGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyZoom"},
1089
+ this.svgGroup);const b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CLIPPATH,{id:"blocklyZoomresetClipPath"+a},this.zoomResetGroup);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{width:32,height:32},b);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.IMAGE,{width:SPRITE$$module$build$src$core$sprites.width,height:SPRITE$$module$build$src$core$sprites.height,y:-92,"clip-path":"url(#blocklyZoomresetClipPath"+
1090
+ a+")"},this.zoomResetGroup).setAttributeNS(XLINK_NS$$module$build$src$core$utils$dom,"xlink:href",this.workspace.options.pathToMedia+SPRITE$$module$build$src$core$sprites.url);this.onZoomResetWrapper=conditionalBind$$module$build$src$core$browser_events(this.zoomResetGroup,"mousedown",null,this.resetZoom.bind(this))}resetZoom(a){this.workspace.markFocused();const b=Math.log(this.workspace.options.zoomOptions.startScale/this.workspace.scale)/Math.log(this.workspace.options.zoomOptions.scaleSpeed);
1091
+ this.workspace.beginCanvasTransition();this.workspace.zoomCenter(b);this.workspace.scrollCenter();setTimeout(this.workspace.endCanvasTransition.bind(this.workspace),500);this.fireZoomEvent();clearTouchIdentifier$$module$build$src$core$touch();a.stopPropagation();a.preventDefault()}fireZoomEvent(){const a=new (get$$module$build$src$core$events$utils(CLICK$$module$build$src$core$events$utils))(null,this.workspace.id,"zoom_controls");fire$$module$build$src$core$events$utils(a)}};register$$module$build$src$core$css("\n.blocklyZoom>image, .blocklyZoom>svg>image {\n opacity: .4;\n}\n\n.blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {\n opacity: .6;\n}\n\n.blocklyZoom>image:active, .blocklyZoom>svg>image:active {\n opacity: .8;\n}\n");
1092
+ var module$build$src$core$zoom_controls={};module$build$src$core$zoom_controls.ZoomControls=ZoomControls$$module$build$src$core$zoom_controls;var ZOOM_TO_FIT_MARGIN$$module$build$src$core$workspace_svg=20,WorkspaceSvg$$module$build$src$core$workspace_svg=class extends Workspace$$module$build$src$core$workspace{constructor(a,b,c){super(a);this.resizeHandlerWrapper=null;this.resizesEnabled=this.isVisible_=this.rendered=!0;this.startScrollY=this.startScrollX=this.scrollY=this.scrollX=0;this.dragDeltaXY=null;this.oldScale=this.scale=1;this.oldLeft=this.oldTop=0;this.workspaceDragSurface=this.blockDragSurface=this.currentGesture_=this.toolbox_=
1093
+ this.flyout=this.scrollbar=this.trashcan=null;this.isDragSurfaceActive=!1;this.inverseScreenCTM=this.targetWorkspace=this.configureContextMenu=this.lastRecordedPageScroll=this.injectionDiv=null;this.inverseScreenCTMDirty=!0;this.highlightedBlocks=[];this.toolboxCategoryCallbacks=new Map;this.flyoutButtonCallbacks=new Map;this.cachedParentSvg=null;this.keyboardAccessibilityMode=!1;this.topBoundedElements=[];this.dragTargetAreas=[];this.zoomControls_=null;this.metricsManager=new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.METRICS_MANAGER,
1094
+ a,!0))(this);this.getMetrics=a.getMetrics||this.metricsManager.getMetrics.bind(this.metricsManager);this.setMetrics=a.setMetrics||WorkspaceSvg$$module$build$src$core$workspace_svg.setTopLevelWorkspaceMetrics_;this.componentManager=new ComponentManager$$module$build$src$core$component_manager;this.connectionDBList=ConnectionDB$$module$build$src$core$connection_db.init(this.connectionChecker);b&&(this.blockDragSurface=b);c&&(this.workspaceDragSurface=c);this.useWorkspaceDragSurface=!!this.workspaceDragSurface;
1095
+ this.audioManager=new WorkspaceAudio$$module$build$src$core$workspace_audio(a.parentWorkspace);this.grid=this.options.gridPattern?new Grid$$module$build$src$core$grid(this.options.gridPattern,a.gridOptions):null;this.markerManager=new MarkerManager$$module$build$src$core$marker_manager(this);$.module$build$src$core$variables&&flyoutCategory$$module$build$src$core$variables&&this.registerToolboxCategoryCallback(CATEGORY_NAME$$module$build$src$core$variables,flyoutCategory$$module$build$src$core$variables);
1091
1096
  module$build$src$core$variables_dynamic&&flyoutCategory$$module$build$src$core$variables_dynamic&&this.registerToolboxCategoryCallback(CATEGORY_NAME$$module$build$src$core$variables_dynamic,flyoutCategory$$module$build$src$core$variables_dynamic);$.module$build$src$core$procedures&&flyoutCategory$$module$build$src$core$procedures&&(this.registerToolboxCategoryCallback(CATEGORY_NAME$$module$build$src$core$procedures,flyoutCategory$$module$build$src$core$procedures),this.addChangeListener(mutatorOpenListener$$module$build$src$core$procedures));
1092
- this.themeManager_=this.options.parentWorkspace?this.options.parentWorkspace.getThemeManager():new ThemeManager$$module$build$src$core$theme_manager(this,this.options.theme||Classic$$module$build$src$core$theme$classic);this.themeManager_.subscribeWorkspace(this);let d;this.renderer_=init$$module$build$src$core$renderers$common$block_rendering(this.options.renderer||"geras",this.getTheme(),null!=(d=this.options.rendererOverrides)?d:void 0);this.cachedParentSvgSize_=new Size$$module$build$src$core$utils$size(0,
1093
- 0)}getMarkerManager(){return this.markerManager_}getMetricsManager(){return this.metricsManager_}setMetricsManager(a){this.metricsManager_=a;this.getMetrics=this.metricsManager_.getMetrics.bind(this.metricsManager_)}getComponentManager(){return this.componentManager_}setCursorSvg(a){this.markerManager_.setCursorSvg(a)}setMarkerSvg(a){this.markerManager_.setMarkerSvg(a)}getMarker(a){return this.markerManager_?this.markerManager_.getMarker(a):null}getCursor(){return this.markerManager_?this.markerManager_.getCursor():
1094
- null}getRenderer(){return this.renderer_}getThemeManager(){return this.themeManager_}getTheme(){return this.themeManager_.getTheme()}setTheme(a){a||(a=Classic$$module$build$src$core$theme$classic);this.themeManager_.setTheme(a)}refreshTheme(){this.svgGroup_&&this.renderer_.refreshDom(this.svgGroup_,this.getTheme());this.updateBlockStyles_(this.getAllBlocks(!1).filter(function(b){return!!b.getStyleName()}));this.refreshToolboxSelection();this.toolbox_&&this.toolbox_.refreshTheme();this.isVisible()&&
1095
- this.setVisible(!0);const a=new (get$$module$build$src$core$events$utils(THEME_CHANGE$$module$build$src$core$events$utils))(this.getTheme().name,this.id);fire$$module$build$src$core$events$utils(a)}updateBlockStyles_(a){for(let b=0,c;c=a[b];b++){const d=c.getStyleName();if(d){const e=c;e.setStyle(d);e.mutator&&e.mutator.updateBlockStyle()}}}getInverseScreenCTM(){if(this.inverseScreenCTMDirty_){const a=this.getParentSvg().getScreenCTM();a&&(this.inverseScreenCTM_=a.inverse(),this.inverseScreenCTMDirty_=
1096
- !1)}return this.inverseScreenCTM_}updateInverseScreenCTM(){this.inverseScreenCTMDirty_=!0}isVisible(){return this.isVisible_}getSvgXY(a){let b=0,c=0,d=1;if(containsNode$$module$build$src$core$utils$dom(this.getCanvas(),a)||containsNode$$module$build$src$core$utils$dom(this.getBubbleCanvas(),a))d=this.scale;do{const e=getRelativeXY$$module$build$src$core$utils$svg_math(a);if(a===this.getCanvas()||a===this.getBubbleCanvas())d=1;b+=e.x*d;c+=e.y*d;a=a.parentNode}while(a&&a!==this.getParentSvg());return new Coordinate$$module$build$src$core$utils$coordinate(b,
1097
- c)}getCachedParentSvgSize(){const a=this.cachedParentSvgSize_;return new Size$$module$build$src$core$utils$size(a.width,a.height)}getOriginOffsetInPixels(){return getInjectionDivXY$$module$build$src$core$utils$svg_math(this.getCanvas())}getInjectionDiv(){if(!this.injectionDiv_){let a=this.svgGroup_;for(;a;){if(-1!==(" "+(a.getAttribute("class")||"")+" ").indexOf(" injectionDiv ")){this.injectionDiv_=a;break}a=a.parentNode}}return this.injectionDiv_}getBlockCanvas(){return this.svgBlockCanvas_}setResizeHandlerWrapper(a){this.resizeHandlerWrapper_=
1098
- a}createDom(a){this.svgGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyWorkspace"});a&&(this.svgBackground_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{height:"100%",width:"100%","class":a},this.svgGroup_),"blocklyMainBackground"===a&&this.grid_?this.svgBackground_.style.fill="url(#"+this.grid_.getPatternId()+")":this.themeManager_.subscribe(this.svgBackground_,"workspaceBackgroundColour",
1097
+ this.themeManager_=this.options.parentWorkspace?this.options.parentWorkspace.getThemeManager():new ThemeManager$$module$build$src$core$theme_manager(this,this.options.theme||Classic$$module$build$src$core$theme$classic);this.themeManager_.subscribeWorkspace(this);let d;this.renderer=init$$module$build$src$core$renderers$common$block_rendering(this.options.renderer||"geras",this.getTheme(),null!=(d=this.options.rendererOverrides)?d:void 0);this.cachedParentSvgSize=new Size$$module$build$src$core$utils$size(0,
1098
+ 0)}getMarkerManager(){return this.markerManager}getMetricsManager(){return this.metricsManager}setMetricsManager(a){this.metricsManager=a;this.getMetrics=this.metricsManager.getMetrics.bind(this.metricsManager)}getComponentManager(){return this.componentManager}setCursorSvg(a){this.markerManager.setCursorSvg(a)}setMarkerSvg(a){this.markerManager.setMarkerSvg(a)}getMarker(a){return this.markerManager?this.markerManager.getMarker(a):null}getCursor(){return this.markerManager?this.markerManager.getCursor():
1099
+ null}getRenderer(){return this.renderer}getThemeManager(){return this.themeManager_}getTheme(){return this.themeManager_.getTheme()}setTheme(a){a||(a=Classic$$module$build$src$core$theme$classic);this.themeManager_.setTheme(a)}refreshTheme(){this.svgGroup_&&this.renderer.refreshDom(this.svgGroup_,this.getTheme());this.updateBlockStyles_(this.getAllBlocks(!1).filter(function(b){return!!b.getStyleName()}));this.refreshToolboxSelection();this.toolbox_&&this.toolbox_.refreshTheme();this.isVisible()&&
1100
+ this.setVisible(!0);const a=new (get$$module$build$src$core$events$utils(THEME_CHANGE$$module$build$src$core$events$utils))(this.getTheme().name,this.id);fire$$module$build$src$core$events$utils(a)}updateBlockStyles_(a){for(let b=0,c;c=a[b];b++){const d=c.getStyleName();if(d){const e=c;e.setStyle(d);e.mutator&&e.mutator.updateBlockStyle()}}}getInverseScreenCTM(){if(this.inverseScreenCTMDirty){const a=this.getParentSvg().getScreenCTM();a&&(this.inverseScreenCTM=a.inverse(),this.inverseScreenCTMDirty=
1101
+ !1)}return this.inverseScreenCTM}updateInverseScreenCTM(){this.inverseScreenCTMDirty=!0}isVisible(){return this.isVisible_}getSvgXY(a){let b=0,c=0,d=1;if(containsNode$$module$build$src$core$utils$dom(this.getCanvas(),a)||containsNode$$module$build$src$core$utils$dom(this.getBubbleCanvas(),a))d=this.scale;do{const e=getRelativeXY$$module$build$src$core$utils$svg_math(a);if(a===this.getCanvas()||a===this.getBubbleCanvas())d=1;b+=e.x*d;c+=e.y*d;a=a.parentNode}while(a&&a!==this.getParentSvg());return new Coordinate$$module$build$src$core$utils$coordinate(b,
1102
+ c)}getCachedParentSvgSize(){const a=this.cachedParentSvgSize;return new Size$$module$build$src$core$utils$size(a.width,a.height)}getOriginOffsetInPixels(){return getInjectionDivXY$$module$build$src$core$utils$svg_math(this.getCanvas())}getInjectionDiv(){if(!this.injectionDiv){let a=this.svgGroup_;for(;a;){if(-1!==(" "+(a.getAttribute("class")||"")+" ").indexOf(" injectionDiv ")){this.injectionDiv=a;break}a=a.parentNode}}return this.injectionDiv}getBlockCanvas(){return this.svgBlockCanvas_}setResizeHandlerWrapper(a){this.resizeHandlerWrapper=
1103
+ a}createDom(a){this.svgGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyWorkspace"});a&&(this.svgBackground_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{height:"100%",width:"100%","class":a},this.svgGroup_),"blocklyMainBackground"===a&&this.grid?this.svgBackground_.style.fill="url(#"+this.grid.getPatternId()+")":this.themeManager_.subscribe(this.svgBackground_,"workspaceBackgroundColour",
1099
1104
  "fill"));this.svgBlockCanvas_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyBlockCanvas"},this.svgGroup_);this.svgBubbleCanvas_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":"blocklyBubbleCanvas"},this.svgGroup_);this.isFlyout||(conditionalBind$$module$build$src$core$browser_events(this.svgGroup_,"mousedown",this,this.onMouseDown_,!1,!0),document.body.addEventListener("wheel",function(){}),
1100
- conditionalBind$$module$build$src$core$browser_events(this.svgGroup_,"wheel",this,this.onMouseWheel_));this.options.hasCategories&&(this.toolbox_=new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.TOOLBOX,this.options,!0))(this));this.grid_&&this.grid_.update(this.scale);this.recordDragTargets();(a=getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.CURSOR,this.options))&&this.markerManager_.setCursor(new a);this.renderer_.createDom(this.svgGroup_,
1101
- this.getTheme());return this.svgGroup_}dispose(){this.rendered=!1;this.currentGesture_&&this.currentGesture_.cancel();this.svgGroup_&&removeNode$$module$build$src$core$utils$dom(this.svgGroup_);this.toolbox_&&(this.toolbox_.dispose(),this.toolbox_=null);this.flyout_&&(this.flyout_.dispose(),this.flyout_=null);this.trashcan&&(this.trashcan.dispose(),this.trashcan=null);this.scrollbar&&(this.scrollbar.dispose(),this.scrollbar=null);this.zoomControls_&&this.zoomControls_.dispose();this.audioManager_&&
1102
- this.audioManager_.dispose();this.grid_&&(this.grid_=null);this.renderer_.dispose();this.markerManager_&&this.markerManager_.dispose();super.dispose();this.themeManager_&&(this.themeManager_.unsubscribeWorkspace(this),this.themeManager_.unsubscribe(this.svgBackground_),this.options.parentWorkspace||this.themeManager_.dispose());this.connectionDBList.length=0;this.toolboxCategoryCallbacks.clear();this.flyoutButtonCallbacks.clear();if(!this.options.parentWorkspace){const a=this.getParentSvg();a&&a.parentNode&&
1103
- removeNode$$module$build$src$core$utils$dom(a.parentNode)}this.resizeHandlerWrapper_&&(unbind$$module$build$src$core$browser_events(this.resizeHandlerWrapper_),this.resizeHandlerWrapper_=null)}addTrashcan(){this.trashcan=WorkspaceSvg$$module$build$src$core$workspace_svg.newTrashcan(this);const a=this.trashcan.createDom();this.svgGroup_.insertBefore(a,this.svgBlockCanvas_)}static newTrashcan(a){throw Error("The implementation of newTrashcan should be monkey-patched in by blockly.ts");}addZoomControls(){this.zoomControls_=
1104
- new ZoomControls$$module$build$src$core$zoom_controls(this);const a=this.zoomControls_.createDom();this.svgGroup_.appendChild(a)}addFlyout(a){const b=new Options$$module$build$src$core$options({parentWorkspace:this,rtl:this.RTL,oneBasedIndex:this.options.oneBasedIndex,horizontalLayout:this.horizontalLayout,renderer:this.options.renderer,rendererOverrides:this.options.rendererOverrides,move:{scrollbars:!0}});b.toolboxPosition=this.options.toolboxPosition;this.flyout_=this.horizontalLayout?new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.FLYOUTS_HORIZONTAL_TOOLBOX,
1105
- this.options,!0))(b):new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.FLYOUTS_VERTICAL_TOOLBOX,this.options,!0))(b);this.flyout_.autoClose=!1;this.flyout_.getWorkspace().setVisible(!0);return this.flyout_.createDom(a)}getFlyout(a){return this.flyout_||a?this.flyout_:this.toolbox_?this.toolbox_.getFlyout():null}getToolbox(){return this.toolbox_}updateScreenCalculations_(){this.updateInverseScreenCTM();this.recordDragTargets()}resizeContents(){this.resizesEnabled_&&
1106
- this.rendered&&(this.scrollbar&&this.scrollbar.resize(),this.updateInverseScreenCTM())}resize(){this.toolbox_&&this.toolbox_.position();this.flyout_&&this.flyout_.position();const a=this.componentManager_.getComponents(ComponentManager$$module$build$src$core$component_manager.Capability.POSITIONABLE,!0),b=this.getMetricsManager().getUiMetrics(),c=[];for(let d=0,e;e=a[d];d++){e.position(b,c);const f=e.getBoundingRectangle();f&&c.push(f)}this.scrollbar&&this.scrollbar.resize();this.updateScreenCalculations_()}updateScreenCalculationsIfScrolled(){const a=
1107
- getDocumentScroll$$module$build$src$core$utils$svg_math();Coordinate$$module$build$src$core$utils$coordinate.equals(this.lastRecordedPageScroll_,a)||(this.lastRecordedPageScroll_=a,this.updateScreenCalculations_())}getCanvas(){return this.svgBlockCanvas_}setCachedParentSvgSize(a,b){const c=this.getParentSvg();null!=a&&(this.cachedParentSvgSize_.width=a,c.setAttribute("data-cached-width",a.toString()));null!=b&&(this.cachedParentSvgSize_.height=b,c.setAttribute("data-cached-height",b.toString()))}getBubbleCanvas(){return this.svgBubbleCanvas_}getParentSvg(){if(!this.cachedParentSvg_){let a=
1108
- this.svgGroup_;for(;a;){if("svg"===a.tagName){this.cachedParentSvg_=a;break}a=a.parentNode}}return this.cachedParentSvg_}maybeFireViewportChangeEvent(){if(isEnabled$$module$build$src$core$events$utils()){var a=this.scale,b=-this.scrollY,c=-this.scrollX;if(!(a===this.oldScale_&&1>Math.abs(b-this.oldTop_)&&1>Math.abs(c-this.oldLeft_))){var d=new (get$$module$build$src$core$events$utils(VIEWPORT_CHANGE$$module$build$src$core$events$utils))(b,c,a,this.id,this.oldScale_);this.oldScale_=a;this.oldTop_=
1109
- b;this.oldLeft_=c;fire$$module$build$src$core$events$utils(d)}}}translate(a,b){if(this.useWorkspaceDragSurface_&&this.isDragSurfaceActive_){var c;null==(c=this.workspaceDragSurface_)||c.translateSurface(a,b)}else c="translate("+a+","+b+") scale("+this.scale+")",this.svgBlockCanvas_.setAttribute("transform",c),this.svgBubbleCanvas_.setAttribute("transform",c);this.blockDragSurface_&&this.blockDragSurface_.translateAndScaleGroup(a,b,this.scale);this.grid_&&this.grid_.moveTo(a,b);this.maybeFireViewportChangeEvent()}resetDragSurface(){if(this.useWorkspaceDragSurface_){this.isDragSurfaceActive_=
1110
- !1;var a=this.workspaceDragSurface_.getSurfaceTranslation();this.workspaceDragSurface_.clearAndHide(this.svgGroup_);a="translate("+a.x+","+a.y+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",a);this.svgBubbleCanvas_.setAttribute("transform",a)}}setupDragSurface(){if(this.useWorkspaceDragSurface_&&!this.isDragSurfaceActive_){this.isDragSurfaceActive_=!0;var a=this.svgBlockCanvas_.previousSibling,b,c=parseInt(null!=(b=this.getParentSvg().getAttribute("width"))?b:"0"),d;b=parseInt(null!=
1111
- (d=this.getParentSvg().getAttribute("height"))?d:"0");d=getRelativeXY$$module$build$src$core$utils$svg_math(this.getCanvas());this.workspaceDragSurface_.setContentsAndShow(this.getCanvas(),this.getBubbleCanvas(),a,c,b,this.scale);this.workspaceDragSurface_.translateSurface(d.x,d.y)}}getBlockDragSurface(){return this.blockDragSurface_}getWidth(){const a=this.getMetrics();return a?a.viewWidth/this.scale:0}setVisible(a){this.isVisible_=a;if(this.svgGroup_)if(this.scrollbar&&this.scrollbar.setContainerVisible(a),
1112
- this.getFlyout()&&this.getFlyout().setContainerVisible(a),this.getParentSvg().style.display=a?"block":"none",this.toolbox_&&this.toolbox_.setVisible(a),a){a=this.getAllBlocks(!1);for(let b=a.length-1;0<=b;b--)a[b].markDirty();this.render();this.toolbox_&&this.toolbox_.position()}else this.hideChaff(!0)}render(){var a=this.getAllBlocks(!1);for(var b=a.length-1;0<=b;b--)a[b].render(!1);if(this.currentGesture_)for(a=this.currentGesture_.getInsertionMarkers(),b=0;b<a.length;b++)a[b].render(!1);this.markerManager_.updateMarkers()}highlightBlock(a,
1113
- b){if(void 0===b){for(let c=0,d;d=this.highlightedBlocks_[c];c++)d.setHighlighted(!1);this.highlightedBlocks_.length=0}if(a=a?this.getBlockById(a):null)(b=void 0===b||b)?-1===this.highlightedBlocks_.indexOf(a)&&this.highlightedBlocks_.push(a):removeElem$$module$build$src$core$utils$array(this.highlightedBlocks_,a),a.setHighlighted(b)}paste(a){if(!this.rendered||!a.type&&!a.tagName)return null;this.currentGesture_&&this.currentGesture_.cancel();const b=getGroup$$module$build$src$core$events$utils();
1114
- b||setGroup$$module$build$src$core$events$utils(!0);a=a.type?this.pasteBlock_(null,a):"comment"===a.tagName.toLowerCase()?this.pasteWorkspaceComment_(a):this.pasteBlock_(a,null);setGroup$$module$build$src$core$events$utils(b);return a}pasteBlock_(a,b){disable$$module$build$src$core$events$utils();let c;try{let d=0,e=0;if(a){c=domToBlock$$module$build$src$core$xml(a,this);let f;d=parseInt(null!=(f=a.getAttribute("x"))?f:"0");this.RTL&&(d=-d);let g;e=parseInt(null!=(g=a.getAttribute("y"))?g:"0")}else b&&
1105
+ conditionalBind$$module$build$src$core$browser_events(this.svgGroup_,"wheel",this,this.onMouseWheel_));this.options.hasCategories&&(this.toolbox_=new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.TOOLBOX,this.options,!0))(this));this.grid&&this.grid.update(this.scale);this.recordDragTargets();(a=getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.CURSOR,this.options))&&this.markerManager.setCursor(new a);this.renderer.createDom(this.svgGroup_,
1106
+ this.getTheme());return this.svgGroup_}dispose(){this.rendered=!1;this.currentGesture_&&this.currentGesture_.cancel();this.svgGroup_&&removeNode$$module$build$src$core$utils$dom(this.svgGroup_);this.toolbox_&&(this.toolbox_.dispose(),this.toolbox_=null);this.flyout&&(this.flyout.dispose(),this.flyout=null);this.trashcan&&(this.trashcan.dispose(),this.trashcan=null);this.scrollbar&&(this.scrollbar.dispose(),this.scrollbar=null);this.zoomControls_&&this.zoomControls_.dispose();this.audioManager&&this.audioManager.dispose();
1107
+ this.grid&&(this.grid=null);this.renderer.dispose();this.markerManager&&this.markerManager.dispose();super.dispose();this.themeManager_&&(this.themeManager_.unsubscribeWorkspace(this),this.themeManager_.unsubscribe(this.svgBackground_),this.options.parentWorkspace||this.themeManager_.dispose());this.connectionDBList.length=0;this.toolboxCategoryCallbacks.clear();this.flyoutButtonCallbacks.clear();if(!this.options.parentWorkspace){const a=this.getParentSvg();a&&a.parentNode&&removeNode$$module$build$src$core$utils$dom(a.parentNode)}this.resizeHandlerWrapper&&
1108
+ (unbind$$module$build$src$core$browser_events(this.resizeHandlerWrapper),this.resizeHandlerWrapper=null)}addTrashcan(){this.trashcan=WorkspaceSvg$$module$build$src$core$workspace_svg.newTrashcan(this);const a=this.trashcan.createDom();this.svgGroup_.insertBefore(a,this.svgBlockCanvas_)}static newTrashcan(a){throw Error("The implementation of newTrashcan should be monkey-patched in by blockly.ts");}addZoomControls(){this.zoomControls_=new ZoomControls$$module$build$src$core$zoom_controls(this);const a=
1109
+ this.zoomControls_.createDom();this.svgGroup_.appendChild(a)}addFlyout(a){const b=new Options$$module$build$src$core$options({parentWorkspace:this,rtl:this.RTL,oneBasedIndex:this.options.oneBasedIndex,horizontalLayout:this.horizontalLayout,renderer:this.options.renderer,rendererOverrides:this.options.rendererOverrides,move:{scrollbars:!0}});b.toolboxPosition=this.options.toolboxPosition;this.flyout=this.horizontalLayout?new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.FLYOUTS_HORIZONTAL_TOOLBOX,
1110
+ this.options,!0))(b):new (getClassFromOptions$$module$build$src$core$registry(Type$$module$build$src$core$registry.FLYOUTS_VERTICAL_TOOLBOX,this.options,!0))(b);this.flyout.autoClose=!1;this.flyout.getWorkspace().setVisible(!0);return this.flyout.createDom(a)}getFlyout(a){return this.flyout||a?this.flyout:this.toolbox_?this.toolbox_.getFlyout():null}getToolbox(){return this.toolbox_}updateScreenCalculations_(){this.updateInverseScreenCTM();this.recordDragTargets()}resizeContents(){this.resizesEnabled&&
1111
+ this.rendered&&(this.scrollbar&&this.scrollbar.resize(),this.updateInverseScreenCTM())}resize(){this.toolbox_&&this.toolbox_.position();this.flyout&&this.flyout.position();const a=this.componentManager.getComponents(ComponentManager$$module$build$src$core$component_manager.Capability.POSITIONABLE,!0),b=this.getMetricsManager().getUiMetrics(),c=[];for(let d=0,e;e=a[d];d++){e.position(b,c);const f=e.getBoundingRectangle();f&&c.push(f)}this.scrollbar&&this.scrollbar.resize();this.updateScreenCalculations_()}updateScreenCalculationsIfScrolled(){const a=
1112
+ getDocumentScroll$$module$build$src$core$utils$svg_math();Coordinate$$module$build$src$core$utils$coordinate.equals(this.lastRecordedPageScroll,a)||(this.lastRecordedPageScroll=a,this.updateScreenCalculations_())}getCanvas(){return this.svgBlockCanvas_}setCachedParentSvgSize(a,b){const c=this.getParentSvg();null!=a&&(this.cachedParentSvgSize.width=a,c.setAttribute("data-cached-width",a.toString()));null!=b&&(this.cachedParentSvgSize.height=b,c.setAttribute("data-cached-height",b.toString()))}getBubbleCanvas(){return this.svgBubbleCanvas_}getParentSvg(){if(!this.cachedParentSvg){let a=
1113
+ this.svgGroup_;for(;a;){if("svg"===a.tagName){this.cachedParentSvg=a;break}a=a.parentNode}}return this.cachedParentSvg}maybeFireViewportChangeEvent(){if(isEnabled$$module$build$src$core$events$utils()){var a=this.scale,b=-this.scrollY,c=-this.scrollX;if(!(a===this.oldScale&&1>Math.abs(b-this.oldTop)&&1>Math.abs(c-this.oldLeft))){var d=new (get$$module$build$src$core$events$utils(VIEWPORT_CHANGE$$module$build$src$core$events$utils))(b,c,a,this.id,this.oldScale);this.oldScale=a;this.oldTop=b;this.oldLeft=
1114
+ c;fire$$module$build$src$core$events$utils(d)}}}translate(a,b){if(this.useWorkspaceDragSurface&&this.isDragSurfaceActive){var c;null==(c=this.workspaceDragSurface)||c.translateSurface(a,b)}else c="translate("+a+","+b+") scale("+this.scale+")",this.svgBlockCanvas_.setAttribute("transform",c),this.svgBubbleCanvas_.setAttribute("transform",c);this.blockDragSurface&&this.blockDragSurface.translateAndScaleGroup(a,b,this.scale);this.grid&&this.grid.moveTo(a,b);this.maybeFireViewportChangeEvent()}resetDragSurface(){if(this.useWorkspaceDragSurface){this.isDragSurfaceActive=
1115
+ !1;var a=this.workspaceDragSurface.getSurfaceTranslation();this.workspaceDragSurface.clearAndHide(this.svgGroup_);a="translate("+a.x+","+a.y+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",a);this.svgBubbleCanvas_.setAttribute("transform",a)}}setupDragSurface(){if(this.useWorkspaceDragSurface&&!this.isDragSurfaceActive){this.isDragSurfaceActive=!0;var a=this.svgBlockCanvas_.previousSibling,b,c=parseInt(null!=(b=this.getParentSvg().getAttribute("width"))?b:"0"),d;b=parseInt(null!=
1116
+ (d=this.getParentSvg().getAttribute("height"))?d:"0");d=getRelativeXY$$module$build$src$core$utils$svg_math(this.getCanvas());this.workspaceDragSurface.setContentsAndShow(this.getCanvas(),this.getBubbleCanvas(),a,c,b,this.scale);this.workspaceDragSurface.translateSurface(d.x,d.y)}}getBlockDragSurface(){return this.blockDragSurface}getWidth(){const a=this.getMetrics();return a?a.viewWidth/this.scale:0}setVisible(a){this.isVisible_=a;if(this.svgGroup_)if(this.scrollbar&&this.scrollbar.setContainerVisible(a),
1117
+ this.getFlyout()&&this.getFlyout().setContainerVisible(a),this.getParentSvg().style.display=a?"block":"none",this.toolbox_&&this.toolbox_.setVisible(a),a){a=this.getAllBlocks(!1);for(let b=a.length-1;0<=b;b--)a[b].markDirty();this.render();this.toolbox_&&this.toolbox_.position()}else this.hideChaff(!0)}render(){var a=this.getAllBlocks(!1);for(var b=a.length-1;0<=b;b--)a[b].render(!1);if(this.currentGesture_)for(a=this.currentGesture_.getInsertionMarkers(),b=0;b<a.length;b++)a[b].render(!1);this.markerManager.updateMarkers()}highlightBlock(a,
1118
+ b){if(void 0===b){for(let c=0,d;d=this.highlightedBlocks[c];c++)d.setHighlighted(!1);this.highlightedBlocks.length=0}if(a=a?this.getBlockById(a):null)(b=void 0===b||b)?-1===this.highlightedBlocks.indexOf(a)&&this.highlightedBlocks.push(a):removeElem$$module$build$src$core$utils$array(this.highlightedBlocks,a),a.setHighlighted(b)}paste(a){if(!this.rendered||!a.type&&!a.tagName)return null;this.currentGesture_&&this.currentGesture_.cancel();const b=getGroup$$module$build$src$core$events$utils();b||
1119
+ setGroup$$module$build$src$core$events$utils(!0);a=a.type?this.pasteBlock_(null,a):"comment"===a.tagName.toLowerCase()?this.pasteWorkspaceComment_(a):this.pasteBlock_(a,null);setGroup$$module$build$src$core$events$utils(b);return a}pasteBlock_(a,b){disable$$module$build$src$core$events$utils();let c;try{let d=0,e=0;if(a){c=domToBlock$$module$build$src$core$xml(a,this);let f;d=parseInt(null!=(f=a.getAttribute("x"))?f:"0");this.RTL&&(d=-d);let g;e=parseInt(null!=(g=a.getAttribute("y"))?g:"0")}else b&&
1115
1120
  (c=append$$module$build$src$core$serialization$blocks(b,this),d=b.x||10,this.RTL&&(d=this.getWidth()-d),e=b.y||10);if(!isNaN(d)&&!isNaN(e)){let f;do{f=!1;const g=this.getAllBlocks(!1);for(let h=0,k;k=g[h];h++){const l=k.getRelativeToSurfaceXY();if(1>=Math.abs(d-l.x)&&1>=Math.abs(e-l.y)){f=!0;break}}if(!f){const h=c.getConnections_(!1);for(let k=0,l;l=h[k];k++)if(l.closest($.config$$module$build$src$core$config.snapRadius,new Coordinate$$module$build$src$core$utils$coordinate(d,e)).connection){f=!0;
1116
1121
  break}}f&&(d=this.RTL?d-$.config$$module$build$src$core$config.snapRadius:d+$.config$$module$build$src$core$config.snapRadius,e+=2*$.config$$module$build$src$core$config.snapRadius)}while(f);c.moveTo(new Coordinate$$module$build$src$core$utils$coordinate(d,e))}}finally{enable$$module$build$src$core$events$utils()}isEnabled$$module$build$src$core$events$utils()&&!c.isShadow()&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CREATE$$module$build$src$core$events$utils))(c));
1117
1122
  c.select();return c}pasteWorkspaceComment_(a){disable$$module$build$src$core$events$utils();let b;try{b=WorkspaceCommentSvg$$module$build$src$core$workspace_comment_svg.fromXmlRendered(a,this);let c,d=parseInt(null!=(c=a.getAttribute("x"))?c:"0"),e,f=parseInt(null!=(e=a.getAttribute("y"))?e:"0");isNaN(d)||isNaN(f)||(this.RTL&&(d=-d),b.moveBy(d+50,f+50))}finally{enable$$module$build$src$core$events$utils()}isEnabled$$module$build$src$core$events$utils()&&WorkspaceComment$$module$build$src$core$workspace_comment.fireCreateEvent(b);
1118
- b.select();return b}refreshToolboxSelection(){const a=this.isFlyout?this.targetWorkspace:this;a&&!a.currentGesture_&&a.toolbox_&&a.toolbox_.getFlyout()&&a.toolbox_.refreshSelection()}renameVariableById(a,b){super.renameVariableById(a,b);this.refreshToolboxSelection()}deleteVariableById(a){super.deleteVariableById(a);this.refreshToolboxSelection()}createVariable(a,b,c){a=super.createVariable(a,b,c);this.refreshToolboxSelection();return a}recordDragTargets(){const a=this.componentManager_.getComponents(ComponentManager$$module$build$src$core$component_manager.Capability.DRAG_TARGET,
1119
- !0);this.dragTargetAreas_=[];for(let b=0,c;c=a[b];b++){const d=c.getClientRect();d&&this.dragTargetAreas_.push({component:c,clientRect:d})}}newBlock(a,b){throw Error("The implementation of newBlock should be monkey-patched in by blockly.ts");}getDragTarget(a){for(let b=0,c;c=this.dragTargetAreas_[b];b++)if(c.clientRect.contains(a.clientX,a.clientY))return c.component;return null}onMouseDown_(a){const b=this.getGesture(a);b&&b.handleWsStart(a,this)}startDrag(a,b){a=mouseToSvg$$module$build$src$core$browser_events(a,
1120
- this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;this.dragDeltaXY_=Coordinate$$module$build$src$core$utils$coordinate.difference(b,a)}moveDrag(a){a=mouseToSvg$$module$build$src$core$browser_events(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;return Coordinate$$module$build$src$core$utils$coordinate.sum(this.dragDeltaXY_,a)}isDragging(){return null!==this.currentGesture_&&this.currentGesture_.isDragging()}isDraggable(){return this.options.moveOptions&&
1123
+ b.select();return b}refreshToolboxSelection(){const a=this.isFlyout?this.targetWorkspace:this;a&&!a.currentGesture_&&a.toolbox_&&a.toolbox_.getFlyout()&&a.toolbox_.refreshSelection()}renameVariableById(a,b){super.renameVariableById(a,b);this.refreshToolboxSelection()}deleteVariableById(a){super.deleteVariableById(a);this.refreshToolboxSelection()}createVariable(a,b,c){a=super.createVariable(a,b,c);this.refreshToolboxSelection();return a}recordDragTargets(){const a=this.componentManager.getComponents(ComponentManager$$module$build$src$core$component_manager.Capability.DRAG_TARGET,
1124
+ !0);this.dragTargetAreas=[];for(let b=0,c;c=a[b];b++){const d=c.getClientRect();d&&this.dragTargetAreas.push({component:c,clientRect:d})}}newBlock(a,b){throw Error("The implementation of newBlock should be monkey-patched in by blockly.ts");}getDragTarget(a){for(let b=0,c;c=this.dragTargetAreas[b];b++)if(c.clientRect.contains(a.clientX,a.clientY))return c.component;return null}onMouseDown_(a){const b=this.getGesture(a);b&&b.handleWsStart(a,this)}startDrag(a,b){a=mouseToSvg$$module$build$src$core$browser_events(a,
1125
+ this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;this.dragDeltaXY=Coordinate$$module$build$src$core$utils$coordinate.difference(b,a)}moveDrag(a){a=mouseToSvg$$module$build$src$core$browser_events(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;return Coordinate$$module$build$src$core$utils$coordinate.sum(this.dragDeltaXY,a)}isDragging(){return null!==this.currentGesture_&&this.currentGesture_.isDragging()}isDraggable(){return this.options.moveOptions&&
1121
1126
  this.options.moveOptions.drag}isMovable(){return this.options.moveOptions&&!!this.options.moveOptions.scrollbars||this.options.moveOptions&&this.options.moveOptions.wheel||this.options.moveOptions&&this.options.moveOptions.drag||this.options.zoomOptions&&this.options.zoomOptions.wheel||this.options.zoomOptions&&this.options.zoomOptions.pinch}isMovableHorizontally(){const a=!!this.scrollbar;return this.isMovable()&&(!a||a&&this.scrollbar.canScrollHorizontally())}isMovableVertically(){const a=!!this.scrollbar;
1122
1127
  return this.isMovable()&&(!a||a&&this.scrollbar.canScrollVertically())}onMouseWheel_(a){if(Gesture$$module$build$src$core$gesture.inProgress())a.preventDefault(),a.stopPropagation();else{var b=this.options.zoomOptions&&this.options.zoomOptions.wheel,c=this.options.moveOptions&&this.options.moveOptions.wheel;if(b||c){var d=getScrollDeltaPixels$$module$build$src$core$browser_events(a);if(MAC$$module$build$src$core$utils$useragent)var e=a.metaKey;b&&(a.ctrlKey||e||!c)?(d=-d.y/50,b=mouseToSvg$$module$build$src$core$browser_events(a,
1123
1128
  this.getParentSvg(),this.getInverseScreenCTM()),this.zoom(b.x,b.y,d)):(b=this.scrollX-d.x,c=this.scrollY-d.y,a.shiftKey&&!d.x&&(b=this.scrollX-d.y,c=this.scrollY),this.scroll(b,c));a.preventDefault()}}}getBlocksBoundingBox(){const a=this.getTopBoundedElements();if(!a.length)return new Rect$$module$build$src$core$utils$rect(0,0,0,0);const b=a[0].getBoundingRectangle();for(let d=1;d<a.length;d++){var c=a[d];c.isInsertionMarker&&c.isInsertionMarker()||(c=c.getBoundingRectangle(),c.top<b.top&&(b.top=
1124
- c.top),c.bottom>b.bottom&&(b.bottom=c.bottom),c.left<b.left&&(b.left=c.left),c.right>b.right&&(b.right=c.right))}return b}cleanUp(){this.setResizesEnabled(!1);setGroup$$module$build$src$core$events$utils(!0);const a=this.getTopBlocks(!0);let b=0;for(let c=0,d;d=a[c];c++){if(!d.isMovable())continue;const e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+this.renderer_.getConstants().MIN_BLOCK_HEIGHT}setGroup$$module$build$src$core$events$utils(!1);
1129
+ c.top),c.bottom>b.bottom&&(b.bottom=c.bottom),c.left<b.left&&(b.left=c.left),c.right>b.right&&(b.right=c.right))}return b}cleanUp(){this.setResizesEnabled(!1);setGroup$$module$build$src$core$events$utils(!0);const a=this.getTopBlocks(!0);let b=0;for(let c=0,d;d=a[c];c++){if(!d.isMovable())continue;const e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+this.renderer.getConstants().MIN_BLOCK_HEIGHT}setGroup$$module$build$src$core$events$utils(!1);
1125
1130
  this.setResizesEnabled(!0)}showContextMenu(a){if(!this.options.readOnly&&!this.isFlyout){var b=ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.getContextMenuOptions(ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,{workspace:this});this.configureContextMenu&&this.configureContextMenu(b,a);show$$module$build$src$core$contextmenu(a,b,this.RTL)}}updateToolbox(a){if(a=convertToolboxDefToJson$$module$build$src$core$utils$toolbox(a)){if(!this.options.languageTree)throw Error("Existing toolbox is null. Can't create new toolbox.");
1126
- if(hasCategories$$module$build$src$core$utils$toolbox(a)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=a;this.toolbox_.render(a)}else{if(!this.flyout_)throw Error("Existing toolbox has categories. Can't change mode.");this.options.languageTree=a;this.flyout_.show(a)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.");}markFocused(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():
1131
+ if(hasCategories$$module$build$src$core$utils$toolbox(a)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=a;this.toolbox_.render(a)}else{if(!this.flyout)throw Error("Existing toolbox has categories. Can't change mode.");this.options.languageTree=a;this.flyout.show(a)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.");}markFocused(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():
1127
1132
  (setMainWorkspace$$module$build$src$core$common(this),this.setBrowserFocus())}setBrowserFocus(){document.activeElement&&document.activeElement instanceof HTMLElement&&document.activeElement.blur();try{this.getParentSvg().focus({preventScroll:!0})}catch(a){try{this.getParentSvg().parentElement.setActive()}catch(b){this.getParentSvg().parentElement.focus({preventScroll:!0})}}}zoom(a,b,c){c=Math.pow(this.options.zoomOptions.scaleSpeed,c);const d=this.scale*c;if(this.scale!==d){d>this.options.zoomOptions.maxScale?
1128
- c=this.options.zoomOptions.maxScale/this.scale:d<this.options.zoomOptions.minScale&&(c=this.options.zoomOptions.minScale/this.scale);var e=this.getCanvas().getCTM(),f=this.getParentSvg().createSVGPoint();f.x=a;f.y=b;f=f.matrixTransform(e.inverse());a=f.x;b=f.y;e=e.translate(a*(1-c),b*(1-c)).scale(c);this.scrollX=e.e;this.scrollY=e.f;this.setScale(d)}}zoomCenter(a){var b=this.getMetrics();let c;this.flyout_?(c=b.svgWidth?b.svgWidth/2:0,b=b.svgHeight?b.svgHeight/2:0):(c=b.viewWidth/2+b.absoluteLeft,
1129
- b=b.viewHeight/2+b.absoluteTop);this.zoom(c,b,a)}zoomToFit(){if(this.isMovable()){var a=this.getMetrics(),b=a.viewWidth;a=a.viewHeight;var c=this.getBlocksBoundingBox(),d=2*ZOOM_TO_FIT_MARGIN$$module$build$src$core$workspace_svg,e=c.right-c.left+d;c=c.bottom-c.top+d;if(e){this.flyout_&&(this.horizontalLayout?(a+=this.flyout_.getHeight(),c+=this.flyout_.getHeight()/this.scale):(b+=this.flyout_.getWidth(),e+=this.flyout_.getWidth()/this.scale));b/=e;a/=c;disable$$module$build$src$core$events$utils();
1130
- try{this.setScale(Math.min(b,a)),this.scrollCenter()}finally{enable$$module$build$src$core$events$utils()}this.maybeFireViewportChangeEvent()}}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}beginCanvasTransition(){addClass$$module$build$src$core$utils$dom(this.svgBlockCanvas_,"blocklyCanvasTransitioning");addClass$$module$build$src$core$utils$dom(this.svgBubbleCanvas_,"blocklyCanvasTransitioning")}endCanvasTransition(){removeClass$$module$build$src$core$utils$dom(this.svgBlockCanvas_,
1133
+ c=this.options.zoomOptions.maxScale/this.scale:d<this.options.zoomOptions.minScale&&(c=this.options.zoomOptions.minScale/this.scale);var e=this.getCanvas().getCTM(),f=this.getParentSvg().createSVGPoint();f.x=a;f.y=b;f=f.matrixTransform(e.inverse());a=f.x;b=f.y;e=e.translate(a*(1-c),b*(1-c)).scale(c);this.scrollX=e.e;this.scrollY=e.f;this.setScale(d)}}zoomCenter(a){var b=this.getMetrics();let c;this.flyout?(c=b.svgWidth?b.svgWidth/2:0,b=b.svgHeight?b.svgHeight/2:0):(c=b.viewWidth/2+b.absoluteLeft,
1134
+ b=b.viewHeight/2+b.absoluteTop);this.zoom(c,b,a)}zoomToFit(){if(this.isMovable()){var a=this.getMetrics(),b=a.viewWidth;a=a.viewHeight;var c=this.getBlocksBoundingBox(),d=2*ZOOM_TO_FIT_MARGIN$$module$build$src$core$workspace_svg,e=c.right-c.left+d;c=c.bottom-c.top+d;if(e){this.flyout&&(this.horizontalLayout?(a+=this.flyout.getHeight(),c+=this.flyout.getHeight()/this.scale):(b+=this.flyout.getWidth(),e+=this.flyout.getWidth()/this.scale));b/=e;a/=c;disable$$module$build$src$core$events$utils();try{this.setScale(Math.min(b,
1135
+ a)),this.scrollCenter()}finally{enable$$module$build$src$core$events$utils()}this.maybeFireViewportChangeEvent()}}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}beginCanvasTransition(){addClass$$module$build$src$core$utils$dom(this.svgBlockCanvas_,"blocklyCanvasTransitioning");addClass$$module$build$src$core$utils$dom(this.svgBubbleCanvas_,"blocklyCanvasTransitioning")}endCanvasTransition(){removeClass$$module$build$src$core$utils$dom(this.svgBlockCanvas_,
1131
1136
  "blocklyCanvasTransitioning");removeClass$$module$build$src$core$utils$dom(this.svgBubbleCanvas_,"blocklyCanvasTransitioning")}scrollCenter(){if(this.isMovable()){var a=this.getMetrics(),b=(a.scrollWidth-a.viewWidth)/2,c=(a.scrollHeight-a.viewHeight)/2;b=-b-a.scrollLeft;c=-c-a.scrollTop;this.scroll(b,c)}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}centerOnBlock(a){if(this.isMovable()){if(a=a?this.getBlockById(a):null){var b=a.getRelativeToSurfaceXY(),
1132
1137
  c=a.getHeightWidth(),d=this.scale;a=(b.x+(this.RTL?-1:1)*c.width/2)*d;b=(b.y+c.height/2)*d;c=this.getMetrics();this.scroll(-(a-c.viewWidth/2),-(b-c.viewHeight/2))}}else console.warn("Tried to move a non-movable workspace. This could result in blocks becoming inaccessible.")}setScale(a){this.options.zoomOptions.maxScale&&a>this.options.zoomOptions.maxScale?a=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&&a<this.options.zoomOptions.minScale&&(a=this.options.zoomOptions.minScale);
1133
- this.scale=a;this.hideChaff(!1);(a=this.getFlyout(!1))&&a.isVisible()&&(a.reflow(),this.recordDragTargets());this.grid_&&this.grid_.update(this.scale);a=this.getMetrics();this.scrollX-=a.absoluteLeft;this.scrollY-=a.absoluteTop;a.viewLeft+=a.absoluteLeft;a.viewTop+=a.absoluteTop;this.scroll(this.scrollX,this.scrollY);this.scrollbar&&(this.flyout_?this.scrollbar.resizeView(a):this.scrollbar.resizeContent(a))}getScale(){return this.options.parentWorkspace?this.options.parentWorkspace.getScale():this.scale}scroll(a,
1138
+ this.scale=a;this.hideChaff(!1);(a=this.getFlyout(!1))&&a.isVisible()&&(a.reflow(),this.recordDragTargets());this.grid&&this.grid.update(this.scale);a=this.getMetrics();this.scrollX-=a.absoluteLeft;this.scrollY-=a.absoluteTop;a.viewLeft+=a.absoluteLeft;a.viewTop+=a.absoluteTop;this.scroll(this.scrollX,this.scrollY);this.scrollbar&&(this.flyout?this.scrollbar.resizeView(a):this.scrollbar.resizeContent(a))}getScale(){return this.options.parentWorkspace?this.options.parentWorkspace.getScale():this.scale}scroll(a,
1134
1139
  b){this.hideChaff(!0);const c=this.getMetrics();a=Math.min(a,-c.scrollLeft);b=Math.min(b,-c.scrollTop);const d=c.scrollTop+Math.max(0,c.scrollHeight-c.viewHeight);a=Math.max(a,-(c.scrollLeft+Math.max(0,c.scrollWidth-c.viewWidth)));b=Math.max(b,-d);this.scrollX=a;this.scrollY=b;this.scrollbar&&this.scrollbar.set(-(a+c.scrollLeft),-(b+c.scrollTop),!1);a+=c.absoluteLeft;b+=c.absoluteTop;this.translate(a,b)}getBlockById(a){return super.getBlockById(a)}getAllBlocks(a){return super.getAllBlocks(a)}getTopBlocks(a){return super.getTopBlocks(a)}addTopBlock(a){this.addTopBoundedElement(a);
1135
- super.addTopBlock(a)}removeTopBlock(a){this.removeTopBoundedElement(a);super.removeTopBlock(a)}addTopComment(a){this.addTopBoundedElement(a);super.addTopComment(a)}removeTopComment(a){this.removeTopBoundedElement(a);super.removeTopComment(a)}addTopBoundedElement(a){this.topBoundedElements_.push(a)}removeTopBoundedElement(a){removeElem$$module$build$src$core$utils$array(this.topBoundedElements_,a)}getTopBoundedElements(){return[].concat(this.topBoundedElements_)}setResizesEnabled(a){const b=!this.resizesEnabled_&&
1136
- a;this.resizesEnabled_=a;b&&this.resizeContents()}clear(){this.setResizesEnabled(!1);super.clear();this.topBoundedElements_=[];this.setResizesEnabled(!0)}registerButtonCallback(a,b){if("function"!==typeof b)throw TypeError("Button callbacks must be functions.");this.flyoutButtonCallbacks.set(a,b)}getButtonCallback(a){let b;return null!=(b=this.flyoutButtonCallbacks.get(a))?b:null}removeButtonCallback(a){this.flyoutButtonCallbacks.delete(a)}registerToolboxCategoryCallback(a,b){if("function"!==typeof b)throw TypeError("Toolbox category callbacks must be functions.");
1140
+ super.addTopBlock(a)}removeTopBlock(a){this.removeTopBoundedElement(a);super.removeTopBlock(a)}addTopComment(a){this.addTopBoundedElement(a);super.addTopComment(a)}removeTopComment(a){this.removeTopBoundedElement(a);super.removeTopComment(a)}addTopBoundedElement(a){this.topBoundedElements.push(a)}removeTopBoundedElement(a){removeElem$$module$build$src$core$utils$array(this.topBoundedElements,a)}getTopBoundedElements(){return[].concat(this.topBoundedElements)}setResizesEnabled(a){const b=!this.resizesEnabled&&
1141
+ a;this.resizesEnabled=a;b&&this.resizeContents()}clear(){this.setResizesEnabled(!1);super.clear();this.topBoundedElements=[];this.setResizesEnabled(!0)}registerButtonCallback(a,b){if("function"!==typeof b)throw TypeError("Button callbacks must be functions.");this.flyoutButtonCallbacks.set(a,b)}getButtonCallback(a){let b;return null!=(b=this.flyoutButtonCallbacks.get(a))?b:null}removeButtonCallback(a){this.flyoutButtonCallbacks.delete(a)}registerToolboxCategoryCallback(a,b){if("function"!==typeof b)throw TypeError("Toolbox category callbacks must be functions.");
1137
1142
  this.toolboxCategoryCallbacks.set(a,b)}getToolboxCategoryCallback(a){return this.toolboxCategoryCallbacks.get(a)||null}removeToolboxCategoryCallback(a){this.toolboxCategoryCallbacks.delete(a)}getGesture(a){const b="mousedown"===a.type||"touchstart"===a.type||"pointerdown"===a.type,c=this.currentGesture_;return c?b&&c.hasStarted()?(console.warn("Tried to start the same gesture twice."),c.cancel(),null):c:b?this.currentGesture_=new TouchGesture$$module$build$src$core$touch_gesture(a,this):null}clearGesture(){this.currentGesture_=
1138
- null}cancelCurrentGesture(){this.currentGesture_&&this.currentGesture_.cancel()}getAudioManager(){return this.audioManager_}getGrid(){return this.grid_}hideChaff(a){hide$$module$build$src$core$tooltip();hide$$module$build$src$core$widgetdiv();hideWithoutAnimation$$module$build$src$core$dropdowndiv();const b=!!a;this.getComponentManager().getComponents(ComponentManager$$module$build$src$core$component_manager.Capability.AUTOHIDEABLE,!0).forEach(c=>c.autoHide(b))}static setTopLevelWorkspaceMetrics_(a){const b=
1143
+ null}cancelCurrentGesture(){this.currentGesture_&&this.currentGesture_.cancel()}getAudioManager(){return this.audioManager}getGrid(){return this.grid}hideChaff(a){hide$$module$build$src$core$tooltip();hide$$module$build$src$core$widgetdiv();hideWithoutAnimation$$module$build$src$core$dropdowndiv();const b=!!a;this.getComponentManager().getComponents(ComponentManager$$module$build$src$core$component_manager.Capability.AUTOHIDEABLE,!0).forEach(c=>c.autoHide(b))}static setTopLevelWorkspaceMetrics_(a){const b=
1139
1144
  this.getMetrics();"number"===typeof a.x&&(this.scrollX=-(b.scrollLeft+(b.scrollWidth-b.viewWidth)*a.x));"number"===typeof a.y&&(this.scrollY=-(b.scrollTop+(b.scrollHeight-b.viewHeight)*a.y));this.translate(this.scrollX+b.absoluteLeft,this.scrollY+b.absoluteTop)}},module$build$src$core$workspace_svg={};module$build$src$core$workspace_svg.WorkspaceSvg=WorkspaceSvg$$module$build$src$core$workspace_svg;module$build$src$core$workspace_svg.resizeSvgContents=resizeSvgContents$$module$build$src$core$workspace_svg;var module$build$src$core$serialization$workspaces={};module$build$src$core$serialization$workspaces.load=load$$module$build$src$core$serialization$workspaces;module$build$src$core$serialization$workspaces.save=save$$module$build$src$core$serialization$workspaces;var VariableSerializer$$module$build$src$core$serialization$variables=class{constructor(){this.priority=VARIABLES$$module$build$src$core$serialization$priorities}save(a){const b=[];for(const c of a.getAllVariables())a={name:c.name,id:c.getId()},c.type&&(a.type=c.type),b.push(a);return b.length?b:null}load(a,b){for(const c of a)b.createVariable(c.name,c.type,c.id)}clear(a){a.getVariableMap().clear()}};register$$module$build$src$core$serialization$registry("variables",new VariableSerializer$$module$build$src$core$serialization$variables);
1140
- var module$build$src$core$serialization$variables={};var ConstantProvider$$module$build$src$core$renderers$zelos$constants=class extends ConstantProvider$$module$build$src$core$renderers$common$constants{constructor(){super();this.GRID_UNIT=4;this.CURSOR_COLOUR="#ffa200";this.CURSOR_RADIUS=5;this.JAGGED_TEETH_WIDTH=this.JAGGED_TEETH_HEIGHT=0;this.START_HAT_HEIGHT=22;this.START_HAT_WIDTH=96;this.SHAPES={HEXAGONAL:1,ROUND:2,SQUARE:3,PUZZLE:4,NOTCH:5};this.SHAPE_IN_SHAPE_PADDING={1:{0:5*this.GRID_UNIT,1:2*this.GRID_UNIT,2:5*this.GRID_UNIT,3:5*this.GRID_UNIT},
1145
+ var module$build$src$core$serialization$variables={};module$build$src$core$serialization$variables.VariableSerializer=VariableSerializer$$module$build$src$core$serialization$variables;var ProcedureSerializer$$module$build$src$core$serialization$procedures=class{constructor(a,b){this.procedureModelClass=a;this.parameterModelClass=b;this.priority=PROCEDURES$$module$build$src$core$serialization$priorities}save(a){return a.getProcedureMap().getProcedures().map(b=>saveProcedure$$module$build$src$core$serialization$procedures(b))}load(a,b){const c=b.getProcedureMap();for(const d of a)c.add(loadProcedure$$module$build$src$core$serialization$procedures(this.procedureModelClass,this.parameterModelClass,
1146
+ d,b))}clear(a){a.getProcedureMap().clear()}},observableProcedureSerializer$$module$build$src$core$serialization$procedures=new ProcedureSerializer$$module$build$src$core$serialization$procedures(ObservableProcedureModel$$module$build$src$core$procedures$observable_procedure_model,ObservableParameterModel$$module$build$src$core$procedures$observable_parameter_model),module$build$src$core$serialization$procedures={};module$build$src$core$serialization$procedures.ProcedureSerializer=ProcedureSerializer$$module$build$src$core$serialization$procedures;
1147
+ module$build$src$core$serialization$procedures.observableProcedureSerializer=observableProcedureSerializer$$module$build$src$core$serialization$procedures;var module$build$src$core$serialization={blocks:module$build$src$core$serialization$blocks,exceptions:module$build$src$core$serialization$exceptions,priorities:module$build$src$core$serialization$priorities,procedures:module$build$src$core$serialization$procedures,registry:module$build$src$core$serialization$registry,variables:module$build$src$core$serialization$variables,workspaces:module$build$src$core$serialization$workspaces};var ConstantProvider$$module$build$src$core$renderers$zelos$constants=class extends ConstantProvider$$module$build$src$core$renderers$common$constants{constructor(){super();this.GRID_UNIT=4;this.CURSOR_COLOUR="#ffa200";this.CURSOR_RADIUS=5;this.JAGGED_TEETH_WIDTH=this.JAGGED_TEETH_HEIGHT=0;this.START_HAT_HEIGHT=22;this.START_HAT_WIDTH=96;this.SHAPES={HEXAGONAL:1,ROUND:2,SQUARE:3,PUZZLE:4,NOTCH:5};this.SHAPE_IN_SHAPE_PADDING={1:{0:5*this.GRID_UNIT,1:2*this.GRID_UNIT,2:5*this.GRID_UNIT,3:5*this.GRID_UNIT},
1141
1148
  2:{0:3*this.GRID_UNIT,1:3*this.GRID_UNIT,2:1*this.GRID_UNIT,3:2*this.GRID_UNIT},3:{0:2*this.GRID_UNIT,1:2*this.GRID_UNIT,2:2*this.GRID_UNIT,3:2*this.GRID_UNIT}};this.FULL_BLOCK_FIELDS=!0;this.FIELD_TEXT_FONTWEIGHT="bold";this.FIELD_TEXT_FONTFAMILY='"Helvetica Neue", "Segoe UI", Helvetica, sans-serif';this.FIELD_COLOUR_FULL_BLOCK=this.FIELD_TEXTINPUT_BOX_SHADOW=this.FIELD_DROPDOWN_SVG_ARROW=this.FIELD_DROPDOWN_COLOURED_DIV=this.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW=!0;this.SELECTED_GLOW_COLOUR="#fff200";
1142
1149
  this.SELECTED_GLOW_SIZE=.5;this.REPLACEMENT_GLOW_COLOUR="#fff200";this.REPLACEMENT_GLOW_SIZE=2;this.selectedGlowFilterId="";this.selectedGlowFilter_=null;this.replacementGlowFilterId="";this.SQUARED=this.ROUNDED=this.HEXAGONAL=this.replacementGlowFilter_=null;this.SMALL_PADDING=this.GRID_UNIT;this.MEDIUM_PADDING=2*this.GRID_UNIT;this.MEDIUM_LARGE_PADDING=3*this.GRID_UNIT;this.LARGE_PADDING=4*this.GRID_UNIT;this.CORNER_RADIUS=1*this.GRID_UNIT;this.NOTCH_WIDTH=9*this.GRID_UNIT;this.NOTCH_HEIGHT=2*this.GRID_UNIT;
1143
1150
  this.STATEMENT_INPUT_NOTCH_OFFSET=this.NOTCH_OFFSET_LEFT=3*this.GRID_UNIT;this.MIN_BLOCK_WIDTH=2*this.GRID_UNIT;this.MIN_BLOCK_HEIGHT=12*this.GRID_UNIT;this.EMPTY_STATEMENT_INPUT_HEIGHT=6*this.GRID_UNIT;this.TOP_ROW_MIN_HEIGHT=this.CORNER_RADIUS;this.TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT=this.LARGE_PADDING;this.BOTTOM_ROW_MIN_HEIGHT=this.CORNER_RADIUS;this.BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT=6*this.GRID_UNIT;this.STATEMENT_BOTTOM_SPACER=-this.NOTCH_HEIGHT;this.STATEMENT_INPUT_SPACER_MIN_WIDTH=40*
@@ -1177,18 +1184,18 @@ a.flipRtl&&(this.flipRtl_=a.flipRtl);a.alt&&(this.altText_=replaceMessageReferen
1177
1184
  module$build$src$core$field_image.FieldImage=$.FieldImage$$module$build$src$core$field_image;$.FieldTextInput$$module$build$src$core$field_textinput=class extends Field$$module$build$src$core$field{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.spellcheck_=!0;this.htmlInput_=null;this.isTextValid_=this.isBeingEdited_=!1;this.onKeyInputWrapper_=this.onKeyDownWrapper_=null;this.fullBlockClickTarget_=!1;this.workspace_=null;this.SERIALIZABLE=!0;this.CURSOR="text";a!==Field$$module$build$src$core$field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}configure_(a){super.configure_(a);
1178
1185
  void 0!==a.spellcheck&&(this.spellcheck_=a.spellcheck)}initView(){const a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;if(this.getConstants().FULL_BLOCK_FIELDS){let b=0,c=0;for(let d=0,e;e=a.inputList[d];d++){for(let f=0;e.fieldRow[f];f++)b++;e.connection&&c++}this.fullBlockClickTarget_=1>=b&&a.outputConnection&&!c}else this.fullBlockClickTarget_=!1;this.fullBlockClickTarget_?this.clickTarget_=this.sourceBlock_.getSvgRoot():this.createBorderRect_();this.createTextElement_()}doClassValidation_(a){return null===
1179
1186
  a||void 0===a?null:String(a)}doValueInvalid_(a){this.isBeingEdited_&&(this.isTextValid_=!1,a=this.value_,this.value_=this.htmlInput_.getAttribute("data-untyped-default-value"),this.sourceBlock_&&isEnabled$$module$build$src$core$events$utils()&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(this.sourceBlock_,"field",this.name||null,a,this.value_)))}doValueUpdate_(a){this.isTextValid_=!0;this.value_=a;this.isBeingEdited_||
1180
- (this.isDirty_=!0)}applyColour(){if(this.sourceBlock_&&this.getConstants().FULL_BLOCK_FIELDS){var a=this.sourceBlock_;if(this.borderRect_){if(!a.style.colourTertiary)throw Error("The renderer did not properly initialize the block style");this.borderRect_.setAttribute("stroke",a.style.colourTertiary)}else a.pathObject.svgPath.setAttribute("fill",this.getConstants().FIELD_BORDER_RECT_COLOUR)}}render_(){super.render_();if(this.isBeingEdited_){this.resizeEditor_();const a=this.htmlInput_;this.isTextValid_?
1181
- (removeClass$$module$build$src$core$utils$dom(a,"blocklyInvalidInput"),setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.INVALID,!1)):(addClass$$module$build$src$core$utils$dom(a,"blocklyInvalidInput"),setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.INVALID,!0))}}setSpellcheck(a){a!==this.spellcheck_&&(this.spellcheck_=a,this.htmlInput_&&this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}showEditor_(a,b){this.workspace_=
1182
- this.sourceBlock_.workspace;a=b||!1;!a&&(MOBILE$$module$build$src$core$utils$useragent||ANDROID$$module$build$src$core$utils$useragent||IPAD$$module$build$src$core$utils$useragent)?this.showPromptEditor_():this.showInlineEditor_(a)}showPromptEditor_(){prompt$$module$build$src$core$dialog(Msg$$module$build$src$core$msg.CHANGE_VALUE_TITLE,this.getText(),a=>{null!==a&&this.setValue(this.getValueFromEditorText_(a))})}showInlineEditor_(a){const b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;
1183
- show$$module$build$src$core$widgetdiv(this,b.RTL,this.widgetDispose_.bind(this));this.htmlInput_=this.widgetCreate_();this.isBeingEdited_=!0;a||(this.htmlInput_.focus({preventScroll:!0}),this.htmlInput_.select())}widgetCreate_(){var a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;setGroup$$module$build$src$core$events$utils(!0);const b=getDiv$$module$build$src$core$widgetdiv();var c=this.getClickTarget_();if(!c)throw Error("A click target has not been set.");
1184
- addClass$$module$build$src$core$utils$dom(c,"editing");c=document.createElement("input");c.className="blocklyHtmlInput";c.setAttribute("spellcheck",this.spellcheck_);const d=this.workspace_.getScale();var e=this.getConstants().FIELD_TEXT_FONTSIZE*d+"pt";b.style.fontSize=e;c.style.fontSize=e;e=$.FieldTextInput$$module$build$src$core$field_textinput.BORDERRADIUS*d+"px";this.fullBlockClickTarget_&&(e=this.getScaledBBox(),e=(e.bottom-e.top)/2+"px",a=a.getParent()?a.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary,
1185
- c.style.border=1*d+"px solid "+a,b.style.borderRadius=e,b.style.transition="box-shadow 0.25s ease 0s",this.getConstants().FIELD_TEXTINPUT_BOX_SHADOW&&(b.style.boxShadow="rgba(255, 255, 255, 0.3) 0 0 0 "+4*d+"px"));c.style.borderRadius=e;b.appendChild(c);c.value=c.defaultValue=this.getEditorText_(this.value_);c.setAttribute("data-untyped-default-value",this.value_);c.setAttribute("data-old-value","");this.resizeEditor_();this.bindInputEvents_(c);return c}widgetDispose_(){this.isBeingEdited_=!1;this.isTextValid_=
1186
- !0;this.forceRerender();this.onFinishEditing_(this.value_);setGroup$$module$build$src$core$events$utils(!1);this.unbindInputEvents_();var a=getDiv$$module$build$src$core$widgetdiv().style;a.width="auto";a.height="auto";a.fontSize="";a.transition="";a.boxShadow="";this.htmlInput_=null;a=this.getClickTarget_();if(!a)throw Error("A click target has not been set.");removeClass$$module$build$src$core$utils$dom(a,"editing")}onFinishEditing_(a){}bindInputEvents_(a){this.onKeyDownWrapper_=conditionalBind$$module$build$src$core$browser_events(a,
1187
- "keydown",this,this.onHtmlInputKeyDown_);this.onKeyInputWrapper_=conditionalBind$$module$build$src$core$browser_events(a,"input",this,this.onHtmlInputChange_)}unbindInputEvents_(){this.onKeyDownWrapper_&&(unbind$$module$build$src$core$browser_events(this.onKeyDownWrapper_),this.onKeyDownWrapper_=null);this.onKeyInputWrapper_&&(unbind$$module$build$src$core$browser_events(this.onKeyInputWrapper_),this.onKeyInputWrapper_=null)}onHtmlInputKeyDown_(a){a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.ENTER?
1188
- (hide$$module$build$src$core$widgetdiv(),hideWithoutAnimation$$module$build$src$core$dropdowndiv()):a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.ESC?(this.setValue(this.htmlInput_.getAttribute("data-untyped-default-value")),hide$$module$build$src$core$widgetdiv(),hideWithoutAnimation$$module$build$src$core$dropdowndiv()):a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.TAB&&(hide$$module$build$src$core$widgetdiv(),hideWithoutAnimation$$module$build$src$core$dropdowndiv(),this.sourceBlock_.tab(this,
1189
- !a.shiftKey),a.preventDefault())}onHtmlInputChange_(a){a=this.htmlInput_.value;a!==this.htmlInput_.getAttribute("data-old-value")&&(this.htmlInput_.setAttribute("data-old-value",a),a=this.getValueFromEditorText_(a),this.setValue(a),this.forceRerender(),this.resizeEditor_())}setEditorValue_(a){this.isDirty_=!0;this.isBeingEdited_&&(this.htmlInput_.value=this.getEditorText_(a));this.setValue(a)}resizeEditor_(){var a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;
1190
- const b=getDiv$$module$build$src$core$widgetdiv(),c=this.getScaledBBox();b.style.width=c.right-c.left+"px";b.style.height=c.bottom-c.top+"px";a=new Coordinate$$module$build$src$core$utils$coordinate(a.RTL?c.right-b.offsetWidth:c.left,c.top);b.style.left=a.x+"px";b.style.top=a.y+"px"}isTabNavigable(){return!0}getText_(){return this.isBeingEdited_&&this.htmlInput_?this.htmlInput_.value:null}getEditorText_(a){return String(a)}getValueFromEditorText_(a){return a}static fromJson(a){return new this(replaceMessageReferences$$module$build$src$core$utils$parsing(a.text),
1191
- void 0,a)}};$.FieldTextInput$$module$build$src$core$field_textinput.BORDERRADIUS=4;register$$module$build$src$core$field_registry("field_input",$.FieldTextInput$$module$build$src$core$field_textinput);$.FieldTextInput$$module$build$src$core$field_textinput.prototype.DEFAULT_VALUE="";var module$build$src$core$field_textinput={};module$build$src$core$field_textinput.FieldTextInput=$.FieldTextInput$$module$build$src$core$field_textinput;var BottomRow$$module$build$src$core$renderers$zelos$measurables$bottom_row=class extends BottomRow$$module$build$src$core$renderers$measurables$bottom_row{constructor(a){super(a)}endsWithElemSpacer(){return!1}hasLeftSquareCorner(a){return!!a.outputConnection}hasRightSquareCorner(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection}},module$build$src$core$renderers$zelos$measurables$bottom_row={};module$build$src$core$renderers$zelos$measurables$bottom_row.BottomRow=BottomRow$$module$build$src$core$renderers$zelos$measurables$bottom_row;var StatementInput$$module$build$src$core$renderers$zelos$measurables$inputs=class extends StatementInput$$module$build$src$core$renderers$measurables$statement_input{constructor(a,b){super(a,b);this.connectedBottomNextConnection=!1;if(this.connectedBlock){for(a=this.connectedBlock;b=a.getNextBlock();)a=b;a.nextConnection||(this.height=this.connectedBlockHeight,this.connectedBottomNextConnection=!0)}}},module$build$src$core$renderers$zelos$measurables$inputs={};
1187
+ (this.isDirty_=!0)}applyColour(){if(this.sourceBlock_&&this.getConstants().FULL_BLOCK_FIELDS){var a=this.sourceBlock_;this.borderRect_?this.borderRect_.setAttribute("stroke",a.style.colourTertiary):a.pathObject.svgPath.setAttribute("fill",this.getConstants().FIELD_BORDER_RECT_COLOUR)}}render_(){super.render_();if(this.isBeingEdited_){this.resizeEditor_();const a=this.htmlInput_;this.isTextValid_?(removeClass$$module$build$src$core$utils$dom(a,"blocklyInvalidInput"),setState$$module$build$src$core$utils$aria(a,
1188
+ State$$module$build$src$core$utils$aria.INVALID,!1)):(addClass$$module$build$src$core$utils$dom(a,"blocklyInvalidInput"),setState$$module$build$src$core$utils$aria(a,State$$module$build$src$core$utils$aria.INVALID,!0))}}setSpellcheck(a){a!==this.spellcheck_&&(this.spellcheck_=a,this.htmlInput_&&this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}showEditor_(a,b){this.workspace_=this.sourceBlock_.workspace;a=b||!1;!a&&(MOBILE$$module$build$src$core$utils$useragent||ANDROID$$module$build$src$core$utils$useragent||
1189
+ IPAD$$module$build$src$core$utils$useragent)?this.showPromptEditor_():this.showInlineEditor_(a)}showPromptEditor_(){prompt$$module$build$src$core$dialog(Msg$$module$build$src$core$msg.CHANGE_VALUE_TITLE,this.getText(),a=>{null!==a&&this.setValue(this.getValueFromEditorText_(a))})}showInlineEditor_(a){const b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;show$$module$build$src$core$widgetdiv(this,b.RTL,this.widgetDispose_.bind(this));this.htmlInput_=this.widgetCreate_();
1190
+ this.isBeingEdited_=!0;a||(this.htmlInput_.focus({preventScroll:!0}),this.htmlInput_.select())}widgetCreate_(){var a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;setGroup$$module$build$src$core$events$utils(!0);const b=getDiv$$module$build$src$core$widgetdiv();var c=this.getClickTarget_();if(!c)throw Error("A click target has not been set.");addClass$$module$build$src$core$utils$dom(c,"editing");c=document.createElement("input");c.className="blocklyHtmlInput";
1191
+ c.setAttribute("spellcheck",this.spellcheck_);const d=this.workspace_.getScale();var e=this.getConstants().FIELD_TEXT_FONTSIZE*d+"pt";b.style.fontSize=e;c.style.fontSize=e;e=$.FieldTextInput$$module$build$src$core$field_textinput.BORDERRADIUS*d+"px";this.fullBlockClickTarget_&&(e=this.getScaledBBox(),e=(e.bottom-e.top)/2+"px",a=a.getParent()?a.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary,c.style.border=1*d+"px solid "+a,b.style.borderRadius=e,b.style.transition="box-shadow 0.25s ease 0s",
1192
+ this.getConstants().FIELD_TEXTINPUT_BOX_SHADOW&&(b.style.boxShadow="rgba(255, 255, 255, 0.3) 0 0 0 "+4*d+"px"));c.style.borderRadius=e;b.appendChild(c);c.value=c.defaultValue=this.getEditorText_(this.value_);c.setAttribute("data-untyped-default-value",this.value_);c.setAttribute("data-old-value","");this.resizeEditor_();this.bindInputEvents_(c);return c}widgetDispose_(){this.isBeingEdited_=!1;this.isTextValid_=!0;this.forceRerender();this.onFinishEditing_(this.value_);setGroup$$module$build$src$core$events$utils(!1);
1193
+ this.unbindInputEvents_();var a=getDiv$$module$build$src$core$widgetdiv().style;a.width="auto";a.height="auto";a.fontSize="";a.transition="";a.boxShadow="";this.htmlInput_=null;a=this.getClickTarget_();if(!a)throw Error("A click target has not been set.");removeClass$$module$build$src$core$utils$dom(a,"editing")}onFinishEditing_(a){}bindInputEvents_(a){this.onKeyDownWrapper_=conditionalBind$$module$build$src$core$browser_events(a,"keydown",this,this.onHtmlInputKeyDown_);this.onKeyInputWrapper_=conditionalBind$$module$build$src$core$browser_events(a,
1194
+ "input",this,this.onHtmlInputChange_)}unbindInputEvents_(){this.onKeyDownWrapper_&&(unbind$$module$build$src$core$browser_events(this.onKeyDownWrapper_),this.onKeyDownWrapper_=null);this.onKeyInputWrapper_&&(unbind$$module$build$src$core$browser_events(this.onKeyInputWrapper_),this.onKeyInputWrapper_=null)}onHtmlInputKeyDown_(a){a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.ENTER?(hide$$module$build$src$core$widgetdiv(),hideWithoutAnimation$$module$build$src$core$dropdowndiv()):a.keyCode===
1195
+ KeyCodes$$module$build$src$core$utils$keycodes.ESC?(this.setValue(this.htmlInput_.getAttribute("data-untyped-default-value")),hide$$module$build$src$core$widgetdiv(),hideWithoutAnimation$$module$build$src$core$dropdowndiv()):a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.TAB&&(hide$$module$build$src$core$widgetdiv(),hideWithoutAnimation$$module$build$src$core$dropdowndiv(),this.sourceBlock_.tab(this,!a.shiftKey),a.preventDefault())}onHtmlInputChange_(a){a=this.htmlInput_.value;a!==this.htmlInput_.getAttribute("data-old-value")&&
1196
+ (this.htmlInput_.setAttribute("data-old-value",a),a=this.getValueFromEditorText_(a),this.setValue(a),this.forceRerender(),this.resizeEditor_())}setEditorValue_(a){this.isDirty_=!0;this.isBeingEdited_&&(this.htmlInput_.value=this.getEditorText_(a));this.setValue(a)}resizeEditor_(){var a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$build$src$core$field;const b=getDiv$$module$build$src$core$widgetdiv(),c=this.getScaledBBox();b.style.width=c.right-c.left+"px";b.style.height=c.bottom-
1197
+ c.top+"px";a=new Coordinate$$module$build$src$core$utils$coordinate(a.RTL?c.right-b.offsetWidth:c.left,c.top);b.style.left=a.x+"px";b.style.top=a.y+"px"}isTabNavigable(){return!0}getText_(){return this.isBeingEdited_&&this.htmlInput_?this.htmlInput_.value:null}getEditorText_(a){return String(a)}getValueFromEditorText_(a){return a}static fromJson(a){return new this(replaceMessageReferences$$module$build$src$core$utils$parsing(a.text),void 0,a)}};
1198
+ $.FieldTextInput$$module$build$src$core$field_textinput.BORDERRADIUS=4;register$$module$build$src$core$field_registry("field_input",$.FieldTextInput$$module$build$src$core$field_textinput);$.FieldTextInput$$module$build$src$core$field_textinput.prototype.DEFAULT_VALUE="";var module$build$src$core$field_textinput={};module$build$src$core$field_textinput.FieldTextInput=$.FieldTextInput$$module$build$src$core$field_textinput;var BottomRow$$module$build$src$core$renderers$zelos$measurables$bottom_row=class extends BottomRow$$module$build$src$core$renderers$measurables$bottom_row{constructor(a){super(a)}endsWithElemSpacer(){return!1}hasLeftSquareCorner(a){return!!a.outputConnection}hasRightSquareCorner(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection}},module$build$src$core$renderers$zelos$measurables$bottom_row={};module$build$src$core$renderers$zelos$measurables$bottom_row.BottomRow=BottomRow$$module$build$src$core$renderers$zelos$measurables$bottom_row;var StatementInput$$module$build$src$core$renderers$zelos$measurables$inputs=class extends StatementInput$$module$build$src$core$renderers$measurables$statement_input{constructor(a,b){super(a,b);this.connectedBottomNextConnection=!1;if(this.connectedBlock){for(a=this.connectedBlock;b=a.getNextBlock();)a=b;a.nextConnection||(this.height=this.connectedBlockHeight,this.connectedBottomNextConnection=!0)}}},module$build$src$core$renderers$zelos$measurables$inputs={};
1192
1199
  module$build$src$core$renderers$zelos$measurables$inputs.StatementInput=StatementInput$$module$build$src$core$renderers$zelos$measurables$inputs;var RightConnectionShape$$module$build$src$core$renderers$zelos$measurables$row_elements=class extends Measurable$$module$build$src$core$renderers$measurables$base{constructor(a){super(a);this.width=this.height=0;this.type|=Types$$module$build$src$core$renderers$measurables$types.getType("RIGHT_CONNECTION")}},module$build$src$core$renderers$zelos$measurables$row_elements={};module$build$src$core$renderers$zelos$measurables$row_elements.RightConnectionShape=RightConnectionShape$$module$build$src$core$renderers$zelos$measurables$row_elements;var TopRow$$module$build$src$core$renderers$zelos$measurables$top_row=class extends TopRow$$module$build$src$core$renderers$measurables$top_row{constructor(a){super(a)}endsWithElemSpacer(){return!1}hasLeftSquareCorner(a){const b=(a.hat?"cap"===a.hat:this.constants_.ADD_START_HATS)&&!a.outputConnection&&!a.previousConnection;return!!a.outputConnection||b}hasRightSquareCorner(a){return!!a.outputConnection&&!a.statementInputCount&&!a.nextConnection}},module$build$src$core$renderers$zelos$measurables$top_row=
1193
1200
  {};module$build$src$core$renderers$zelos$measurables$top_row.TopRow=TopRow$$module$build$src$core$renderers$zelos$measurables$top_row;var RenderInfo$$module$build$src$core$renderers$zelos$info=class extends RenderInfo$$module$build$src$core$renderers$common$info{constructor(a,b){super(a,b);this.isInline=!0;this.renderer_=a;this.constants_=this.renderer_.getConstants();this.topRow=new TopRow$$module$build$src$core$renderers$zelos$measurables$top_row(this.constants_);this.bottomRow=new BottomRow$$module$build$src$core$renderers$zelos$measurables$bottom_row(this.constants_);this.isMultiRow=!b.getInputsInline()||b.isCollapsed();this.hasStatementInput=
1194
1201
  0<b.statementInputCount;this.rightSide=this.outputConnection?new RightConnectionShape$$module$build$src$core$renderers$zelos$measurables$row_elements(this.constants_):null;this.rightAlignedDummyInputs_=new WeakMap}getRenderer(){return this.renderer_}measure(){this.createRows_();this.addElemSpacing_();this.addRowSpacing_();this.adjustXPosition_();this.computeBounds_();this.alignRowElements_();this.finalize_()}shouldStartNewRow_(a,b){return b?a.type===inputTypes$$module$build$src$core$input_types.STATEMENT||
@@ -1214,12 +1221,11 @@ Types$$module$build$src$core$renderers$measurables$types.isInlineInput(c)&&c.con
1214
1221
  {};module$build$src$core$renderers$zelos$info.RenderInfo=RenderInfo$$module$build$src$core$renderers$zelos$info;var MarkerSvg$$module$build$src$core$renderers$zelos$marker_svg=class extends MarkerSvg$$module$build$src$core$renderers$common$marker_svg{constructor(a,b,c){super(a,b,c);this.markerCircle_=null}showWithInputOutput_(a){const b=a.getSourceBlock();a=a.getLocation().getOffsetInBlock();this.positionCircle_(a.x,a.y);this.setParent_(b);this.showCurrent_()}showWithOutput_(a){this.showWithInputOutput_(a)}showWithInput_(a){this.showWithInputOutput_(a)}showWithBlock_(a){a=a.getLocation();const b=a.getHeightWidth();
1215
1222
  this.positionRect_(0,0,b.width,b.height);this.setParent_(a);this.showCurrent_()}positionCircle_(a,b){let c;null==(c=this.markerCircle_)||c.setAttribute("cx",a.toString());let d;null==(d=this.markerCircle_)||d.setAttribute("cy",b.toString());this.currentMarkerSvg=this.markerCircle_}hide(){super.hide();this.markerCircle_&&(this.markerCircle_.style.display="none")}createDomInternal_(){super.createDomInternal_();this.markerCircle_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,
1216
1223
  {r:this.constants_.CURSOR_RADIUS,style:"display: none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){const a=this.getBlinkProperties_();createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.ANIMATE,a,this.markerCircle_)}return this.markerSvg_}applyColour_(a){super.applyColour_(a);let b;null==(b=this.markerCircle_)||b.setAttribute("fill",this.colour_);let c;null==(c=this.markerCircle_)||c.setAttribute("stroke",this.colour_);
1217
- if(this.isCursor()){a=this.colour_+";transparent;transparent;";let d;null==(d=this.markerCircle_)||d.firstElementChild.setAttribute("values",a)}}},module$build$src$core$renderers$zelos$marker_svg={};module$build$src$core$renderers$zelos$marker_svg.MarkerSvg=MarkerSvg$$module$build$src$core$renderers$zelos$marker_svg;var PathObject$$module$build$src$core$renderers$zelos$path_object=class extends PathObject$$module$build$src$core$renderers$common$path_object{constructor(a,b,c){super(a,b,c);this.svgPathSelected_=null;this.outlines=new Map;this.remainingOutlines=new Set;this.outputShapeType=null;this.constants=c}setPath(a){super.setPath(a);this.svgPathSelected_&&this.svgPathSelected_.setAttribute("d",a)}applyColour(a){super.applyColour(a);const b=a.getParent();if(a.isShadow()&&b){if(!b.style.colourTertiary)throw Error("The renderer did not properly initialize the block style");
1218
- this.svgPath.setAttribute("stroke",b.style.colourTertiary)}for(const c of this.outlines.values()){if(!this.style.colourTertiary)throw Error("The renderer did not properly initialize the block style");c.setAttribute("fill",this.style.colourTertiary)}}flipRTL(){super.flipRTL();for(const a of this.outlines.values())a.setAttribute("transform","scale(-1 1)")}updateSelected(a){this.setClass_("blocklySelected",a);a?this.svgPathSelected_||(this.svgPathSelected_=this.svgPath.cloneNode(!0),this.svgPathSelected_.setAttribute("fill",
1219
- "none"),this.svgPathSelected_.setAttribute("filter","url(#"+this.constants.selectedGlowFilterId+")"),this.svgRoot.appendChild(this.svgPathSelected_)):this.svgPathSelected_&&(this.svgRoot.removeChild(this.svgPathSelected_),this.svgPathSelected_=null)}updateReplacementFade(a){this.setClass_("blocklyReplaceable",a);a?this.svgPath.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):this.svgPath.removeAttribute("filter")}updateShapeForInputHighlight(a,b){a=a.getParentInput().name;
1220
- (a=this.getOutlinePath_(a))&&(b?a.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):a.removeAttribute("filter"))}beginDrawing(){this.remainingOutlines.clear();for(const a of this.outlines.keys())this.remainingOutlines.add(a)}endDrawing(){if(this.remainingOutlines.size)for(const a of this.remainingOutlines)this.removeOutlinePath_(a);this.remainingOutlines.clear()}setOutlinePath(a,b){a=this.getOutlinePath_(a);a.setAttribute("d",b);if(!this.style.colourTertiary)throw Error("The renderer did not properly initialize the block style");
1221
- a.setAttribute("fill",this.style.colourTertiary)}getOutlinePath_(a){this.outlines.has(a)||this.outlines.set(a,createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyOutlinePath",d:""},this.svgRoot));this.remainingOutlines.delete(a);return this.outlines.get(a)}removeOutlinePath_(a){let b,c;null==(b=this.outlines.get(a))||null==(c=b.parentNode)||c.removeChild(this.outlines.get(a));this.outlines.delete(a)}},module$build$src$core$renderers$zelos$path_object=
1222
- {};module$build$src$core$renderers$zelos$path_object.PathObject=PathObject$$module$build$src$core$renderers$zelos$path_object;var Renderer$$module$build$src$core$renderers$zelos$renderer=class extends Renderer$$module$build$src$core$renderers$common$renderer{constructor(a){super(a)}makeConstants_(){return new ConstantProvider$$module$build$src$core$renderers$zelos$constants}makeRenderInfo_(a){return new RenderInfo$$module$build$src$core$renderers$zelos$info(this,a)}makeDrawer_(a,b){return new Drawer$$module$build$src$core$renderers$zelos$drawer(a,b)}makeMarkerDrawer(a,b){return new MarkerSvg$$module$build$src$core$renderers$zelos$marker_svg(a,
1224
+ if(this.isCursor()){a=this.colour_+";transparent;transparent;";let d;null==(d=this.markerCircle_)||d.firstElementChild.setAttribute("values",a)}}},module$build$src$core$renderers$zelos$marker_svg={};module$build$src$core$renderers$zelos$marker_svg.MarkerSvg=MarkerSvg$$module$build$src$core$renderers$zelos$marker_svg;var PathObject$$module$build$src$core$renderers$zelos$path_object=class extends PathObject$$module$build$src$core$renderers$common$path_object{constructor(a,b,c){super(a,b,c);this.svgPathSelected_=null;this.outlines=new Map;this.remainingOutlines=new Set;this.outputShapeType=null;this.constants=c}setPath(a){super.setPath(a);this.svgPathSelected_&&this.svgPathSelected_.setAttribute("d",a)}applyColour(a){super.applyColour(a);const b=a.getParent();a.isShadow()&&b&&this.svgPath.setAttribute("stroke",
1225
+ b.style.colourTertiary);for(const c of this.outlines.values())c.setAttribute("fill",this.style.colourTertiary)}flipRTL(){super.flipRTL();for(const a of this.outlines.values())a.setAttribute("transform","scale(-1 1)")}updateSelected(a){this.setClass_("blocklySelected",a);a?this.svgPathSelected_||(this.svgPathSelected_=this.svgPath.cloneNode(!0),this.svgPathSelected_.setAttribute("fill","none"),this.svgPathSelected_.setAttribute("filter","url(#"+this.constants.selectedGlowFilterId+")"),this.svgRoot.appendChild(this.svgPathSelected_)):
1226
+ this.svgPathSelected_&&(this.svgRoot.removeChild(this.svgPathSelected_),this.svgPathSelected_=null)}updateReplacementFade(a){this.setClass_("blocklyReplaceable",a);a?this.svgPath.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):this.svgPath.removeAttribute("filter")}updateShapeForInputHighlight(a,b){a=a.getParentInput().name;(a=this.getOutlinePath_(a))&&(b?a.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):a.removeAttribute("filter"))}beginDrawing(){this.remainingOutlines.clear();
1227
+ for(const a of this.outlines.keys())this.remainingOutlines.add(a)}endDrawing(){if(this.remainingOutlines.size)for(const a of this.remainingOutlines)this.removeOutlinePath_(a);this.remainingOutlines.clear()}setOutlinePath(a,b){a=this.getOutlinePath_(a);a.setAttribute("d",b);a.setAttribute("fill",this.style.colourTertiary)}getOutlinePath_(a){this.outlines.has(a)||this.outlines.set(a,createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyOutlinePath",
1228
+ d:""},this.svgRoot));this.remainingOutlines.delete(a);return this.outlines.get(a)}removeOutlinePath_(a){let b,c;null==(b=this.outlines.get(a))||null==(c=b.parentNode)||c.removeChild(this.outlines.get(a));this.outlines.delete(a)}},module$build$src$core$renderers$zelos$path_object={};module$build$src$core$renderers$zelos$path_object.PathObject=PathObject$$module$build$src$core$renderers$zelos$path_object;var Renderer$$module$build$src$core$renderers$zelos$renderer=class extends Renderer$$module$build$src$core$renderers$common$renderer{constructor(a){super(a)}makeConstants_(){return new ConstantProvider$$module$build$src$core$renderers$zelos$constants}makeRenderInfo_(a){return new RenderInfo$$module$build$src$core$renderers$zelos$info(this,a)}makeDrawer_(a,b){return new Drawer$$module$build$src$core$renderers$zelos$drawer(a,b)}makeMarkerDrawer(a,b){return new MarkerSvg$$module$build$src$core$renderers$zelos$marker_svg(a,
1223
1229
  this.getConstants(),b)}makePathObject(a,b){return new PathObject$$module$build$src$core$renderers$zelos$path_object(a,b,this.getConstants())}getConstants(){return this.constants_}shouldHighlightConnection(a){return a.type!==ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE&&a.type!==ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE}getConnectionPreviewMethod(a,b,c){return b.type===ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE?a.isConnected()?InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.REPLACEMENT_FADE:
1224
1230
  InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INPUT_OUTLINE:super.getConnectionPreviewMethod(a,b,c)}};register$$module$build$src$core$renderers$common$block_rendering("zelos",Renderer$$module$build$src$core$renderers$zelos$renderer);var module$build$src$core$renderers$zelos$renderer={};module$build$src$core$renderers$zelos$renderer.Renderer=Renderer$$module$build$src$core$renderers$zelos$renderer;var module$build$src$core$renderers$zelos$zelos={};module$build$src$core$renderers$zelos$zelos.BottomRow=BottomRow$$module$build$src$core$renderers$zelos$measurables$bottom_row;module$build$src$core$renderers$zelos$zelos.ConstantProvider=ConstantProvider$$module$build$src$core$renderers$zelos$constants;module$build$src$core$renderers$zelos$zelos.Drawer=Drawer$$module$build$src$core$renderers$zelos$drawer;module$build$src$core$renderers$zelos$zelos.MarkerSvg=MarkerSvg$$module$build$src$core$renderers$zelos$marker_svg;
1225
1231
  module$build$src$core$renderers$zelos$zelos.PathObject=PathObject$$module$build$src$core$renderers$zelos$path_object;module$build$src$core$renderers$zelos$zelos.RenderInfo=RenderInfo$$module$build$src$core$renderers$zelos$info;module$build$src$core$renderers$zelos$zelos.Renderer=Renderer$$module$build$src$core$renderers$zelos$renderer;module$build$src$core$renderers$zelos$zelos.RightConnectionShape=RightConnectionShape$$module$build$src$core$renderers$zelos$measurables$row_elements;
@@ -1289,25 +1295,26 @@ module$build$src$core$renderers$geras$geras.StatementInput=StatementInput$$modul
1289
1295
  this.container.appendChild(this.SVG))}translateSurface(a,b){a=Math.round(a);b=Math.round(b);this.SVG.style.display="block";setCssTransform$$module$build$src$core$utils$dom(this.SVG,"translate3d("+a+"px, "+b+"px, 0)")}getSurfaceTranslation(){return getRelativeXY$$module$build$src$core$utils$svg_math(this.SVG)}clearAndHide(a){if(!a)throw Error("Couldn't clear and hide the drag surface: missing new surface.");const b=this.SVG.childNodes[0],c=this.SVG.childNodes[1];if(!b||!c||!b.classList.contains("blocklyBlockCanvas")&&
1290
1296
  c.classList.contains("blocklyBubbleCanvas"))throw Error("Couldn't clear and hide the drag surface. A node was missing.");null!==this.previousSibling?insertAfter$$module$build$src$core$utils$dom(b,this.previousSibling):a.insertBefore(b,a.firstChild);insertAfter$$module$build$src$core$utils$dom(c,b);this.SVG.style.display="none";if(this.SVG.childNodes.length)throw Error("Drag surface was not cleared.");setCssTransform$$module$build$src$core$utils$dom(this.SVG,"");this.previousSibling=null}setContentsAndShow(a,
1291
1297
  b,c,d,e,f){if(this.SVG.childNodes.length)throw Error("Already dragging a block.");this.previousSibling=c;a.setAttribute("transform","translate(0, 0) scale("+f+")");b.setAttribute("transform","translate(0, 0) scale("+f+")");this.SVG.setAttribute("width",String(d));this.SVG.setAttribute("height",String(e));this.SVG.appendChild(a);this.SVG.appendChild(b);this.SVG.style.display="block"}},module$build$src$core$workspace_drag_surface_svg={};
1292
- module$build$src$core$workspace_drag_surface_svg.WorkspaceDragSurfaceSvg=WorkspaceDragSurfaceSvg$$module$build$src$core$workspace_drag_surface_svg;var BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface=class{constructor(a){this.container=a;this.scale_=1;this.surfaceXY_=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.childSurfaceXY_=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.svg_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{xmlns:SVG_NS$$module$build$src$core$utils$dom,"xmlns:html":HTML_NS$$module$build$src$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$build$src$core$utils$dom,
1293
- version:"1.1","class":"blocklyBlockDragSurface"},this.container);this.dragGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{},this.svg_)}createDom(){warn$$module$build$src$core$utils$deprecation("BlockDragSurfaceSvg createDom","June 2022","June 2023")}setBlocksAndShow(a){if(this.dragGroup_.childNodes.length)throw Error("Already dragging a block.");this.dragGroup_.appendChild(a);this.svg_.style.display="block";this.surfaceXY_=new Coordinate$$module$build$src$core$utils$coordinate(0,
1294
- 0)}translateAndScaleGroup(a,b,c){this.scale_=c;a=Math.round(a);b=Math.round(b);this.childSurfaceXY_.x=a;this.childSurfaceXY_.y=b;this.dragGroup_.setAttribute("transform","translate("+a+","+b+") scale("+c+")")}translateSurfaceInternal_(){let a=this.surfaceXY_.x,b=this.surfaceXY_.y;a=Math.round(a);b=Math.round(b);this.svg_.style.display="block";setCssTransform$$module$build$src$core$utils$dom(this.svg_,"translate3d("+a+"px, "+b+"px, 0)")}translateBy(a,b){this.surfaceXY_=new Coordinate$$module$build$src$core$utils$coordinate(this.surfaceXY_.x+
1295
- a,this.surfaceXY_.y+b);this.translateSurfaceInternal_()}translateSurface(a,b){this.surfaceXY_=new Coordinate$$module$build$src$core$utils$coordinate(a*this.scale_,b*this.scale_);this.translateSurfaceInternal_()}getSurfaceTranslation(){const a=getRelativeXY$$module$build$src$core$utils$svg_math(this.svg_);return new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.scale_,a.y/this.scale_)}getGroup(){return this.dragGroup_}getSvgRoot(){return this.svg_}getCurrentBlock(){return this.dragGroup_.firstChild}getWsTranslation(){return this.childSurfaceXY_.clone()}clearAndHide(a){const b=
1296
- this.getCurrentBlock();b&&(a?a.appendChild(b):this.dragGroup_.removeChild(b));this.svg_.style.display="none";if(this.dragGroup_.childNodes.length)throw Error("Drag group was not cleared.");this.surfaceXY_=new Coordinate$$module$build$src$core$utils$coordinate(0,0)}},module$build$src$core$block_drag_surface={};module$build$src$core$block_drag_surface.BlockDragSurfaceSvg=BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface;var bumpIntoBounds$$module$build$src$core$bump_objects=bumpObjectIntoBounds$$module$build$src$core$bump_objects,module$build$src$core$bump_objects={};module$build$src$core$bump_objects.bumpIntoBounds=bumpObjectIntoBounds$$module$build$src$core$bump_objects;module$build$src$core$bump_objects.bumpIntoBoundsHandler=bumpIntoBoundsHandler$$module$build$src$core$bump_objects;module$build$src$core$bump_objects.bumpTopObjectsIntoBounds=bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects;var ScrollbarPair$$module$build$src$core$scrollbar_pair=class{constructor(a,b,c,d,e){this.workspace=a;this.oldHostMetrics_=this.corner_=this.vScroll=this.hScroll=null;b=void 0===b?!0:b;c=void 0===c?!0:c;const f=b&&c;b&&(this.hScroll=new Scrollbar$$module$build$src$core$scrollbar(a,!0,f,d,e));c&&(this.vScroll=new Scrollbar$$module$build$src$core$scrollbar(a,!1,f,d,e));f&&(this.corner_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{height:Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness,
1298
+ module$build$src$core$workspace_drag_surface_svg.WorkspaceDragSurfaceSvg=WorkspaceDragSurfaceSvg$$module$build$src$core$workspace_drag_surface_svg;var BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface=class{constructor(a){this.container=a;this.scale=1;this.surfaceXY=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.childSurfaceXY=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.svg=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{xmlns:SVG_NS$$module$build$src$core$utils$dom,"xmlns:html":HTML_NS$$module$build$src$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$build$src$core$utils$dom,
1299
+ version:"1.1","class":"blocklyBlockDragSurface"},this.container);this.dragGroup=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{},this.svg)}createDom(){warn$$module$build$src$core$utils$deprecation("BlockDragSurfaceSvg createDom","June 2022","June 2023")}setBlocksAndShow(a){if(this.dragGroup.childNodes.length)throw Error("Already dragging a block.");this.dragGroup.appendChild(a);this.svg.style.display="block";this.surfaceXY=new Coordinate$$module$build$src$core$utils$coordinate(0,
1300
+ 0)}translateAndScaleGroup(a,b,c){this.scale=c;a=Math.round(a);b=Math.round(b);this.childSurfaceXY.x=a;this.childSurfaceXY.y=b;this.dragGroup.setAttribute("transform","translate("+a+","+b+") scale("+c+")")}translateSurfaceInternal_(){const a=Math.round(this.surfaceXY.x),b=Math.round(this.surfaceXY.y);this.svg.style.display="block";setCssTransform$$module$build$src$core$utils$dom(this.svg,"translate3d("+a+"px, "+b+"px, 0)")}translateBy(a,b){this.surfaceXY=new Coordinate$$module$build$src$core$utils$coordinate(this.surfaceXY.x+
1301
+ a,this.surfaceXY.y+b);this.translateSurfaceInternal_()}translateSurface(a,b){this.surfaceXY=new Coordinate$$module$build$src$core$utils$coordinate(a*this.scale,b*this.scale);this.translateSurfaceInternal_()}getSurfaceTranslation(){const a=getRelativeXY$$module$build$src$core$utils$svg_math(this.svg);return new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.scale,a.y/this.scale)}getGroup(){return this.dragGroup}getSvgRoot(){return this.svg}getCurrentBlock(){return this.dragGroup.firstChild}getWsTranslation(){return this.childSurfaceXY.clone()}clearAndHide(a){const b=
1302
+ this.getCurrentBlock();b&&(a?a.appendChild(b):this.dragGroup.removeChild(b));this.svg.style.display="none";if(this.dragGroup.childNodes.length)throw Error("Drag group was not cleared.");this.surfaceXY=new Coordinate$$module$build$src$core$utils$coordinate(0,0)}},module$build$src$core$block_drag_surface={};module$build$src$core$block_drag_surface.BlockDragSurfaceSvg=BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface;var bumpIntoBounds$$module$build$src$core$bump_objects=bumpObjectIntoBounds$$module$build$src$core$bump_objects,module$build$src$core$bump_objects={};module$build$src$core$bump_objects.bumpIntoBounds=bumpObjectIntoBounds$$module$build$src$core$bump_objects;module$build$src$core$bump_objects.bumpIntoBoundsHandler=bumpIntoBoundsHandler$$module$build$src$core$bump_objects;module$build$src$core$bump_objects.bumpTopObjectsIntoBounds=bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects;var ScrollbarPair$$module$build$src$core$scrollbar_pair=class{constructor(a,b,c,d,e){this.workspace=a;this.oldHostMetrics_=this.corner_=this.vScroll=this.hScroll=null;b=void 0===b?!0:b;c=void 0===c?!0:c;const f=b&&c;b&&(this.hScroll=new Scrollbar$$module$build$src$core$scrollbar(a,!0,f,d,e));c&&(this.vScroll=new Scrollbar$$module$build$src$core$scrollbar(a,!1,f,d,e));f&&(this.corner_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{height:Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness,
1297
1303
  width:Scrollbar$$module$build$src$core$scrollbar.scrollbarThickness,"class":"blocklyScrollbarBackground"}),insertAfter$$module$build$src$core$utils$dom(this.corner_,a.getBubbleCanvas()))}dispose(){removeNode$$module$build$src$core$utils$dom(this.corner_);this.oldHostMetrics_=this.corner_=null;this.hScroll&&(this.hScroll.dispose(),this.hScroll=null);this.vScroll&&(this.vScroll.dispose(),this.vScroll=null)}resize(){const a=this.workspace.getMetrics();if(a){var b=!1,c=!1;this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth===
1298
1304
  a.viewWidth&&this.oldHostMetrics_.viewHeight===a.viewHeight&&this.oldHostMetrics_.absoluteTop===a.absoluteTop&&this.oldHostMetrics_.absoluteLeft===a.absoluteLeft?(this.oldHostMetrics_&&this.oldHostMetrics_.scrollWidth===a.scrollWidth&&this.oldHostMetrics_.viewLeft===a.viewLeft&&this.oldHostMetrics_.scrollLeft===a.scrollLeft||(b=!0),this.oldHostMetrics_&&this.oldHostMetrics_.scrollHeight===a.scrollHeight&&this.oldHostMetrics_.viewTop===a.viewTop&&this.oldHostMetrics_.scrollTop===a.scrollTop||(c=!0)):
1299
1305
  c=b=!0;if(b||c){try{disable$$module$build$src$core$events$utils(),this.hScroll&&b&&this.hScroll.resize(a),this.vScroll&&c&&this.vScroll.resize(a)}finally{enable$$module$build$src$core$events$utils()}this.workspace.maybeFireViewportChangeEvent()}if(this.hScroll&&this.vScroll){if(!this.oldHostMetrics_||this.oldHostMetrics_.viewWidth!==a.viewWidth||this.oldHostMetrics_.absoluteLeft!==a.absoluteLeft){let d;null==(d=this.corner_)||d.setAttribute("x",String(this.vScroll.position.x))}if(!this.oldHostMetrics_||
1300
1306
  this.oldHostMetrics_.viewHeight!==a.viewHeight||this.oldHostMetrics_.absoluteTop!==a.absoluteTop){let d;null==(d=this.corner_)||d.setAttribute("y",String(this.hScroll.position.y))}}this.oldHostMetrics_=a}}canScrollHorizontally(){return!!this.hScroll}canScrollVertically(){return!!this.vScroll}setOrigin(a,b){this.hScroll&&this.hScroll.setOrigin(a,b);this.vScroll&&this.vScroll.setOrigin(a,b)}set(a,b,c){this.hScroll&&this.hScroll.set(a,!1);this.vScroll&&this.vScroll.set(b,!1);if(c||void 0===c)a={},this.hScroll&&
1301
1307
  (a.x=this.hScroll.getRatio_()),this.vScroll&&(a.y=this.vScroll.getRatio_()),this.workspace.setMetrics(a)}setX(a){this.hScroll&&this.hScroll.set(a,!0)}setY(a){this.vScroll&&this.vScroll.set(a,!0)}setContainerVisible(a){this.hScroll&&this.hScroll.setContainerVisible(a);this.vScroll&&this.vScroll.setContainerVisible(a)}isVisible(){let a=!1;this.hScroll&&(a=this.hScroll.isVisible());this.vScroll&&(a=a||this.vScroll.isVisible());return a}resizeContent(a){this.hScroll&&this.hScroll.resizeContentHorizontal(a);
1302
- this.vScroll&&this.vScroll.resizeContentVertical(a)}resizeView(a){this.hScroll&&this.hScroll.resizeViewHorizontal(a);this.vScroll&&this.vScroll.resizeViewVertical(a)}},module$build$src$core$scrollbar_pair={};module$build$src$core$scrollbar_pair.ScrollbarPair=ScrollbarPair$$module$build$src$core$scrollbar_pair;var documentEventsBound$$module$build$src$core$inject=!1,module$build$src$core$inject={};module$build$src$core$inject.inject=inject$$module$build$src$core$inject;$.Generator$$module$build$src$core$generator=class{constructor(a){this.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}";this.STATEMENT_SUFFIX=this.STATEMENT_PREFIX=this.INFINITE_LOOP_TRAP=null;this.INDENT=" ";this.COMMENT_WRAP=60;this.ORDER_OVERRIDES=[];this.isInitialized=null;this.RESERVED_WORDS_="";this.definitions_=Object.create(null);this.functionNames_=Object.create(null);this.nameDB_=void 0;this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g")}workspaceToCode(a){a||
1303
- (console.warn("No workspace specified in workspaceToCode call. Guessing."),a=getMainWorkspace$$module$build$src$core$common());var b=[];this.init(a);a=a.getTopBlocks(!0);for(let c=0,d;d=a[c];c++){let e=this.blockToCode(d);Array.isArray(e)&&(e=e[0]);e&&(d.outputConnection&&(e=this.scrubNakedValue(e),this.STATEMENT_PREFIX&&!d.suppressPrefixSuffix&&(e=this.injectId(this.STATEMENT_PREFIX,d)+e),this.STATEMENT_SUFFIX&&!d.suppressPrefixSuffix&&(e+=this.injectId(this.STATEMENT_SUFFIX,d))),b.push(e))}b=b.join("\n");
1304
- b=this.finish(b);b=b.replace(/^\s+\n/,"");b=b.replace(/\n\s+$/,"\n");return b=b.replace(/[ \t]+\n/g,"\n")}prefixLines(a,b){return b+a.replace(/(?!\n$)\n/g,"\n"+b)}allNestedComments(a){const b=[];a=a.getDescendants(!0);for(let c=0;c<a.length;c++){const d=a[c].getCommentText();d&&b.push(d)}b.length&&b.push("");return b.join("\n")}blockToCode(a,b){!1===this.isInitialized&&console.warn("Generator init was not called before blockToCode was called.");if(!a)return"";if(!a.isEnabled())return b?"":this.blockToCode(a.getNextBlock());
1305
- if(a.isInsertionMarker())return b?"":this.blockToCode(a.getChildren(!1)[0]);var c=this[a.type];if("function"!==typeof c)throw Error('Language "'+this.name_+'" does not know how to generate code for block type "'+a.type+'".');c=c.call(a,a);if(Array.isArray(c)){if(!a.outputConnection)throw TypeError("Expecting string from statement block: "+a.type);return[this.scrub_(a,c[0],b),c[1]]}if("string"===typeof c)return this.STATEMENT_PREFIX&&!a.suppressPrefixSuffix&&(c=this.injectId(this.STATEMENT_PREFIX,
1306
- a)+c),this.STATEMENT_SUFFIX&&!a.suppressPrefixSuffix&&(c+=this.injectId(this.STATEMENT_SUFFIX,a)),this.scrub_(a,c,b);if(null===c)return"";throw SyntaxError("Invalid code generated: "+c);}valueToCode(a,b,c){if(isNaN(c))throw TypeError("Expecting valid order from block: "+a.type);var d=a.getInputTargetBlock(b);if(!d)return"";b=this.blockToCode(d);if(""===b)return"";if(!Array.isArray(b))throw TypeError("Expecting tuple from value block: "+d.type);a=b[0];b=b[1];if(isNaN(b))throw TypeError("Expecting valid order from value block: "+
1308
+ this.vScroll&&this.vScroll.resizeContentVertical(a)}resizeView(a){this.hScroll&&this.hScroll.resizeViewHorizontal(a);this.vScroll&&this.vScroll.resizeViewVertical(a)}},module$build$src$core$scrollbar_pair={};module$build$src$core$scrollbar_pair.ScrollbarPair=ScrollbarPair$$module$build$src$core$scrollbar_pair;var documentEventsBound$$module$build$src$core$inject=!1,module$build$src$core$inject={};module$build$src$core$inject.inject=inject$$module$build$src$core$inject;$.CodeGenerator$$module$build$src$core$generator=class{constructor(a){this.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}";this.STATEMENT_SUFFIX=this.STATEMENT_PREFIX=this.INFINITE_LOOP_TRAP=null;this.INDENT=" ";this.COMMENT_WRAP=60;this.ORDER_OVERRIDES=[];this.isInitialized=null;this.RESERVED_WORDS_="";this.definitions_=Object.create(null);this.functionNames_=Object.create(null);this.nameDB_=void 0;this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,
1309
+ "g")}workspaceToCode(a){a||(console.warn("No workspace specified in workspaceToCode call. Guessing."),a=getMainWorkspace$$module$build$src$core$common());var b=[];this.init(a);a=a.getTopBlocks(!0);for(let c=0,d;d=a[c];c++){let e=this.blockToCode(d);Array.isArray(e)&&(e=e[0]);e&&(d.outputConnection&&(e=this.scrubNakedValue(e),this.STATEMENT_PREFIX&&!d.suppressPrefixSuffix&&(e=this.injectId(this.STATEMENT_PREFIX,d)+e),this.STATEMENT_SUFFIX&&!d.suppressPrefixSuffix&&(e+=this.injectId(this.STATEMENT_SUFFIX,
1310
+ d))),b.push(e))}b=b.join("\n");b=this.finish(b);b=b.replace(/^\s+\n/,"");b=b.replace(/\n\s+$/,"\n");return b=b.replace(/[ \t]+\n/g,"\n")}prefixLines(a,b){return b+a.replace(/(?!\n$)\n/g,"\n"+b)}allNestedComments(a){const b=[];a=a.getDescendants(!0);for(let c=0;c<a.length;c++){const d=a[c].getCommentText();d&&b.push(d)}b.length&&b.push("");return b.join("\n")}blockToCode(a,b){!1===this.isInitialized&&console.warn("CodeGenerator init was not called before blockToCode was called.");if(!a)return"";if(!a.isEnabled())return b?
1311
+ "":this.blockToCode(a.getNextBlock());if(a.isInsertionMarker())return b?"":this.blockToCode(a.getChildren(!1)[0]);var c=this[a.type];if("function"!==typeof c)throw Error('Language "'+this.name_+'" does not know how to generate code for block type "'+a.type+'".');c=c.call(a,a);if(Array.isArray(c)){if(!a.outputConnection)throw TypeError("Expecting string from statement block: "+a.type);return[this.scrub_(a,c[0],b),c[1]]}if("string"===typeof c)return this.STATEMENT_PREFIX&&!a.suppressPrefixSuffix&&(c=
1312
+ this.injectId(this.STATEMENT_PREFIX,a)+c),this.STATEMENT_SUFFIX&&!a.suppressPrefixSuffix&&(c+=this.injectId(this.STATEMENT_SUFFIX,a)),this.scrub_(a,c,b);if(null===c)return"";throw SyntaxError("Invalid code generated: "+c);}valueToCode(a,b,c){if(isNaN(c))throw TypeError("Expecting valid order from block: "+a.type);var d=a.getInputTargetBlock(b);if(!d)return"";b=this.blockToCode(d);if(""===b)return"";if(!Array.isArray(b))throw TypeError("Expecting tuple from value block: "+d.type);a=b[0];b=b[1];if(isNaN(b))throw TypeError("Expecting valid order from value block: "+
1307
1313
  d.type);if(!a)return"";d=!1;var e=Math.floor(c);const f=Math.floor(b);if(e<=f&&(e!==f||0!==e&&99!==e))for(d=!0,e=0;e<this.ORDER_OVERRIDES.length;e++)if(this.ORDER_OVERRIDES[e][0]===c&&this.ORDER_OVERRIDES[e][1]===b){d=!1;break}d&&(a="("+a+")");return a}statementToCode(a,b){a=a.getInputTargetBlock(b);b=this.blockToCode(a);if("string"!==typeof b)throw TypeError("Expecting code from statement block: "+(a&&a.type));b&&(b=this.prefixLines(b,this.INDENT));return b}addLoopTrap(a,b){this.INFINITE_LOOP_TRAP&&
1308
1314
  (a=this.prefixLines(this.injectId(this.INFINITE_LOOP_TRAP,b),this.INDENT)+a);this.STATEMENT_SUFFIX&&!b.suppressPrefixSuffix&&(a=this.prefixLines(this.injectId(this.STATEMENT_SUFFIX,b),this.INDENT)+a);this.STATEMENT_PREFIX&&!b.suppressPrefixSuffix&&(a+=this.prefixLines(this.injectId(this.STATEMENT_PREFIX,b),this.INDENT));return a}injectId(a,b){b=b.id.replace(/\$/g,"$$$$");return a.replace(/%1/g,"'"+b+"'")}addReservedWords(a){this.RESERVED_WORDS_+=a+","}provideFunction_(a,b){if(!this.definitions_[a]){const c=
1309
1315
  this.nameDB_.getDistinctName(a,$.NameType$$module$build$src$core$names.PROCEDURE);this.functionNames_[a]=c;Array.isArray(b)&&(b=b.join("\n"));b=b.trim().replace(this.FUNCTION_NAME_PLACEHOLDER_REGEXP_,c);let d;for(;d!==b;)d=b,b=b.replace(/^(( {2})*) {2}/gm,"$1\x00");b=b.replace(/\0/g,this.INDENT);this.definitions_[a]=b}return this.functionNames_[a]}init(a){this.definitions_=Object.create(null);this.functionNames_=Object.create(null)}scrub_(a,b,c){return b}finish(a){this.definitions_=Object.create(null);
1310
- this.functionNames_=Object.create(null);return a}scrubNakedValue(a){return a}};Object.defineProperties($.Generator$$module$build$src$core$generator.prototype,{variableDB_:{get(){warn$$module$build$src$core$utils$deprecation("variableDB_","version 9","version 10","nameDB_");return this.nameDB_},set(a){warn$$module$build$src$core$utils$deprecation("variableDB_","version 9","version 10","nameDB_");this.nameDB_=a}}});var module$build$src$core$generator={};module$build$src$core$generator.Generator=$.Generator$$module$build$src$core$generator;var FlyoutButton$$module$build$src$core$flyout_button=class{constructor(a,b,c,d){this.workspace=a;this.targetWorkspace=b;this.isLabel_=d;this.onMouseUpWrapper_=null;this.height=this.width=0;this.svgText_=this.svgGroup_=null;this.text_=c.text;this.position_=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.callbackKey_=c.callbackKey||c.callbackkey;this.cssClass_=c["web-class"]||null;this.info=c}createDom(){var a=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&&
1316
+ this.functionNames_=Object.create(null);return a}scrubNakedValue(a){return a}};Object.defineProperties($.CodeGenerator$$module$build$src$core$generator.prototype,{variableDB_:{get(){warn$$module$build$src$core$utils$deprecation("variableDB_","version 9","version 10","nameDB_");return this.nameDB_},set(a){warn$$module$build$src$core$utils$deprecation("variableDB_","version 9","version 10","nameDB_");this.nameDB_=a}}});var module$build$src$core$generator={};
1317
+ module$build$src$core$generator.CodeGenerator=$.CodeGenerator$$module$build$src$core$generator;var FlyoutButton$$module$build$src$core$flyout_button=class{constructor(a,b,c,d){this.workspace=a;this.targetWorkspace=b;this.isLabel_=d;this.onMouseUpWrapper_=null;this.height=this.width=0;this.svgText_=this.svgGroup_=null;this.text_=c.text;this.position_=new Coordinate$$module$build$src$core$utils$coordinate(0,0);this.callbackKey_=c.callbackKey||c.callbackkey;this.cssClass_=c["web-class"]||null;this.info=c}createDom(){var a=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&&
1311
1318
  (a+=" "+this.cssClass_);this.svgGroup_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.G,{"class":a},this.workspace.getCanvas());let b;this.isLabel_||(b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1,y:1},this.svgGroup_));a=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":this.isLabel_?"blocklyFlyoutLabelBackground":
1312
1319
  "blocklyFlyoutButtonBackground",rx:4,ry:4},this.svgGroup_);const c=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TEXT,{"class":this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_);var d=replaceMessageReferences$$module$build$src$core$utils$parsing(this.text_);this.workspace.RTL&&(d+="\u200f");c.textContent=d;this.isLabel_&&(this.svgText_=c,this.workspace.getThemeManager().subscribe(this.svgText_,"flyoutForegroundColour",
1313
1320
  "fill"));const e=getComputedStyle$$module$build$src$core$utils$style(c,"fontSize"),f=getComputedStyle$$module$build$src$core$utils$style(c,"fontWeight"),g=getComputedStyle$$module$build$src$core$utils$style(c,"fontFamily");this.width=getFastTextWidthWithSizeString$$module$build$src$core$utils$dom(c,e,f,g);d=measureFontMetrics$$module$build$src$core$utils$dom(d,e,f,g);this.height=d.height;if(!this.isLabel_){this.width+=2*FlyoutButton$$module$build$src$core$flyout_button.TEXT_MARGIN_X;this.height+=
@@ -1411,21 +1418,20 @@ FieldColour$$module$build$src$core$field_colour.TITLES=[];FieldColour$$module$bu
1411
1418
  register$$module$build$src$core$field_registry("field_colour",FieldColour$$module$build$src$core$field_colour);var module$build$src$core$field_colour={};module$build$src$core$field_colour.FieldColour=FieldColour$$module$build$src$core$field_colour;$.FieldCheckbox$$module$build$src$core$field_checkbox=class extends Field$$module$build$src$core$field{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.SERIALIZABLE=!0;this.CURSOR="default";this.checkChar_=$.FieldCheckbox$$module$build$src$core$field_checkbox.CHECK_CHAR;a!==Field$$module$build$src$core$field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}configure_(a){super.configure_(a);a.checkCharacter&&(this.checkChar_=a.checkCharacter)}saveState(){const a=
1412
1419
  this.saveLegacyState($.FieldCheckbox$$module$build$src$core$field_checkbox);return null!==a?a:this.getValueBoolean()}initView(){super.initView();const a=this.getTextElement();addClass$$module$build$src$core$utils$dom(a,"blocklyCheckbox");a.style.display=this.value_?"block":"none"}render_(){this.textContent_&&(this.textContent_.nodeValue=this.getDisplayText_());this.updateSize_(this.getConstants().FIELD_CHECKBOX_X_OFFSET)}getDisplayText_(){return this.checkChar_}setCheckCharacter(a){this.checkChar_=
1413
1420
  a||$.FieldCheckbox$$module$build$src$core$field_checkbox.CHECK_CHAR;this.forceRerender()}showEditor_(){this.setValue(!this.value_)}doClassValidation_(a){return!0===a||"TRUE"===a?"TRUE":!1===a||"FALSE"===a?"FALSE":null}doValueUpdate_(a){this.value_=this.convertValueToBool_(a);this.textElement_&&(this.textElement_.style.display=this.value_?"block":"none")}getValue(){return this.value_?"TRUE":"FALSE"}getValueBoolean(){return this.value_}getText(){return String(this.convertValueToBool_(this.value_))}convertValueToBool_(a){return"string"===
1414
- typeof a?"TRUE"===a:!!a}static fromJson(a){return new this(a.checked,void 0,a)}};$.FieldCheckbox$$module$build$src$core$field_checkbox.CHECK_CHAR="\u2713";register$$module$build$src$core$field_registry("field_checkbox",$.FieldCheckbox$$module$build$src$core$field_checkbox);$.FieldCheckbox$$module$build$src$core$field_checkbox.prototype.DEFAULT_VALUE=!1;var module$build$src$core$field_checkbox={};module$build$src$core$field_checkbox.FieldCheckbox=$.FieldCheckbox$$module$build$src$core$field_checkbox;var FieldAngle$$module$build$src$core$field_angle=class extends $.FieldTextInput$$module$build$src$core$field_textinput{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.moveSurfaceWrapper_=this.clickSurfaceWrapper_=this.clickWrapper_=this.symbol_=this.line_=this.gauge_=this.editor_=null;this.SERIALIZABLE=!0;this.clockwise_=FieldAngle$$module$build$src$core$field_angle.CLOCKWISE;this.offset_=FieldAngle$$module$build$src$core$field_angle.OFFSET;this.wrap_=FieldAngle$$module$build$src$core$field_angle.WRAP;
1415
- this.round_=FieldAngle$$module$build$src$core$field_angle.ROUND;a!==Field$$module$build$src$core$field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}configure_(a){super.configure_(a);switch(a.mode){case Mode$$module$build$src$core$field_angle.COMPASS:this.clockwise_=!0;this.offset_=90;break;case Mode$$module$build$src$core$field_angle.PROTRACTOR:this.clockwise_=!1,this.offset_=0}a.clockwise&&(this.clockwise_=a.clockwise);a.offset&&(this.offset_=a.offset);a.wrap&&(this.wrap_=
1416
- a.wrap);a.round&&(this.round_=a.round)}initView(){super.initView();this.symbol_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TSPAN,{});this.symbol_.appendChild(document.createTextNode("\u00b0"));this.getTextElement().appendChild(this.symbol_)}render_(){super.render_();this.updateGraph_()}showEditor_(a){super.showEditor_(a,MOBILE$$module$build$src$core$utils$useragent||ANDROID$$module$build$src$core$utils$useragent||IPAD$$module$build$src$core$utils$useragent);
1417
- this.dropdownCreate_();getContentDiv$$module$build$src$core$dropdowndiv().appendChild(this.editor_);if(this.sourceBlock_ instanceof BlockSvg$$module$build$src$core$block_svg){if(!this.sourceBlock_.style.colourTertiary)throw Error("The renderer did not properly initialize the block style");setColour$$module$build$src$core$dropdowndiv(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary)}showPositionedByField$$module$build$src$core$dropdowndiv(this,this.dropdownDispose_.bind(this));
1418
- this.updateGraph_()}dropdownCreate_(){const a=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,{xmlns:SVG_NS$$module$build$src$core$utils$dom,"xmlns:html":HTML_NS$$module$build$src$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$build$src$core$utils$dom,version:"1.1",height:2*FieldAngle$$module$build$src$core$field_angle.HALF+"px",width:2*FieldAngle$$module$build$src$core$field_angle.HALF+"px",style:"touch-action: none"}),b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,
1419
- {cx:FieldAngle$$module$build$src$core$field_angle.HALF,cy:FieldAngle$$module$build$src$core$field_angle.HALF,r:FieldAngle$$module$build$src$core$field_angle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyAngleGauge"},a);this.line_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{x1:FieldAngle$$module$build$src$core$field_angle.HALF,y1:FieldAngle$$module$build$src$core$field_angle.HALF,
1420
- "class":"blocklyAngleLine"},a);for(let c=0;360>c;c+=15)createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{x1:FieldAngle$$module$build$src$core$field_angle.HALF+FieldAngle$$module$build$src$core$field_angle.RADIUS,y1:FieldAngle$$module$build$src$core$field_angle.HALF,x2:FieldAngle$$module$build$src$core$field_angle.HALF+FieldAngle$$module$build$src$core$field_angle.RADIUS-(0===c%45?10:5),y2:FieldAngle$$module$build$src$core$field_angle.HALF,"class":"blocklyAngleMarks",
1421
- transform:"rotate("+c+","+FieldAngle$$module$build$src$core$field_angle.HALF+","+FieldAngle$$module$build$src$core$field_angle.HALF+")"},a);this.clickWrapper_=conditionalBind$$module$build$src$core$browser_events(a,"click",this,this.hide_);this.clickSurfaceWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"click",this,this.onMouseMove_,!0,!0);this.moveSurfaceWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"mousemove",this,this.onMouseMove_,!0,!0);this.editor_=a}dropdownDispose_(){this.clickWrapper_&&
1422
- (unbind$$module$build$src$core$browser_events(this.clickWrapper_),this.clickWrapper_=null);this.clickSurfaceWrapper_&&(unbind$$module$build$src$core$browser_events(this.clickSurfaceWrapper_),this.clickSurfaceWrapper_=null);this.moveSurfaceWrapper_&&(unbind$$module$build$src$core$browser_events(this.moveSurfaceWrapper_),this.moveSurfaceWrapper_=null);this.line_=this.gauge_=null}hide_(){hideIfOwner$$module$build$src$core$dropdowndiv(this);hide$$module$build$src$core$widgetdiv()}onMouseMove_(a){var b=
1423
- this.gauge_.ownerSVGElement.getBoundingClientRect();const c=a.clientX-b.left-FieldAngle$$module$build$src$core$field_angle.HALF;a=a.clientY-b.top-FieldAngle$$module$build$src$core$field_angle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=toDegrees$$module$build$src$core$utils$math(b),0>c?b+=180:0<a&&(b+=360),b=this.clockwise_?this.offset_+360-b:360-(this.offset_-b),this.displayMouseOrKeyboardValue_(b))}displayMouseOrKeyboardValue_(a){this.round_&&(a=Math.round(a/this.round_)*this.round_);a=this.wrapValue_(a);
1424
- a!==this.value_&&this.setEditorValue_(a)}updateGraph_(){if(this.gauge_){var a=Number(this.getText())+this.offset_,b=toRadians$$module$build$src$core$utils$math(a%360);a=["M ",FieldAngle$$module$build$src$core$field_angle.HALF,",",FieldAngle$$module$build$src$core$field_angle.HALF];var c=FieldAngle$$module$build$src$core$field_angle.HALF,d=FieldAngle$$module$build$src$core$field_angle.HALF;if(!isNaN(b)){const e=Number(this.clockwise_),f=toRadians$$module$build$src$core$utils$math(this.offset_),g=Math.cos(f)*
1425
- FieldAngle$$module$build$src$core$field_angle.RADIUS,h=Math.sin(f)*-FieldAngle$$module$build$src$core$field_angle.RADIUS;e&&(b=2*f-b);c+=Math.cos(b)*FieldAngle$$module$build$src$core$field_angle.RADIUS;d-=Math.sin(b)*FieldAngle$$module$build$src$core$field_angle.RADIUS;b=Math.abs(Math.floor((b-f)/Math.PI)%2);e&&(b=1-b);a.push(" l ",g,",",h," A ",FieldAngle$$module$build$src$core$field_angle.RADIUS,",",FieldAngle$$module$build$src$core$field_angle.RADIUS," 0 ",b," ",e," ",c,",",d," z")}this.gauge_.setAttribute("d",
1426
- a.join(""));this.line_.setAttribute("x2",c);this.line_.setAttribute("y2",d)}}onHtmlInputKeyDown_(a){super.onHtmlInputKeyDown_(a);var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;let c;a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.LEFT?c=b.RTL?1:-1:a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.RIGHT?c=b.RTL?-1:1:a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.DOWN?c=-1:a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.UP&&
1427
- (c=1);c&&(b=this.getValue(),this.displayMouseOrKeyboardValue_(b+c*this.round_),a.preventDefault(),a.stopPropagation())}doClassValidation_(a){a=Number(a);return isNaN(a)||!isFinite(a)?null:this.wrapValue_(a)}wrapValue_(a){a%=360;0>a&&(a+=360);a>this.wrap_&&(a-=360);return a}static fromJson(a){return new this(a.angle,void 0,a)}};FieldAngle$$module$build$src$core$field_angle.ROUND=15;FieldAngle$$module$build$src$core$field_angle.HALF=50;FieldAngle$$module$build$src$core$field_angle.CLOCKWISE=!1;
1428
- FieldAngle$$module$build$src$core$field_angle.OFFSET=0;FieldAngle$$module$build$src$core$field_angle.WRAP=360;FieldAngle$$module$build$src$core$field_angle.RADIUS=FieldAngle$$module$build$src$core$field_angle.HALF-1;register$$module$build$src$core$css("\n.blocklyAngleCircle {\n stroke: #444;\n stroke-width: 1;\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyAngleMarks {\n stroke: #444;\n stroke-width: 1;\n}\n\n.blocklyAngleGauge {\n fill: #f88;\n fill-opacity: .8;\n pointer-events: none;\n}\n\n.blocklyAngleLine {\n stroke: #f00;\n stroke-width: 2;\n stroke-linecap: round;\n pointer-events: none;\n}\n");
1421
+ typeof a?"TRUE"===a:!!a}static fromJson(a){return new this(a.checked,void 0,a)}};$.FieldCheckbox$$module$build$src$core$field_checkbox.CHECK_CHAR="\u2713";register$$module$build$src$core$field_registry("field_checkbox",$.FieldCheckbox$$module$build$src$core$field_checkbox);$.FieldCheckbox$$module$build$src$core$field_checkbox.prototype.DEFAULT_VALUE=!1;var module$build$src$core$field_checkbox={};module$build$src$core$field_checkbox.FieldCheckbox=$.FieldCheckbox$$module$build$src$core$field_checkbox;var FieldAngle$$module$build$src$core$field_angle=class extends $.FieldTextInput$$module$build$src$core$field_textinput{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.clockwise_=FieldAngle$$module$build$src$core$field_angle.CLOCKWISE;this.offset_=FieldAngle$$module$build$src$core$field_angle.OFFSET;this.wrap_=FieldAngle$$module$build$src$core$field_angle.WRAP;this.round_=FieldAngle$$module$build$src$core$field_angle.ROUND;this.moveSurfaceWrapper_=this.clickSurfaceWrapper_=
1422
+ this.clickWrapper_=this.symbol_=this.line_=this.gauge_=this.editor_=null;this.SERIALIZABLE=!0;a!==Field$$module$build$src$core$field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),b&&this.setValidator(b))}configure_(a){super.configure_(a);switch(a.mode){case Mode$$module$build$src$core$field_angle.COMPASS:this.clockwise_=!0;this.offset_=90;break;case Mode$$module$build$src$core$field_angle.PROTRACTOR:this.clockwise_=!1,this.offset_=0}a.clockwise&&(this.clockwise_=a.clockwise);a.offset&&(this.offset_=
1423
+ a.offset);a.wrap&&(this.wrap_=a.wrap);a.round&&(this.round_=a.round)}initView(){super.initView();this.symbol_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.TSPAN,{});this.symbol_.appendChild(document.createTextNode("\u00b0"));this.getTextElement().appendChild(this.symbol_)}render_(){super.render_();this.updateGraph_()}showEditor_(a){super.showEditor_(a,MOBILE$$module$build$src$core$utils$useragent||ANDROID$$module$build$src$core$utils$useragent||IPAD$$module$build$src$core$utils$useragent);
1424
+ this.dropdownCreate_();getContentDiv$$module$build$src$core$dropdowndiv().appendChild(this.editor_);this.sourceBlock_ instanceof BlockSvg$$module$build$src$core$block_svg&&setColour$$module$build$src$core$dropdowndiv(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary);showPositionedByField$$module$build$src$core$dropdowndiv(this,this.dropdownDispose_.bind(this));this.updateGraph_()}dropdownCreate_(){const a=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.SVG,
1425
+ {xmlns:SVG_NS$$module$build$src$core$utils$dom,"xmlns:html":HTML_NS$$module$build$src$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$build$src$core$utils$dom,version:"1.1",height:2*FieldAngle$$module$build$src$core$field_angle.HALF+"px",width:2*FieldAngle$$module$build$src$core$field_angle.HALF+"px",style:"touch-action: none"}),b=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{cx:FieldAngle$$module$build$src$core$field_angle.HALF,cy:FieldAngle$$module$build$src$core$field_angle.HALF,
1426
+ r:FieldAngle$$module$build$src$core$field_angle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,{"class":"blocklyAngleGauge"},a);this.line_=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,{x1:FieldAngle$$module$build$src$core$field_angle.HALF,y1:FieldAngle$$module$build$src$core$field_angle.HALF,"class":"blocklyAngleLine"},a);for(let c=0;360>c;c+=15)createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.LINE,
1427
+ {x1:FieldAngle$$module$build$src$core$field_angle.HALF+FieldAngle$$module$build$src$core$field_angle.RADIUS,y1:FieldAngle$$module$build$src$core$field_angle.HALF,x2:FieldAngle$$module$build$src$core$field_angle.HALF+FieldAngle$$module$build$src$core$field_angle.RADIUS-(0===c%45?10:5),y2:FieldAngle$$module$build$src$core$field_angle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+c+","+FieldAngle$$module$build$src$core$field_angle.HALF+","+FieldAngle$$module$build$src$core$field_angle.HALF+")"},
1428
+ a);this.clickWrapper_=conditionalBind$$module$build$src$core$browser_events(a,"click",this,this.hide_);this.clickSurfaceWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"click",this,this.onMouseMove_,!0,!0);this.moveSurfaceWrapper_=conditionalBind$$module$build$src$core$browser_events(b,"mousemove",this,this.onMouseMove_,!0,!0);this.editor_=a}dropdownDispose_(){this.clickWrapper_&&(unbind$$module$build$src$core$browser_events(this.clickWrapper_),this.clickWrapper_=null);this.clickSurfaceWrapper_&&
1429
+ (unbind$$module$build$src$core$browser_events(this.clickSurfaceWrapper_),this.clickSurfaceWrapper_=null);this.moveSurfaceWrapper_&&(unbind$$module$build$src$core$browser_events(this.moveSurfaceWrapper_),this.moveSurfaceWrapper_=null);this.line_=this.gauge_=null}hide_(){hideIfOwner$$module$build$src$core$dropdowndiv(this);hide$$module$build$src$core$widgetdiv()}onMouseMove_(a){var b=this.gauge_.ownerSVGElement.getBoundingClientRect();const c=a.clientX-b.left-FieldAngle$$module$build$src$core$field_angle.HALF;
1430
+ a=a.clientY-b.top-FieldAngle$$module$build$src$core$field_angle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=toDegrees$$module$build$src$core$utils$math(b),0>c?b+=180:0<a&&(b+=360),b=this.clockwise_?this.offset_+360-b:360-(this.offset_-b),this.displayMouseOrKeyboardValue_(b))}displayMouseOrKeyboardValue_(a){this.round_&&(a=Math.round(a/this.round_)*this.round_);a=this.wrapValue_(a);a!==this.value_&&this.setEditorValue_(a)}updateGraph_(){if(this.gauge_){var a=Number(this.getText())+this.offset_,b=toRadians$$module$build$src$core$utils$math(a%
1431
+ 360);a=["M ",FieldAngle$$module$build$src$core$field_angle.HALF,",",FieldAngle$$module$build$src$core$field_angle.HALF];var c=FieldAngle$$module$build$src$core$field_angle.HALF,d=FieldAngle$$module$build$src$core$field_angle.HALF;if(!isNaN(b)){const e=Number(this.clockwise_),f=toRadians$$module$build$src$core$utils$math(this.offset_),g=Math.cos(f)*FieldAngle$$module$build$src$core$field_angle.RADIUS,h=Math.sin(f)*-FieldAngle$$module$build$src$core$field_angle.RADIUS;e&&(b=2*f-b);c+=Math.cos(b)*FieldAngle$$module$build$src$core$field_angle.RADIUS;
1432
+ d-=Math.sin(b)*FieldAngle$$module$build$src$core$field_angle.RADIUS;b=Math.abs(Math.floor((b-f)/Math.PI)%2);e&&(b=1-b);a.push(" l ",g,",",h," A ",FieldAngle$$module$build$src$core$field_angle.RADIUS,",",FieldAngle$$module$build$src$core$field_angle.RADIUS," 0 ",b," ",e," ",c,",",d," z")}this.gauge_.setAttribute("d",a.join(""));this.line_.setAttribute("x2",c);this.line_.setAttribute("y2",d)}}onHtmlInputKeyDown_(a){super.onHtmlInputKeyDown_(a);var b=this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$build$src$core$field;
1433
+ let c;a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.LEFT?c=b.RTL?1:-1:a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.RIGHT?c=b.RTL?-1:1:a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.DOWN?c=-1:a.keyCode===KeyCodes$$module$build$src$core$utils$keycodes.UP&&(c=1);c&&(b=this.getValue(),this.displayMouseOrKeyboardValue_(b+c*this.round_),a.preventDefault(),a.stopPropagation())}doClassValidation_(a){a=Number(a);return isNaN(a)||!isFinite(a)?null:this.wrapValue_(a)}wrapValue_(a){a%=
1434
+ 360;0>a&&(a+=360);a>this.wrap_&&(a-=360);return a}static fromJson(a){return new this(a.angle,void 0,a)}};FieldAngle$$module$build$src$core$field_angle.ROUND=15;FieldAngle$$module$build$src$core$field_angle.HALF=50;FieldAngle$$module$build$src$core$field_angle.CLOCKWISE=!1;FieldAngle$$module$build$src$core$field_angle.OFFSET=0;FieldAngle$$module$build$src$core$field_angle.WRAP=360;FieldAngle$$module$build$src$core$field_angle.RADIUS=FieldAngle$$module$build$src$core$field_angle.HALF-1;register$$module$build$src$core$css("\n.blocklyAngleCircle {\n stroke: #444;\n stroke-width: 1;\n fill: #ddd;\n fill-opacity: .8;\n}\n\n.blocklyAngleMarks {\n stroke: #444;\n stroke-width: 1;\n}\n\n.blocklyAngleGauge {\n fill: #f88;\n fill-opacity: .8;\n pointer-events: none;\n}\n\n.blocklyAngleLine {\n stroke: #f00;\n stroke-width: 2;\n stroke-linecap: round;\n pointer-events: none;\n}\n");
1429
1435
  register$$module$build$src$core$field_registry("field_angle",FieldAngle$$module$build$src$core$field_angle);FieldAngle$$module$build$src$core$field_angle.prototype.DEFAULT_VALUE=0;var Mode$$module$build$src$core$field_angle;(function(a){a.COMPASS="compass";a.PROTRACTOR="protractor"})(Mode$$module$build$src$core$field_angle||(Mode$$module$build$src$core$field_angle={}));var module$build$src$core$field_angle={};module$build$src$core$field_angle.FieldAngle=FieldAngle$$module$build$src$core$field_angle;
1430
1436
  module$build$src$core$field_angle.Mode=Mode$$module$build$src$core$field_angle;var BlockMove$$module$build$src$core$events$events_block_move=class extends BlockBase$$module$build$src$core$events$events_block_base{constructor(a){super(a);this.type=MOVE$$module$build$src$core$events$utils;a&&(a.isShadow()&&(this.recordUndo=!1),a=this.currentLocation_(),this.oldParentId=a.parentId,this.oldInputName=a.inputName,this.oldCoordinate=a.coordinate)}toJson(){const a=super.toJson();a.newParentId=this.newParentId;a.newInputName=this.newInputName;this.newCoordinate&&(a.newCoordinate=`${Math.round(this.newCoordinate.x)}, `+
1431
1437
  `${Math.round(this.newCoordinate.y)}`);this.recordUndo||(a.recordUndo=this.recordUndo);return a}fromJson(a){super.fromJson(a);this.newParentId=a.newParentId;this.newInputName=a.newInputName;if(a.newCoordinate){const b=a.newCoordinate.split(",");this.newCoordinate=new Coordinate$$module$build$src$core$utils$coordinate(Number(b[0]),Number(b[1]))}void 0!==a.recordUndo&&(this.recordUndo=a.recordUndo)}recordNew(){const a=this.currentLocation_();this.newParentId=a.parentId;this.newInputName=a.inputName;
@@ -1485,7 +1491,7 @@ this.pixelsToWorkspaceUnits_(a);const b=Coordinate$$module$build$src$core$utils$
1485
1491
  this.draggingBlock_.render();this.draggingBlock_.scheduleSnapAndBump()}fireDragEndEvent_(){const a=new (get$$module$build$src$core$events$utils(BLOCK_DRAG$$module$build$src$core$events$utils))(this.draggingBlock_,!1,this.draggingBlock_.getDescendants(!1));fire$$module$build$src$core$events$utils(a)}updateToolboxStyle_(a){const b=this.workspace_.getToolbox();if(b){const c=this.draggingBlock_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";a&&"function"===typeof b.removeStyle?b.removeStyle(c):
1486
1492
  a||"function"!==typeof b.addStyle||b.addStyle(c)}}fireMoveEvent_(){const a=new (get$$module$build$src$core$events$utils(MOVE$$module$build$src$core$events$utils))(this.draggingBlock_);a.oldCoordinate=this.startXY_;a.recordNew();fire$$module$build$src$core$events$utils(a)}updateCursorDuringBlockDrag_(){this.draggingBlock_.setDeleteStyle(this.wouldDeleteBlock_)}pixelsToWorkspaceUnits_(a){a=new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&&
1487
1493
  a.scale(1/this.workspace_.options.parentWorkspace.scale);return a}dragIcons_(a){for(let b=0;b<this.dragIconData_.length;b++){const c=this.dragIconData_[b];c.icon.setIconLocation(Coordinate$$module$build$src$core$utils$coordinate.sum(c.location,a))}}getInsertionMarkers(){return this.draggedConnectionManager_&&this.draggedConnectionManager_.getInsertionMarkers?this.draggedConnectionManager_.getInsertionMarkers():[]}};
1488
- register$$module$build$src$core$registry(Type$$module$build$src$core$registry.BLOCK_DRAGGER,DEFAULT$$module$build$src$core$registry,BlockDragger$$module$build$src$core$block_dragger);var module$build$src$core$block_dragger={};module$build$src$core$block_dragger.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;var VERSION$$module$build$src$core$blockly="9.0.1",ALIGN_LEFT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.LEFT,ALIGN_CENTRE$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.CENTRE,ALIGN_RIGHT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.RIGHT,INPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE,
1494
+ register$$module$build$src$core$registry(Type$$module$build$src$core$registry.BLOCK_DRAGGER,DEFAULT$$module$build$src$core$registry,BlockDragger$$module$build$src$core$block_dragger);var module$build$src$core$block_dragger={};module$build$src$core$block_dragger.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;var VERSION$$module$build$src$core$blockly="9.1.0",ALIGN_LEFT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.LEFT,ALIGN_CENTRE$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.CENTRE,ALIGN_RIGHT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.RIGHT,INPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE,
1489
1495
  NEXT_STATEMENT$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.NEXT_STATEMENT,PREVIOUS_STATEMENT$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.PREVIOUS_STATEMENT,DUMMY_INPUT$$module$build$src$core$blockly=inputTypes$$module$build$src$core$input_types.DUMMY,TOOLBOX_AT_TOP$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.TOP,TOOLBOX_AT_BOTTOM$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.BOTTOM,
1490
1496
  TOOLBOX_AT_LEFT$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.LEFT,TOOLBOX_AT_RIGHT$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.RIGHT,svgResize$$module$build$src$core$blockly=svgResize$$module$build$src$core$common,getMainWorkspace$$module$build$src$core$blockly=getMainWorkspace$$module$build$src$core$common,getSelected$$module$build$src$core$blockly=getSelected$$module$build$src$core$common,defineBlocksWithJsonArray$$module$build$src$core$blockly=
1491
1497
  defineBlocksWithJsonArray$$module$build$src$core$common,setParentContainer$$module$build$src$core$blockly=setParentContainer$$module$build$src$core$common,resizeSvgContents$$module$build$src$core$blockly=resizeSvgContentsLocal$$module$build$src$core$blockly,COLLAPSE_CHARS$$module$build$src$core$blockly=COLLAPSE_CHARS$$module$build$src$core$internal_constants,DRAG_STACK$$module$build$src$core$blockly=DRAG_STACK$$module$build$src$core$internal_constants,OPPOSITE_TYPE$$module$build$src$core$blockly=
@@ -1493,35 +1499,34 @@ OPPOSITE_TYPE$$module$build$src$core$internal_constants,RENAME_VARIABLE_ID$$modu
1493
1499
  CATEGORY_NAME$$module$build$src$core$variables,VARIABLE_DYNAMIC_CATEGORY_NAME$$module$build$src$core$blockly=CATEGORY_NAME$$module$build$src$core$variables_dynamic,PROCEDURE_CATEGORY_NAME$$module$build$src$core$blockly=CATEGORY_NAME$$module$build$src$core$procedures;Workspace$$module$build$src$core$workspace.prototype.newBlock=function(a,b){return new Block$$module$build$src$core$block(this,a,b)};
1494
1500
  WorkspaceSvg$$module$build$src$core$workspace_svg.prototype.newBlock=function(a,b){return new BlockSvg$$module$build$src$core$block_svg(this,a,b)};WorkspaceSvg$$module$build$src$core$workspace_svg.newTrashcan=function(a){return new Trashcan$$module$build$src$core$trashcan(a)};
1495
1501
  WorkspaceCommentSvg$$module$build$src$core$workspace_comment_svg.prototype.showContextMenu=function(a){if(!this.workspace.options.readOnly){var b=[];this.isDeletable()&&this.isMovable()&&(b.push(commentDuplicateOption$$module$build$src$core$contextmenu(this)),b.push(commentDeleteOption$$module$build$src$core$contextmenu(this)));show$$module$build$src$core$contextmenu(a,b,this.RTL)}};$.Mutator$$module$build$src$core$mutator.prototype.newWorkspaceSvg=function(a){return new WorkspaceSvg$$module$build$src$core$workspace_svg(a)};
1496
- Names$$module$build$src$core$names.prototype.populateProcedures=function(a){a=allProcedures$$module$build$src$core$procedures(a);a=a[0].concat(a[1]);for(let b=0;b<a.length;b++)this.getName(a[b][0],Names$$module$build$src$core$names.NameType.PROCEDURE)};var DropDownDiv$$module$build$src$core$blockly=module$build$src$core$dropdowndiv,connectionTypes$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type,serialization$$module$build$src$core$blockly;
1497
- (function(a){a.blocks=module$build$src$core$serialization$blocks;a.exceptions=module$build$src$core$serialization$exceptions;a.priorities=module$build$src$core$serialization$priorities;a.registry=module$build$src$core$serialization$registry;a.variables=module$build$src$core$serialization$variables;a.workspaces=module$build$src$core$serialization$workspaces})(serialization$$module$build$src$core$blockly||(serialization$$module$build$src$core$blockly={}));var module$build$src$core$blockly={};
1502
+ Names$$module$build$src$core$names.prototype.populateProcedures=function(a){a=allProcedures$$module$build$src$core$procedures(a);a=a[0].concat(a[1]);for(let b=0;b<a.length;b++)this.getName(a[b][0],Names$$module$build$src$core$names.NameType.PROCEDURE)};var DropDownDiv$$module$build$src$core$blockly=module$build$src$core$dropdowndiv,connectionTypes$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type,module$build$src$core$blockly={};
1498
1503
  module$build$src$core$blockly.ALIGN_CENTRE=ALIGN_CENTRE$$module$build$src$core$blockly;module$build$src$core$blockly.ALIGN_LEFT=ALIGN_LEFT$$module$build$src$core$blockly;module$build$src$core$blockly.ALIGN_RIGHT=ALIGN_RIGHT$$module$build$src$core$blockly;module$build$src$core$blockly.ASTNode=ASTNode$$module$build$src$core$keyboard_nav$ast_node;module$build$src$core$blockly.BasicCursor=BasicCursor$$module$build$src$core$keyboard_nav$basic_cursor;module$build$src$core$blockly.Block=Block$$module$build$src$core$block;
1499
1504
  module$build$src$core$blockly.BlockDragSurfaceSvg=BlockDragSurfaceSvg$$module$build$src$core$block_drag_surface;module$build$src$core$blockly.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;module$build$src$core$blockly.BlockSvg=BlockSvg$$module$build$src$core$block_svg;module$build$src$core$blockly.Blocks=Blocks$$module$build$src$core$blocks;module$build$src$core$blockly.Bubble=Bubble$$module$build$src$core$bubble;module$build$src$core$blockly.BubbleDragger=BubbleDragger$$module$build$src$core$bubble_dragger;
1500
- module$build$src$core$blockly.COLLAPSED_FIELD_NAME=COLLAPSED_FIELD_NAME$$module$build$src$core$constants;module$build$src$core$blockly.COLLAPSED_INPUT_NAME=COLLAPSED_INPUT_NAME$$module$build$src$core$constants;module$build$src$core$blockly.COLLAPSE_CHARS=COLLAPSE_CHARS$$module$build$src$core$internal_constants;module$build$src$core$blockly.CollapsibleToolboxCategory=CollapsibleToolboxCategory$$module$build$src$core$toolbox$collapsible_category;module$build$src$core$blockly.Comment=Comment$$module$build$src$core$comment;
1501
- module$build$src$core$blockly.ComponentManager=ComponentManager$$module$build$src$core$component_manager;module$build$src$core$blockly.Connection=Connection$$module$build$src$core$connection;module$build$src$core$blockly.ConnectionChecker=ConnectionChecker$$module$build$src$core$connection_checker;module$build$src$core$blockly.ConnectionDB=ConnectionDB$$module$build$src$core$connection_db;module$build$src$core$blockly.ConnectionType=ConnectionType$$module$build$src$core$connection_type;
1502
- module$build$src$core$blockly.ContextMenu=$.module$build$src$core$contextmenu;module$build$src$core$blockly.ContextMenuItems=module$build$src$core$contextmenu_items;module$build$src$core$blockly.ContextMenuRegistry=ContextMenuRegistry$$module$build$src$core$contextmenu_registry;module$build$src$core$blockly.Css=module$build$src$core$css;module$build$src$core$blockly.Cursor=Cursor$$module$build$src$core$keyboard_nav$cursor;module$build$src$core$blockly.DELETE_VARIABLE_ID=DELETE_VARIABLE_ID$$module$build$src$core$internal_constants;
1503
- module$build$src$core$blockly.DRAG_STACK=DRAG_STACK$$module$build$src$core$internal_constants;module$build$src$core$blockly.DUMMY_INPUT=DUMMY_INPUT$$module$build$src$core$blockly;module$build$src$core$blockly.DeleteArea=DeleteArea$$module$build$src$core$delete_area;module$build$src$core$blockly.DragTarget=DragTarget$$module$build$src$core$drag_target;module$build$src$core$blockly.DropDownDiv=module$build$src$core$dropdowndiv;module$build$src$core$blockly.Events=$.module$build$src$core$events$events;
1504
- module$build$src$core$blockly.Extensions=$.module$build$src$core$extensions;module$build$src$core$blockly.Field=Field$$module$build$src$core$field;module$build$src$core$blockly.FieldAngle=FieldAngle$$module$build$src$core$field_angle;module$build$src$core$blockly.FieldCheckbox=$.FieldCheckbox$$module$build$src$core$field_checkbox;module$build$src$core$blockly.FieldColour=FieldColour$$module$build$src$core$field_colour;module$build$src$core$blockly.FieldDropdown=FieldDropdown$$module$build$src$core$field_dropdown;
1505
- module$build$src$core$blockly.FieldImage=$.FieldImage$$module$build$src$core$field_image;module$build$src$core$blockly.FieldLabel=$.FieldLabel$$module$build$src$core$field_label;module$build$src$core$blockly.FieldLabelSerializable=FieldLabelSerializable$$module$build$src$core$field_label_serializable;module$build$src$core$blockly.FieldMultilineInput=FieldMultilineInput$$module$build$src$core$field_multilineinput;module$build$src$core$blockly.FieldNumber=FieldNumber$$module$build$src$core$field_number;
1506
- module$build$src$core$blockly.FieldTextInput=$.FieldTextInput$$module$build$src$core$field_textinput;module$build$src$core$blockly.FieldVariable=FieldVariable$$module$build$src$core$field_variable;module$build$src$core$blockly.Flyout=Flyout$$module$build$src$core$flyout_base;module$build$src$core$blockly.FlyoutButton=FlyoutButton$$module$build$src$core$flyout_button;module$build$src$core$blockly.FlyoutMetricsManager=FlyoutMetricsManager$$module$build$src$core$flyout_metrics_manager;
1507
- module$build$src$core$blockly.Generator=$.Generator$$module$build$src$core$generator;module$build$src$core$blockly.Gesture=Gesture$$module$build$src$core$gesture;module$build$src$core$blockly.Grid=Grid$$module$build$src$core$grid;module$build$src$core$blockly.HorizontalFlyout=HorizontalFlyout$$module$build$src$core$flyout_horizontal;module$build$src$core$blockly.INPUT_VALUE=INPUT_VALUE$$module$build$src$core$blockly;module$build$src$core$blockly.Icon=Icon$$module$build$src$core$icon;
1508
- module$build$src$core$blockly.Input=Input$$module$build$src$core$input;module$build$src$core$blockly.InsertionMarkerManager=InsertionMarkerManager$$module$build$src$core$insertion_marker_manager;module$build$src$core$blockly.Marker=Marker$$module$build$src$core$keyboard_nav$marker;module$build$src$core$blockly.MarkerManager=MarkerManager$$module$build$src$core$marker_manager;module$build$src$core$blockly.Menu=Menu$$module$build$src$core$menu;module$build$src$core$blockly.MenuItem=MenuItem$$module$build$src$core$menuitem;
1509
- module$build$src$core$blockly.MetricsManager=MetricsManager$$module$build$src$core$metrics_manager;module$build$src$core$blockly.Msg=Msg$$module$build$src$core$msg;module$build$src$core$blockly.Mutator=$.Mutator$$module$build$src$core$mutator;module$build$src$core$blockly.NEXT_STATEMENT=NEXT_STATEMENT$$module$build$src$core$blockly;module$build$src$core$blockly.Names=Names$$module$build$src$core$names;module$build$src$core$blockly.OPPOSITE_TYPE=OPPOSITE_TYPE$$module$build$src$core$internal_constants;
1510
- module$build$src$core$blockly.OUTPUT_VALUE=OUTPUT_VALUE$$module$build$src$core$blockly;module$build$src$core$blockly.Options=Options$$module$build$src$core$options;module$build$src$core$blockly.PREVIOUS_STATEMENT=PREVIOUS_STATEMENT$$module$build$src$core$blockly;module$build$src$core$blockly.PROCEDURE_CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$procedures;module$build$src$core$blockly.Procedures=$.module$build$src$core$procedures;module$build$src$core$blockly.RENAME_VARIABLE_ID=RENAME_VARIABLE_ID$$module$build$src$core$internal_constants;
1511
- module$build$src$core$blockly.RenderedConnection=RenderedConnection$$module$build$src$core$rendered_connection;module$build$src$core$blockly.Scrollbar=Scrollbar$$module$build$src$core$scrollbar;module$build$src$core$blockly.ScrollbarPair=ScrollbarPair$$module$build$src$core$scrollbar_pair;module$build$src$core$blockly.ShortcutItems=module$build$src$core$shortcut_items;module$build$src$core$blockly.ShortcutRegistry=ShortcutRegistry$$module$build$src$core$shortcut_registry;
1512
- module$build$src$core$blockly.TOOLBOX_AT_BOTTOM=TOOLBOX_AT_BOTTOM$$module$build$src$core$blockly;module$build$src$core$blockly.TOOLBOX_AT_LEFT=TOOLBOX_AT_LEFT$$module$build$src$core$blockly;module$build$src$core$blockly.TOOLBOX_AT_RIGHT=TOOLBOX_AT_RIGHT$$module$build$src$core$blockly;module$build$src$core$blockly.TOOLBOX_AT_TOP=TOOLBOX_AT_TOP$$module$build$src$core$blockly;module$build$src$core$blockly.TabNavigateCursor=TabNavigateCursor$$module$build$src$core$keyboard_nav$tab_navigate_cursor;
1513
- module$build$src$core$blockly.Theme=Theme$$module$build$src$core$theme;module$build$src$core$blockly.ThemeManager=ThemeManager$$module$build$src$core$theme_manager;module$build$src$core$blockly.Themes=module$build$src$core$theme$themes;module$build$src$core$blockly.Toolbox=Toolbox$$module$build$src$core$toolbox$toolbox;module$build$src$core$blockly.ToolboxCategory=ToolboxCategory$$module$build$src$core$toolbox$category;module$build$src$core$blockly.ToolboxItem=ToolboxItem$$module$build$src$core$toolbox$toolbox_item;
1514
- module$build$src$core$blockly.ToolboxSeparator=ToolboxSeparator$$module$build$src$core$toolbox$separator;module$build$src$core$blockly.Tooltip=module$build$src$core$tooltip;module$build$src$core$blockly.Touch=module$build$src$core$touch;module$build$src$core$blockly.TouchGesture=TouchGesture$$module$build$src$core$touch_gesture;module$build$src$core$blockly.Trashcan=Trashcan$$module$build$src$core$trashcan;module$build$src$core$blockly.VARIABLE_CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$variables;
1515
- module$build$src$core$blockly.VARIABLE_DYNAMIC_CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$variables_dynamic;module$build$src$core$blockly.VERSION=VERSION$$module$build$src$core$blockly;module$build$src$core$blockly.VariableMap=VariableMap$$module$build$src$core$variable_map;module$build$src$core$blockly.VariableModel=VariableModel$$module$build$src$core$variable_model;module$build$src$core$blockly.Variables=$.module$build$src$core$variables;module$build$src$core$blockly.VariablesDynamic=module$build$src$core$variables_dynamic;
1516
- module$build$src$core$blockly.VerticalFlyout=VerticalFlyout$$module$build$src$core$flyout_vertical;module$build$src$core$blockly.Warning=Warning$$module$build$src$core$warning;module$build$src$core$blockly.WidgetDiv=module$build$src$core$widgetdiv;module$build$src$core$blockly.Workspace=Workspace$$module$build$src$core$workspace;module$build$src$core$blockly.WorkspaceAudio=WorkspaceAudio$$module$build$src$core$workspace_audio;module$build$src$core$blockly.WorkspaceComment=WorkspaceComment$$module$build$src$core$workspace_comment;
1517
- module$build$src$core$blockly.WorkspaceCommentSvg=WorkspaceCommentSvg$$module$build$src$core$workspace_comment_svg;module$build$src$core$blockly.WorkspaceDragSurfaceSvg=WorkspaceDragSurfaceSvg$$module$build$src$core$workspace_drag_surface_svg;module$build$src$core$blockly.WorkspaceDragger=WorkspaceDragger$$module$build$src$core$workspace_dragger;module$build$src$core$blockly.WorkspaceSvg=WorkspaceSvg$$module$build$src$core$workspace_svg;module$build$src$core$blockly.Xml=$.module$build$src$core$xml;
1518
- module$build$src$core$blockly.ZoomControls=ZoomControls$$module$build$src$core$zoom_controls;module$build$src$core$blockly.bindEventWithChecks_=bindEventWithChecks_$$module$build$src$core$blockly;module$build$src$core$blockly.bindEvent_=bindEvent_$$module$build$src$core$blockly;module$build$src$core$blockly.blockAnimations=module$build$src$core$block_animations;module$build$src$core$blockly.blockRendering=module$build$src$core$renderers$common$block_rendering;
1519
- module$build$src$core$blockly.browserEvents=module$build$src$core$browser_events;module$build$src$core$blockly.bumpObjects=module$build$src$core$bump_objects;module$build$src$core$blockly.clipboard=module$build$src$core$clipboard;module$build$src$core$blockly.common=$.module$build$src$core$common;module$build$src$core$blockly.config=$.config$$module$build$src$core$config;module$build$src$core$blockly.connectionTypes=connectionTypes$$module$build$src$core$blockly;
1520
- module$build$src$core$blockly.constants=module$build$src$core$constants;module$build$src$core$blockly.copy=copy$$module$build$src$core$blockly;module$build$src$core$blockly.defineBlocksWithJsonArray=defineBlocksWithJsonArray$$module$build$src$core$common;module$build$src$core$blockly.dialog=module$build$src$core$dialog;module$build$src$core$blockly.duplicate=duplicate$$module$build$src$core$blockly;module$build$src$core$blockly.fieldRegistry=module$build$src$core$field_registry;
1521
- module$build$src$core$blockly.geras=module$build$src$core$renderers$geras$geras;module$build$src$core$blockly.getMainWorkspace=getMainWorkspace$$module$build$src$core$common;module$build$src$core$blockly.getSelected=getSelected$$module$build$src$core$common;module$build$src$core$blockly.hideChaff=hideChaff$$module$build$src$core$blockly;module$build$src$core$blockly.hueToHex=hueToHex$$module$build$src$core$blockly;module$build$src$core$blockly.inject=inject$$module$build$src$core$inject;
1522
- module$build$src$core$blockly.inputTypes=inputTypes$$module$build$src$core$input_types;module$build$src$core$blockly.isNumber=isNumber$$module$build$src$core$blockly;module$build$src$core$blockly.minimalist=module$build$src$core$renderers$minimalist$minimalist;module$build$src$core$blockly.paste=paste$$module$build$src$core$blockly;module$build$src$core$blockly.registry=module$build$src$core$registry;module$build$src$core$blockly.resizeSvgContents=resizeSvgContentsLocal$$module$build$src$core$blockly;
1523
- module$build$src$core$blockly.serialization=serialization$$module$build$src$core$blockly;module$build$src$core$blockly.setLocale=setLocale$$module$build$src$core$msg;module$build$src$core$blockly.setParentContainer=setParentContainer$$module$build$src$core$common;module$build$src$core$blockly.svgResize=svgResize$$module$build$src$core$common;module$build$src$core$blockly.thrasos=module$build$src$core$renderers$thrasos$thrasos;module$build$src$core$blockly.uiPosition=module$build$src$core$positionable_helpers;
1524
- module$build$src$core$blockly.unbindEvent_=unbindEvent_$$module$build$src$core$blockly;module$build$src$core$blockly.utils=module$build$src$core$utils;module$build$src$core$blockly.zelos=module$build$src$core$renderers$zelos$zelos;var module$exports$Blockly$main={},module$contents$Blockly$main_Blockly=module$build$src$core$blockly,module$contents$Blockly$main_ContextMenu=$.module$build$src$core$contextmenu,module$contents$Blockly$main_Events=$.module$build$src$core$events$events,module$contents$Blockly$main_Msg=$.module$build$src$core$msg,module$contents$Blockly$main_Tooltip=module$build$src$core$tooltip,module$contents$Blockly$main_WidgetDiv=module$build$src$core$widgetdiv,module$contents$Blockly$main_colour=module$build$src$core$utils$colour,
1505
+ module$build$src$core$blockly.COLLAPSED_FIELD_NAME=COLLAPSED_FIELD_NAME$$module$build$src$core$constants;module$build$src$core$blockly.COLLAPSED_INPUT_NAME=COLLAPSED_INPUT_NAME$$module$build$src$core$constants;module$build$src$core$blockly.COLLAPSE_CHARS=COLLAPSE_CHARS$$module$build$src$core$internal_constants;module$build$src$core$blockly.CodeGenerator=$.CodeGenerator$$module$build$src$core$generator;module$build$src$core$blockly.CollapsibleToolboxCategory=CollapsibleToolboxCategory$$module$build$src$core$toolbox$collapsible_category;
1506
+ module$build$src$core$blockly.Comment=Comment$$module$build$src$core$comment;module$build$src$core$blockly.ComponentManager=ComponentManager$$module$build$src$core$component_manager;module$build$src$core$blockly.Connection=Connection$$module$build$src$core$connection;module$build$src$core$blockly.ConnectionChecker=ConnectionChecker$$module$build$src$core$connection_checker;module$build$src$core$blockly.ConnectionDB=ConnectionDB$$module$build$src$core$connection_db;
1507
+ module$build$src$core$blockly.ConnectionType=ConnectionType$$module$build$src$core$connection_type;module$build$src$core$blockly.ContextMenu=$.module$build$src$core$contextmenu;module$build$src$core$blockly.ContextMenuItems=module$build$src$core$contextmenu_items;module$build$src$core$blockly.ContextMenuRegistry=ContextMenuRegistry$$module$build$src$core$contextmenu_registry;module$build$src$core$blockly.Css=module$build$src$core$css;module$build$src$core$blockly.Cursor=Cursor$$module$build$src$core$keyboard_nav$cursor;
1508
+ module$build$src$core$blockly.DELETE_VARIABLE_ID=DELETE_VARIABLE_ID$$module$build$src$core$internal_constants;module$build$src$core$blockly.DRAG_STACK=DRAG_STACK$$module$build$src$core$internal_constants;module$build$src$core$blockly.DUMMY_INPUT=DUMMY_INPUT$$module$build$src$core$blockly;module$build$src$core$blockly.DeleteArea=DeleteArea$$module$build$src$core$delete_area;module$build$src$core$blockly.DragTarget=DragTarget$$module$build$src$core$drag_target;
1509
+ module$build$src$core$blockly.DropDownDiv=module$build$src$core$dropdowndiv;module$build$src$core$blockly.Events=$.module$build$src$core$events$events;module$build$src$core$blockly.Extensions=$.module$build$src$core$extensions;module$build$src$core$blockly.Field=Field$$module$build$src$core$field;module$build$src$core$blockly.FieldAngle=FieldAngle$$module$build$src$core$field_angle;module$build$src$core$blockly.FieldCheckbox=$.FieldCheckbox$$module$build$src$core$field_checkbox;
1510
+ module$build$src$core$blockly.FieldColour=FieldColour$$module$build$src$core$field_colour;module$build$src$core$blockly.FieldDropdown=FieldDropdown$$module$build$src$core$field_dropdown;module$build$src$core$blockly.FieldImage=$.FieldImage$$module$build$src$core$field_image;module$build$src$core$blockly.FieldLabel=$.FieldLabel$$module$build$src$core$field_label;module$build$src$core$blockly.FieldLabelSerializable=FieldLabelSerializable$$module$build$src$core$field_label_serializable;
1511
+ module$build$src$core$blockly.FieldMultilineInput=FieldMultilineInput$$module$build$src$core$field_multilineinput;module$build$src$core$blockly.FieldNumber=FieldNumber$$module$build$src$core$field_number;module$build$src$core$blockly.FieldTextInput=$.FieldTextInput$$module$build$src$core$field_textinput;module$build$src$core$blockly.FieldVariable=FieldVariable$$module$build$src$core$field_variable;module$build$src$core$blockly.Flyout=Flyout$$module$build$src$core$flyout_base;
1512
+ module$build$src$core$blockly.FlyoutButton=FlyoutButton$$module$build$src$core$flyout_button;module$build$src$core$blockly.FlyoutMetricsManager=FlyoutMetricsManager$$module$build$src$core$flyout_metrics_manager;module$build$src$core$blockly.Generator=$.CodeGenerator$$module$build$src$core$generator;module$build$src$core$blockly.Gesture=Gesture$$module$build$src$core$gesture;module$build$src$core$blockly.Grid=Grid$$module$build$src$core$grid;module$build$src$core$blockly.HorizontalFlyout=HorizontalFlyout$$module$build$src$core$flyout_horizontal;
1513
+ module$build$src$core$blockly.INPUT_VALUE=INPUT_VALUE$$module$build$src$core$blockly;module$build$src$core$blockly.Icon=Icon$$module$build$src$core$icon;module$build$src$core$blockly.Input=Input$$module$build$src$core$input;module$build$src$core$blockly.InsertionMarkerManager=InsertionMarkerManager$$module$build$src$core$insertion_marker_manager;module$build$src$core$blockly.Marker=Marker$$module$build$src$core$keyboard_nav$marker;module$build$src$core$blockly.MarkerManager=MarkerManager$$module$build$src$core$marker_manager;
1514
+ module$build$src$core$blockly.Menu=Menu$$module$build$src$core$menu;module$build$src$core$blockly.MenuItem=MenuItem$$module$build$src$core$menuitem;module$build$src$core$blockly.MetricsManager=MetricsManager$$module$build$src$core$metrics_manager;module$build$src$core$blockly.Msg=Msg$$module$build$src$core$msg;module$build$src$core$blockly.Mutator=$.Mutator$$module$build$src$core$mutator;module$build$src$core$blockly.NEXT_STATEMENT=NEXT_STATEMENT$$module$build$src$core$blockly;
1515
+ module$build$src$core$blockly.Names=Names$$module$build$src$core$names;module$build$src$core$blockly.OPPOSITE_TYPE=OPPOSITE_TYPE$$module$build$src$core$internal_constants;module$build$src$core$blockly.OUTPUT_VALUE=OUTPUT_VALUE$$module$build$src$core$blockly;module$build$src$core$blockly.Options=Options$$module$build$src$core$options;module$build$src$core$blockly.PREVIOUS_STATEMENT=PREVIOUS_STATEMENT$$module$build$src$core$blockly;module$build$src$core$blockly.PROCEDURE_CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$procedures;
1516
+ module$build$src$core$blockly.Procedures=$.module$build$src$core$procedures;module$build$src$core$blockly.RENAME_VARIABLE_ID=RENAME_VARIABLE_ID$$module$build$src$core$internal_constants;module$build$src$core$blockly.RenderedConnection=RenderedConnection$$module$build$src$core$rendered_connection;module$build$src$core$blockly.Scrollbar=Scrollbar$$module$build$src$core$scrollbar;module$build$src$core$blockly.ScrollbarPair=ScrollbarPair$$module$build$src$core$scrollbar_pair;
1517
+ module$build$src$core$blockly.ShortcutItems=module$build$src$core$shortcut_items;module$build$src$core$blockly.ShortcutRegistry=ShortcutRegistry$$module$build$src$core$shortcut_registry;module$build$src$core$blockly.TOOLBOX_AT_BOTTOM=TOOLBOX_AT_BOTTOM$$module$build$src$core$blockly;module$build$src$core$blockly.TOOLBOX_AT_LEFT=TOOLBOX_AT_LEFT$$module$build$src$core$blockly;module$build$src$core$blockly.TOOLBOX_AT_RIGHT=TOOLBOX_AT_RIGHT$$module$build$src$core$blockly;
1518
+ module$build$src$core$blockly.TOOLBOX_AT_TOP=TOOLBOX_AT_TOP$$module$build$src$core$blockly;module$build$src$core$blockly.TabNavigateCursor=TabNavigateCursor$$module$build$src$core$keyboard_nav$tab_navigate_cursor;module$build$src$core$blockly.Theme=Theme$$module$build$src$core$theme;module$build$src$core$blockly.ThemeManager=ThemeManager$$module$build$src$core$theme_manager;module$build$src$core$blockly.Themes=module$build$src$core$theme$themes;module$build$src$core$blockly.Toolbox=Toolbox$$module$build$src$core$toolbox$toolbox;
1519
+ module$build$src$core$blockly.ToolboxCategory=ToolboxCategory$$module$build$src$core$toolbox$category;module$build$src$core$blockly.ToolboxItem=ToolboxItem$$module$build$src$core$toolbox$toolbox_item;module$build$src$core$blockly.ToolboxSeparator=ToolboxSeparator$$module$build$src$core$toolbox$separator;module$build$src$core$blockly.Tooltip=module$build$src$core$tooltip;module$build$src$core$blockly.Touch=module$build$src$core$touch;module$build$src$core$blockly.TouchGesture=TouchGesture$$module$build$src$core$touch_gesture;
1520
+ module$build$src$core$blockly.Trashcan=Trashcan$$module$build$src$core$trashcan;module$build$src$core$blockly.VARIABLE_CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$variables;module$build$src$core$blockly.VARIABLE_DYNAMIC_CATEGORY_NAME=CATEGORY_NAME$$module$build$src$core$variables_dynamic;module$build$src$core$blockly.VERSION=VERSION$$module$build$src$core$blockly;module$build$src$core$blockly.VariableMap=VariableMap$$module$build$src$core$variable_map;
1521
+ module$build$src$core$blockly.VariableModel=VariableModel$$module$build$src$core$variable_model;module$build$src$core$blockly.Variables=$.module$build$src$core$variables;module$build$src$core$blockly.VariablesDynamic=module$build$src$core$variables_dynamic;module$build$src$core$blockly.VerticalFlyout=VerticalFlyout$$module$build$src$core$flyout_vertical;module$build$src$core$blockly.Warning=Warning$$module$build$src$core$warning;module$build$src$core$blockly.WidgetDiv=module$build$src$core$widgetdiv;
1522
+ module$build$src$core$blockly.Workspace=Workspace$$module$build$src$core$workspace;module$build$src$core$blockly.WorkspaceAudio=WorkspaceAudio$$module$build$src$core$workspace_audio;module$build$src$core$blockly.WorkspaceComment=WorkspaceComment$$module$build$src$core$workspace_comment;module$build$src$core$blockly.WorkspaceCommentSvg=WorkspaceCommentSvg$$module$build$src$core$workspace_comment_svg;module$build$src$core$blockly.WorkspaceDragSurfaceSvg=WorkspaceDragSurfaceSvg$$module$build$src$core$workspace_drag_surface_svg;
1523
+ module$build$src$core$blockly.WorkspaceDragger=WorkspaceDragger$$module$build$src$core$workspace_dragger;module$build$src$core$blockly.WorkspaceSvg=WorkspaceSvg$$module$build$src$core$workspace_svg;module$build$src$core$blockly.Xml=$.module$build$src$core$xml;module$build$src$core$blockly.ZoomControls=ZoomControls$$module$build$src$core$zoom_controls;module$build$src$core$blockly.bindEventWithChecks_=bindEventWithChecks_$$module$build$src$core$blockly;module$build$src$core$blockly.bindEvent_=bindEvent_$$module$build$src$core$blockly;
1524
+ module$build$src$core$blockly.blockAnimations=module$build$src$core$block_animations;module$build$src$core$blockly.blockRendering=module$build$src$core$renderers$common$block_rendering;module$build$src$core$blockly.browserEvents=module$build$src$core$browser_events;module$build$src$core$blockly.bumpObjects=module$build$src$core$bump_objects;module$build$src$core$blockly.clipboard=module$build$src$core$clipboard;module$build$src$core$blockly.common=$.module$build$src$core$common;
1525
+ module$build$src$core$blockly.config=$.config$$module$build$src$core$config;module$build$src$core$blockly.connectionTypes=connectionTypes$$module$build$src$core$blockly;module$build$src$core$blockly.constants=module$build$src$core$constants;module$build$src$core$blockly.copy=copy$$module$build$src$core$blockly;module$build$src$core$blockly.defineBlocksWithJsonArray=defineBlocksWithJsonArray$$module$build$src$core$common;module$build$src$core$blockly.dialog=module$build$src$core$dialog;
1526
+ module$build$src$core$blockly.duplicate=duplicate$$module$build$src$core$blockly;module$build$src$core$blockly.fieldRegistry=module$build$src$core$field_registry;module$build$src$core$blockly.geras=module$build$src$core$renderers$geras$geras;module$build$src$core$blockly.getMainWorkspace=getMainWorkspace$$module$build$src$core$common;module$build$src$core$blockly.getSelected=getSelected$$module$build$src$core$common;module$build$src$core$blockly.hideChaff=hideChaff$$module$build$src$core$blockly;
1527
+ module$build$src$core$blockly.hueToHex=hueToHex$$module$build$src$core$blockly;module$build$src$core$blockly.inject=inject$$module$build$src$core$inject;module$build$src$core$blockly.inputTypes=inputTypes$$module$build$src$core$input_types;module$build$src$core$blockly.isNumber=isNumber$$module$build$src$core$blockly;module$build$src$core$blockly.minimalist=module$build$src$core$renderers$minimalist$minimalist;module$build$src$core$blockly.paste=paste$$module$build$src$core$blockly;
1528
+ module$build$src$core$blockly.procedures=$.module$build$src$core$procedures;module$build$src$core$blockly.registry=module$build$src$core$registry;module$build$src$core$blockly.resizeSvgContents=resizeSvgContentsLocal$$module$build$src$core$blockly;module$build$src$core$blockly.serialization=module$build$src$core$serialization;module$build$src$core$blockly.setLocale=setLocale$$module$build$src$core$msg;module$build$src$core$blockly.setParentContainer=setParentContainer$$module$build$src$core$common;
1529
+ module$build$src$core$blockly.svgResize=svgResize$$module$build$src$core$common;module$build$src$core$blockly.thrasos=module$build$src$core$renderers$thrasos$thrasos;module$build$src$core$blockly.uiPosition=module$build$src$core$positionable_helpers;module$build$src$core$blockly.unbindEvent_=unbindEvent_$$module$build$src$core$blockly;module$build$src$core$blockly.utils=module$build$src$core$utils;module$build$src$core$blockly.zelos=module$build$src$core$renderers$zelos$zelos;var module$exports$Blockly$main={},module$contents$Blockly$main_Blockly=module$build$src$core$blockly,module$contents$Blockly$main_ContextMenu=$.module$build$src$core$contextmenu,module$contents$Blockly$main_Events=$.module$build$src$core$events$events,module$contents$Blockly$main_Msg=$.module$build$src$core$msg,module$contents$Blockly$main_Tooltip=module$build$src$core$tooltip,module$contents$Blockly$main_WidgetDiv=module$build$src$core$widgetdiv,module$contents$Blockly$main_colour=module$build$src$core$utils$colour,
1525
1530
  module$contents$Blockly$main_common=$.module$build$src$core$common,module$contents$Blockly$main_deprecation=module$build$src$core$utils$deprecation,module$contents$Blockly$main_dialog=module$build$src$core$dialog,module$contents$Blockly$main_eventUtils=module$build$src$core$events$utils;
1526
1531
  Object.defineProperties(module$build$src$core$blockly,{alert:{set:function(a){module$build$src$core$utils$deprecation.warn("Blockly.alert","December 2021","December 2022");module$build$src$core$dialog.setAlert(a)},get:function(){module$build$src$core$utils$deprecation.warn("Blockly.alert","December 2021","December 2022","Blockly.dialog.alert()");return module$build$src$core$dialog.alert}},confirm:{set:function(a){module$build$src$core$utils$deprecation.warn("Blockly.confirm","December 2021","December 2022");
1527
1532
  module$build$src$core$dialog.setConfirm(a)},get:function(){module$build$src$core$utils$deprecation.warn("Blockly.confirm","December 2021","December 2022","Blockly.dialog.confirm()");return module$build$src$core$dialog.confirm}},mainWorkspace:{set:function(a){module$build$src$core$utils$deprecation.warn("Blockly.mainWorkspace","version 9","version 10","Blockly.getMainWorkspace");$.module$build$src$core$common.setMainWorkspace(a)},get:function(){module$build$src$core$utils$deprecation.warn("Blockly.mainWorkspace",
@@ -1539,6 +1544,19 @@ return module$build$src$core$blockly;
1539
1544
 
1540
1545
  //# sourceMappingURL=blockly_compressed.js.map
1541
1546
 
1547
+ /* eslint-disable */
1548
+ ;(function(root, factory) {
1549
+ if (typeof define === 'function' && define.amd) { // AMD
1550
+ define([], factory);
1551
+ } else if (typeof exports === 'object') { // Node.js
1552
+ module.exports = factory();
1553
+ } else { // Browser
1554
+ var messages = factory();
1555
+ for (var key in messages) {
1556
+ root.Blockly.Msg[key] = messages[key];
1557
+ }
1558
+ }
1559
+ }(this, function() {
1542
1560
  // This file was automatically generated. Do not modify.
1543
1561
 
1544
1562
  'use strict';
@@ -1964,6 +1982,9 @@ Blockly.Msg["TEXTS_HUE"] = "160";
1964
1982
  Blockly.Msg["PROCEDURES_HUE"] = "290";
1965
1983
  Blockly.Msg["COLOUR_HUE"] = "20";
1966
1984
  Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
1985
+ return Blockly.Msg;
1986
+ }));
1987
+
1967
1988
  // Do not edit this file; automatically generated.
1968
1989
 
1969
1990
  /* eslint-disable */
@@ -2039,7 +2060,7 @@ $.module$build$src$core$common.defineBlocks;module$exports$Blockly$libraryBlocks
2039
2060
  var module$contents$Blockly$libraryBlocks$procedures_PROCEDURE_DEF_COMMON={setStatements_:function(a){this.hasStatements_!==a&&(a?(this.appendStatementInput("STACK").appendField(module$contents$Blockly$libraryBlocks$procedures_Msg.PROCEDURES_DEFNORETURN_DO),this.getInput("RETURN")&&this.moveInputBefore("STACK","RETURN")):this.removeInput("STACK",!0),this.hasStatements_=a)},updateParams_:function(){let a="";this.arguments_.length&&(a=module$contents$Blockly$libraryBlocks$procedures_Msg.PROCEDURES_BEFORE_PARAMS+
2040
2061
  " "+this.arguments_.join(", "));$.module$build$src$core$events$events.disable();try{this.setFieldValue(a,"PARAMS")}finally{$.module$build$src$core$events$events.enable()}},mutationToDom:function(a){const b=$.module$build$src$core$utils$xml.createElement("mutation");a&&b.setAttribute("name",this.getFieldValue("NAME"));for(let c=0;c<this.argumentVarModels_.length;c++){const d=$.module$build$src$core$utils$xml.createElement("arg"),e=this.argumentVarModels_[c];d.setAttribute("name",e.name);d.setAttribute("varid",
2041
2062
  e.getId());a&&this.paramIds_&&d.setAttribute("paramId",this.paramIds_[c]);b.appendChild(d)}this.hasStatements_||b.setAttribute("statements","false");return b},domToMutation:function(a){this.arguments_=[];this.argumentVarModels_=[];for(let c=0,d;d=a.childNodes[c];c++)if("arg"===d.nodeName.toLowerCase()){const e=d.getAttribute("name");var b=d.getAttribute("varid")||d.getAttribute("varId");this.arguments_.push(e);b=$.module$build$src$core$variables.getOrCreateVariablePackage(this.workspace,b,e,"");null!==
2042
- b?this.argumentVarModels_.push(b):console.log("Failed to create a variable with name "+e+", ignoring.")}this.updateParams_();$.module$build$src$core$procedures.mutateCallers(this);this.setStatements_("false"!==a.getAttribute("statements"))},saveExtraState:function(){if(!this.argumentVarModels_.length&&this.hasStatements_)return null;const a=Object.create(null);if(this.argumentVarModels_.length){a.params=[];for(let b=0;b<this.argumentVarModels_.length;b++)a.params.push({name:this.argumentVarModels_[b].name,
2063
+ b?this.argumentVarModels_.push(b):console.log(`Failed to create a variable named "${e}", ignoring.`)}this.updateParams_();$.module$build$src$core$procedures.mutateCallers(this);this.setStatements_("false"!==a.getAttribute("statements"))},saveExtraState:function(){if(!this.argumentVarModels_.length&&this.hasStatements_)return null;const a=Object.create(null);if(this.argumentVarModels_.length){a.params=[];for(let b=0;b<this.argumentVarModels_.length;b++)a.params.push({name:this.argumentVarModels_[b].name,
2043
2064
  id:this.argumentVarModels_[b].getId()})}this.hasStatements_||(a.hasStatements=!1);return a},loadExtraState:function(a){this.arguments_=[];this.argumentVarModels_=[];if(a.params)for(let c=0;c<a.params.length;c++){var b=a.params[c];b=$.module$build$src$core$variables.getOrCreateVariablePackage(this.workspace,b.id,b.name,"");this.arguments_.push(b.name);this.argumentVarModels_.push(b)}this.updateParams_();$.module$build$src$core$procedures.mutateCallers(this);this.setStatements_(!1===a.hasStatements?
2044
2065
  !1:!0)},decompose:function(a){const b=$.module$build$src$core$utils$xml.createElement("block");b.setAttribute("type","procedures_mutatorcontainer");var c=$.module$build$src$core$utils$xml.createElement("statement");c.setAttribute("name","STACK");b.appendChild(c);for(let e=0;e<this.arguments_.length;e++){const f=$.module$build$src$core$utils$xml.createElement("block");f.setAttribute("type","procedures_mutatorarg");var d=$.module$build$src$core$utils$xml.createElement("field");d.setAttribute("name",
2045
2066
  "NAME");const g=$.module$build$src$core$utils$xml.createTextNode(this.arguments_[e]);d.appendChild(g);f.appendChild(d);d=$.module$build$src$core$utils$xml.createElement("next");f.appendChild(d);c.appendChild(f);c=d}a=$.module$build$src$core$xml.domToBlock(b,a);"procedures_defreturn"===this.type?a.setFieldValue(this.hasStatements_,"STATEMENTS"):a.removeInput("STATEMENT_INPUT");$.module$build$src$core$procedures.mutateCallers(this);return a},compose:function(a){this.arguments_=[];this.paramIds_=[];
@@ -2210,8 +2231,8 @@ return module$exports$Blockly$libraryBlocks;
2210
2231
  }
2211
2232
  }(this, function(__parent__) {
2212
2233
  var $=__parent__.__namespace__;
2213
- var module$exports$Blockly$JavaScript={},module$contents$Blockly$JavaScript_Variables=$.module$build$src$core$variables,module$contents$Blockly$JavaScript_objectUtils=$.module$build$src$core$utils$object,module$contents$Blockly$JavaScript_stringUtils=$.module$build$src$core$utils$string,module$contents$Blockly$JavaScript_Generator=$.Generator$$module$build$src$core$generator,module$contents$Blockly$JavaScript_inputTypes=$.module$build$src$core$input_types.inputTypes,module$contents$Blockly$JavaScript_Names=
2214
- $.module$build$src$core$names.Names,module$contents$Blockly$JavaScript_NameType=$.NameType$$module$build$src$core$names;module$exports$Blockly$JavaScript.javascriptGenerator=new $.Generator$$module$build$src$core$generator("JavaScript");
2234
+ var module$exports$Blockly$JavaScript={},module$contents$Blockly$JavaScript_Variables=$.module$build$src$core$variables,module$contents$Blockly$JavaScript_stringUtils=$.module$build$src$core$utils$string,module$contents$Blockly$JavaScript_CodeGenerator=$.CodeGenerator$$module$build$src$core$generator,module$contents$Blockly$JavaScript_inputTypes=$.module$build$src$core$input_types.inputTypes,module$contents$Blockly$JavaScript_Names=$.module$build$src$core$names.Names,module$contents$Blockly$JavaScript_NameType=
2235
+ $.NameType$$module$build$src$core$names;module$exports$Blockly$JavaScript.javascriptGenerator=new $.CodeGenerator$$module$build$src$core$generator("JavaScript");
2215
2236
  module$exports$Blockly$JavaScript.javascriptGenerator.addReservedWords("break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,new,return,super,switch,this,throw,try,typeof,var,void,while,with,yield,enum,implements,interface,let,package,private,protected,public,static,await,null,true,false,arguments,"+Object.getOwnPropertyNames(globalThis).join(","));module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_ATOMIC=0;
2216
2237
  module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_NEW=1.1;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_MEMBER=1.2;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_FUNCTION_CALL=2;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_INCREMENT=3;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_DECREMENT=3;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_BITWISE_NOT=4.1;
2217
2238
  module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_UNARY_PLUS=4.2;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_UNARY_NEGATION=4.3;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_NOT=4.4;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_TYPEOF=4.5;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_VOID=4.6;module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_DELETE=4.7;
@@ -2223,9 +2244,8 @@ module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_OVERRIDES=[[module$e
2223
2244
  module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_FUNCTION_CALL],[module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_NOT,module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_NOT],[module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_MULTIPLICATION,module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_MULTIPLICATION],[module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_ADDITION,module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_ADDITION],
2224
2245
  [module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_AND,module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_AND],[module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_OR,module$exports$Blockly$JavaScript.javascriptGenerator.ORDER_LOGICAL_OR]];module$exports$Blockly$JavaScript.javascriptGenerator.isInitialized=!1;
2225
2246
  module$exports$Blockly$JavaScript.javascriptGenerator.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$build$src$core$names.Names(this.RESERVED_WORDS_);this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);const b=[];var c=$.module$build$src$core$variables.allDeveloperVariables(a);for(let d=0;d<c.length;d++)b.push(this.nameDB_.getName(c[d],$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE));
2226
- a=$.module$build$src$core$variables.allUsedVarModels(a);for(c=0;c<a.length;c++)b.push(this.nameDB_.getName(a[c].getId(),$.NameType$$module$build$src$core$names.VARIABLE));b.length&&(this.definitions_.variables="var "+b.join(", ")+";");this.isInitialized=!0};
2227
- module$exports$Blockly$JavaScript.javascriptGenerator.finish=function(a){const b=$.module$build$src$core$utils$object.values(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$exports$Blockly$JavaScript.javascriptGenerator.scrubNakedValue=function(a){return a+";\n"};
2228
- module$exports$Blockly$JavaScript.javascriptGenerator.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"};module$exports$Blockly$JavaScript.javascriptGenerator.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(" + '\\n' +\n")};
2247
+ a=$.module$build$src$core$variables.allUsedVarModels(a);for(c=0;c<a.length;c++)b.push(this.nameDB_.getName(a[c].getId(),$.NameType$$module$build$src$core$names.VARIABLE));b.length&&(this.definitions_.variables="var "+b.join(", ")+";");this.isInitialized=!0};module$exports$Blockly$JavaScript.javascriptGenerator.finish=function(a){const b=Object.values(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};
2248
+ module$exports$Blockly$JavaScript.javascriptGenerator.scrubNakedValue=function(a){return a+";\n"};module$exports$Blockly$JavaScript.javascriptGenerator.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"};module$exports$Blockly$JavaScript.javascriptGenerator.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(" + '\\n' +\n")};
2229
2249
  module$exports$Blockly$JavaScript.javascriptGenerator.scrub_=function(a,b,c){let d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=$.module$build$src$core$utils$string.wrap(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e+"\n","// "));for(let f=0;f<a.inputList.length;f++)a.inputList[f].type===$.module$build$src$core$input_types.inputTypes.VALUE&&(e=a.inputList[f].connection.targetBlock())&&(e=this.allNestedComments(e))&&(d+=this.prefixLines(e,"// "))}a=
2230
2250
  a.nextConnection&&a.nextConnection.targetBlock();c=c?"":this.blockToCode(a);return d+b+c};
2231
2251
  module$exports$Blockly$JavaScript.javascriptGenerator.getAdjusted=function(a,b,c,d,e){c=c||0;e=e||this.ORDER_NONE;a.workspace.options.oneBasedIndex&&c--;const f=a.workspace.options.oneBasedIndex?"1":"0";let g,h=e;0<c?g=h=this.ORDER_ADDITION:0>c?g=h=this.ORDER_SUBTRACTION:d&&(g=h=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,h)||f;$.module$build$src$core$utils$string.isNumber(a)?(a=Number(a)+c,d&&(a=-a)):(0<c?a=a+" + "+c:0>c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),g=Math.floor(g),e=Math.floor(e),