blockly 10.2.0-beta.2 → 10.2.0-beta.3

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 (128) hide show
  1. package/blockly.min.js +61 -63
  2. package/blockly_compressed.js +55 -56
  3. package/blockly_compressed.js.map +1 -1
  4. package/core/extensions.d.ts +2 -12
  5. package/msg/ab.js +6 -7
  6. package/msg/ace.js +6 -7
  7. package/msg/af.js +6 -7
  8. package/msg/am.js +6 -7
  9. package/msg/ar.js +6 -7
  10. package/msg/ast.js +6 -7
  11. package/msg/az.js +6 -7
  12. package/msg/ba.js +7 -8
  13. package/msg/bcc.js +11 -12
  14. package/msg/be-tarask.js +6 -7
  15. package/msg/be.js +6 -7
  16. package/msg/bg.js +6 -7
  17. package/msg/bn.js +6 -7
  18. package/msg/br.js +6 -7
  19. package/msg/bs.js +6 -7
  20. package/msg/ca.js +6 -7
  21. package/msg/cdo.js +6 -7
  22. package/msg/cs.js +6 -7
  23. package/msg/da.js +6 -7
  24. package/msg/de.js +6 -7
  25. package/msg/diq.js +6 -7
  26. package/msg/dty.js +6 -7
  27. package/msg/ee.js +6 -7
  28. package/msg/el.js +6 -7
  29. package/msg/en-gb.js +6 -7
  30. package/msg/en.js +6 -7
  31. package/msg/eo.js +6 -7
  32. package/msg/es.js +6 -7
  33. package/msg/et.js +6 -7
  34. package/msg/eu.js +6 -7
  35. package/msg/fa.js +6 -7
  36. package/msg/fi.js +6 -7
  37. package/msg/fo.js +6 -7
  38. package/msg/fr.js +7 -8
  39. package/msg/frr.js +6 -7
  40. package/msg/gl.js +246 -247
  41. package/msg/gn.js +8 -9
  42. package/msg/gor.js +6 -7
  43. package/msg/ha.js +6 -7
  44. package/msg/hak.js +6 -7
  45. package/msg/he.js +6 -7
  46. package/msg/hi.js +6 -7
  47. package/msg/hr.js +6 -7
  48. package/msg/hrx.js +6 -7
  49. package/msg/hu.js +6 -7
  50. package/msg/hy.js +6 -7
  51. package/msg/ia.js +6 -7
  52. package/msg/id.js +6 -7
  53. package/msg/ig.js +6 -7
  54. package/msg/inh.js +6 -7
  55. package/msg/is.js +6 -7
  56. package/msg/it.js +6 -7
  57. package/msg/ja.js +6 -7
  58. package/msg/ka.js +6 -7
  59. package/msg/kab.js +6 -7
  60. package/msg/kbd-cyrl.js +6 -7
  61. package/msg/km.js +6 -7
  62. package/msg/kn.js +6 -7
  63. package/msg/ko.js +6 -7
  64. package/msg/ksh.js +6 -7
  65. package/msg/ku-latn.js +6 -7
  66. package/msg/ky.js +9 -10
  67. package/msg/la.js +6 -7
  68. package/msg/lb.js +6 -7
  69. package/msg/lki.js +6 -7
  70. package/msg/lo.js +6 -7
  71. package/msg/lrc.js +6 -7
  72. package/msg/lt.js +7 -8
  73. package/msg/lv.js +6 -7
  74. package/msg/mg.js +6 -7
  75. package/msg/mk.js +6 -7
  76. package/msg/ml.js +6 -7
  77. package/msg/mnw.js +6 -7
  78. package/msg/ms.js +6 -7
  79. package/msg/my.js +6 -7
  80. package/msg/mzn.js +6 -7
  81. package/msg/nb.js +6 -7
  82. package/msg/ne.js +6 -7
  83. package/msg/nl.js +6 -7
  84. package/msg/oc.js +6 -7
  85. package/msg/olo.js +6 -7
  86. package/msg/pa.js +6 -7
  87. package/msg/pl.js +6 -7
  88. package/msg/pms.js +6 -7
  89. package/msg/ps.js +6 -7
  90. package/msg/pt-br.js +12 -13
  91. package/msg/pt.js +6 -7
  92. package/msg/ro.js +6 -7
  93. package/msg/ru.js +6 -7
  94. package/msg/sc.js +6 -7
  95. package/msg/sco.js +6 -7
  96. package/msg/sd.js +6 -7
  97. package/msg/shn.js +6 -7
  98. package/msg/si.js +6 -7
  99. package/msg/sk.js +6 -7
  100. package/msg/skr-arab.js +6 -7
  101. package/msg/sl.js +6 -7
  102. package/msg/smn.js +6 -7
  103. package/msg/sq.js +6 -7
  104. package/msg/sr-latn.js +6 -7
  105. package/msg/sr.js +6 -7
  106. package/msg/sv.js +6 -7
  107. package/msg/sw.js +6 -7
  108. package/msg/ta.js +6 -7
  109. package/msg/tcy.js +6 -7
  110. package/msg/tdd.js +6 -7
  111. package/msg/te.js +6 -7
  112. package/msg/th.js +6 -7
  113. package/msg/ti.js +6 -7
  114. package/msg/tl.js +6 -7
  115. package/msg/tlh.js +6 -7
  116. package/msg/tr.js +6 -7
  117. package/msg/ug-arab.js +6 -7
  118. package/msg/uk.js +6 -7
  119. package/msg/ur.js +6 -7
  120. package/msg/uz.js +6 -7
  121. package/msg/vi.js +6 -7
  122. package/msg/xmf.js +6 -7
  123. package/msg/yo.js +6 -7
  124. package/msg/yue.js +6 -7
  125. package/msg/zgh.js +6 -7
  126. package/msg/zh-hans.js +57 -58
  127. package/msg/zh-hant.js +49 -50
  128. package/package.json +2 -4
package/blockly.min.js CHANGED
@@ -21,29 +21,29 @@ getViewportBBox$$module$core$utils$svg_math,getDocumentScroll$$module$core$utils
21
21
  isCategoryCollapsible$$module$core$utils$toolbox,convertToToolboxJson$$module$core$utils$toolbox,xmlToJsonArray$$module$core$utils$toolbox,addAttributes$$module$core$utils$toolbox,parseToolboxTree$$module$core$utils$toolbox,getStartPositionRect$$module$core$positionable_helpers,getCornerOppositeToolbox$$module$core$positionable_helpers,bumpPositionRect$$module$core$positionable_helpers,alert$$module$core$dialog,setAlert$$module$core$dialog,confirm$$module$core$dialog,confirmInternal$$module$core$dialog,
22
22
  setConfirm$$module$core$dialog,prompt$$module$core$dialog,setPrompt$$module$core$dialog,isVariableBackedParameterModel$$module$core$interfaces$i_variable_backed_parameter_model,isLegacyProcedureDefBlock$$module$core$interfaces$i_legacy_procedure_blocks,isLegacyProcedureCallBlock$$module$core$interfaces$i_legacy_procedure_blocks,flyoutCategory$$module$core$variables,flyoutCategoryBlocks$$module$core$variables,generateUniqueName$$module$core$variables,generateUniqueNameInternal$$module$core$variables,
23
23
  generateUniqueNameFromOptions$$module$core$variables,createVariableButtonHandler$$module$core$variables,promptName$$module$core$variables,nameUsedWithOtherType$$module$core$variables,nameUsedWithAnyType$$module$core$variables,nameUsedWithConflictingParam$$module$core$variables,checkForConflictingParamWithProcedureModels$$module$core$variables,checkForConflictingParamWithLegacyProcedures$$module$core$variables,generateVariableFieldDom$$module$core$variables,createVariable$$module$core$variables,getAddedVariables$$module$core$variables,
24
- register$$module$core$clipboard$registry,unregister$$module$core$clipboard$registry,queueRender$$module$core$render_management,finishQueuedRenders$$module$core$render_management,triggerQueuedRenders$$module$core$render_management,queueBlock$$module$core$render_management,doRenders$$module$core$render_management,renderBlock$$module$core$render_management,updateConnectionLocations$$module$core$render_management,updateIconLocations$$module$core$render_management,workspaceToDom$$module$core$xml,variablesToDom$$module$core$xml,
25
- blockToDomWithXY$$module$core$xml,fieldToDom$$module$core$xml,allFieldsToDom$$module$core$xml,blockToDom$$module$core$xml,cloneShadow$$module$core$xml,domToText$$module$core$xml,domToPrettyText$$module$core$xml,clearWorkspaceAndLoadFromXml$$module$core$xml,appendDomToWorkspace$$module$core$xml,domToBlockInternal$$module$core$xml,domToVariables$$module$core$xml,mapSupportedXmlTags$$module$core$xml,applyMutationTagNodes$$module$core$xml,applyCommentTagNodes$$module$core$xml,applyDataTagNodes$$module$core$xml,
26
- applyFieldTagNodes$$module$core$xml,findChildBlocks$$module$core$xml,applyInputTagNodes$$module$core$xml,applyNextTagNodes$$module$core$xml,domToBlockHeadless$$module$core$xml,domToField$$module$core$xml,deleteNext$$module$core$xml,isElement$$module$core$xml,isSerializable$$module$core$interfaces$i_serializable,register$$module$core$serialization$registry,unregister$$module$core$serialization$registry,save$$module$core$serialization$blocks,saveAttributes$$module$core$serialization$blocks,saveCoords$$module$core$serialization$blocks,
27
- saveExtraState$$module$core$serialization$blocks,saveIcons$$module$core$serialization$blocks,saveFields$$module$core$serialization$blocks,saveInputBlocks$$module$core$serialization$blocks,saveNextBlocks$$module$core$serialization$blocks,saveConnection$$module$core$serialization$blocks,append$$module$core$serialization$blocks,appendInternal$$module$core$serialization$blocks,appendPrivate$$module$core$serialization$blocks,loadCoords$$module$core$serialization$blocks,loadAttributes$$module$core$serialization$blocks,
28
- loadExtraState$$module$core$serialization$blocks,tryToConnectParent$$module$core$serialization$blocks,loadIcons$$module$core$serialization$blocks,loadFields$$module$core$serialization$blocks,loadInputBlocks$$module$core$serialization$blocks,loadNextBlocks$$module$core$serialization$blocks,loadConnection$$module$core$serialization$blocks,initBlock$$module$core$serialization$blocks,moveBlockToNotConflict$$module$core$clipboard$block_paster,blockOverlapsOtherExactly$$module$core$clipboard$block_paster,
29
- blockIsInSnapRadius$$module$core$clipboard$block_paster,copy$$module$core$clipboard,copyInternal$$module$core$clipboard,paste$$module$core$clipboard,pasteFromData$$module$core$clipboard,duplicate$$module$core$clipboard,duplicateInternal$$module$core$clipboard,setRole$$module$core$utils$aria,setState$$module$core$utils$aria,getDiv$$module$core$widgetdiv,testOnly_setDiv$$module$core$widgetdiv,createDom$$module$core$widgetdiv,show$$module$core$widgetdiv,hide$$module$core$widgetdiv,isVisible$$module$core$widgetdiv,
30
- hideIfOwner$$module$core$widgetdiv,positionInternal$$module$core$widgetdiv,positionWithAnchor$$module$core$widgetdiv,calculateX$$module$core$widgetdiv,calculateY$$module$core$widgetdiv,isRepositionable$$module$core$widgetdiv,repositionForWindowResize$$module$core$widgetdiv,getCurrentBlock$$module$core$contextmenu,setCurrentBlock$$module$core$contextmenu,show$$module$core$contextmenu,populate_$$module$core$contextmenu,position_$$module$core$contextmenu,createWidget_$$module$core$contextmenu,haltPropagation$$module$core$contextmenu,
31
- hide$$module$core$contextmenu,dispose$$module$core$contextmenu,commentDeleteOption$$module$core$contextmenu,commentDuplicateOption$$module$core$contextmenu,workspaceCommentOption$$module$core$contextmenu,toRadians$$module$core$utils$math,toDegrees$$module$core$utils$math,clamp$$module$core$utils$math,createDom$$module$core$dropdowndiv,setBoundsElement$$module$core$dropdowndiv,getOwner$$module$core$dropdowndiv,getContentDiv$$module$core$dropdowndiv,clearContent$$module$core$dropdowndiv,setColour$$module$core$dropdowndiv,
32
- showPositionedByBlock$$module$core$dropdowndiv,showPositionedByField$$module$core$dropdowndiv,getScaledBboxOfBlock$$module$core$dropdowndiv,getScaledBboxOfField$$module$core$dropdowndiv,showPositionedByRect$$module$core$dropdowndiv,show$$module$core$dropdowndiv,getPositionBelowMetrics$$module$core$dropdowndiv,getPositionAboveMetrics$$module$core$dropdowndiv,getPositionTopOfPageMetrics$$module$core$dropdowndiv,getPositionX$$module$core$dropdowndiv,isVisible$$module$core$dropdowndiv,hideIfOwner$$module$core$dropdowndiv,
33
- hide$$module$core$dropdowndiv,hideWithoutAnimation$$module$core$dropdowndiv,positionInternal$$module$core$dropdowndiv,repositionForWindowResize$$module$core$dropdowndiv,disposeUiEffect$$module$core$block_animations,disposeUiStep$$module$core$block_animations,connectionUiEffect$$module$core$block_animations,disconnectUiEffect$$module$core$block_animations,disconnectUiStep$$module$core$block_animations,disconnectUiStop$$module$core$block_animations,startsWith$$module$core$utils$string,shortestStringLength$$module$core$utils$string,
34
- commonWordPrefix$$module$core$utils$string,commonWordSuffix$$module$core$utils$string,wrapLine$$module$core$utils$string,wrapScore$$module$core$utils$string,wrapMutate$$module$core$utils$string,wrapToText$$module$core$utils$string,setCustomTooltip$$module$core$tooltip,getCustomTooltip$$module$core$tooltip,isVisible$$module$core$tooltip,getDiv$$module$core$tooltip,getTooltipOfObject$$module$core$tooltip,getTargetObject$$module$core$tooltip,createDom$$module$core$tooltip,bindMouseEvents$$module$core$tooltip,
35
- unbindMouseEvents$$module$core$tooltip,onMouseOver$$module$core$tooltip,onMouseOut$$module$core$tooltip,onMouseMove$$module$core$tooltip,dispose$$module$core$tooltip,hide$$module$core$tooltip,block$$module$core$tooltip,unblock$$module$core$tooltip,renderContent$$module$core$tooltip,renderDefaultContent$$module$core$tooltip,getPosition$$module$core$tooltip,show$$module$core$tooltip,deepMerge$$module$core$utils$object,hasBubble$$module$core$interfaces$i_has_bubble,getHsvSaturation$$module$core$utils$colour,
36
- setHsvSaturation$$module$core$utils$colour,getHsvValue$$module$core$utils$colour,setHsvValue$$module$core$utils$colour,parse$$module$core$utils$colour,rgbToHex$$module$core$utils$colour,hexToRgb$$module$core$utils$colour,hsvToHex$$module$core$utils$colour,blend$$module$core$utils$colour,hueToHex$$module$core$utils$colour,tokenizeInterpolationInternal$$module$core$utils$parsing,tokenizeInterpolation$$module$core$utils$parsing,replaceMessageReferences$$module$core$utils$parsing,checkMessageReferences$$module$core$utils$parsing,
37
- parseBlockColour$$module$core$utils$parsing,isProcedureBlock$$module$core$interfaces$i_procedure_block,isObservable$$module$core$interfaces$i_observable,register$$module$core$field_registry,unregister$$module$core$field_registry,fromJsonInternal$$module$core$field_registry,trimOptions$$module$core$field_dropdown,applyTrim$$module$core$field_dropdown,validateOptions$$module$core$field_dropdown,unregister$$module$core$extensions,isRegistered$$module$core$extensions,apply$$module$core$extensions,checkNoMutatorProperties$$module$core$extensions,
38
- checkXmlHooks$$module$core$extensions,checkJsonHooks$$module$core$extensions,checkMutatorDialog$$module$core$extensions,checkHasFunctionPair$$module$core$extensions,checkHasMutatorProperties$$module$core$extensions,getMutatorProperties$$module$core$extensions,mutatorPropertiesMatch$$module$core$extensions,runAfterPageLoad$$module$core$extensions,checkDropdownOptionsInTable$$module$core$extensions,extensionParentTooltip$$module$core$extensions,point$$module$core$utils$svg_paths,curve$$module$core$utils$svg_paths,
39
- moveTo$$module$core$utils$svg_paths,moveBy$$module$core$utils$svg_paths,lineTo$$module$core$utils$svg_paths,line$$module$core$utils$svg_paths,lineOnAxis$$module$core$utils$svg_paths,arc$$module$core$utils$svg_paths,register$$module$core$icons$registry,unregister$$module$core$icons$registry,allProcedures$$module$core$procedures,procTupleComparator$$module$core$procedures,isLegalName$$module$core$procedures,isNameUsed$$module$core$procedures,flyoutCategory$$module$core$procedures,updateMutatorFlyout$$module$core$procedures,
40
- mutatorOpenListener$$module$core$procedures,mutatorChangeListener$$module$core$procedures,getCallers$$module$core$procedures,blockIsModernCallerFor$$module$core$procedures,isDynamicShape$$module$core$renderers$common$constants,getParentConnection$$module$core$keyboard_nav$ast_node,connectReciprocally$$module$core$connection,getSingleConnection$$module$core$connection,getConnectionForOrphanedOutput$$module$core$connection,register$$module$core$renderers$common$block_rendering,unregister$$module$core$renderers$common$block_rendering,
41
- init$$module$core$renderers$common$block_rendering,stringButtonClickHandler$$module$core$variables_dynamic,numberButtonClickHandler$$module$core$variables_dynamic,colourButtonClickHandler$$module$core$variables_dynamic,flyoutCategory$$module$core$variables_dynamic,flyoutCategoryBlocks$$module$core$variables_dynamic,resizeSvgContents$$module$core$workspace_svg,isCopyable$$module$core$interfaces$i_copyable,registerEscape$$module$core$shortcut_items,registerDelete$$module$core$shortcut_items,registerCopy$$module$core$shortcut_items,
42
- registerCut$$module$core$shortcut_items,registerPaste$$module$core$shortcut_items,registerUndo$$module$core$shortcut_items,registerRedo$$module$core$shortcut_items,registerDefaultShortcuts$$module$core$shortcut_items,saveProcedure$$module$core$serialization$procedures,saveParameter$$module$core$serialization$procedures,loadProcedure$$module$core$serialization$procedures,loadParameter$$module$core$serialization$procedures,save$$module$core$serialization$workspaces,load$$module$core$serialization$workspaces,
43
- bumpObjectIntoBounds$$module$core$bump_objects,bumpIntoBoundsHandler$$module$core$bump_objects,extractObjectFromEvent$$module$core$bump_objects,bumpTopObjectsIntoBounds$$module$core$bump_objects,initIconData$$module$core$block_dragger,registerUndo$$module$core$contextmenu_items,registerRedo$$module$core$contextmenu_items,registerCleanup$$module$core$contextmenu_items,toggleOption_$$module$core$contextmenu_items,registerCollapse$$module$core$contextmenu_items,registerExpand$$module$core$contextmenu_items,
44
- addDeletableBlocks_$$module$core$contextmenu_items,getDeletableBlocks_$$module$core$contextmenu_items,deleteNext_$$module$core$contextmenu_items,registerDeleteAll$$module$core$contextmenu_items,registerWorkspaceOptions_$$module$core$contextmenu_items,registerDuplicate$$module$core$contextmenu_items,registerComment$$module$core$contextmenu_items,registerInline$$module$core$contextmenu_items,registerCollapseExpandBlock$$module$core$contextmenu_items,registerDisable$$module$core$contextmenu_items,registerDelete$$module$core$contextmenu_items,
45
- registerHelp$$module$core$contextmenu_items,registerBlockOptions_$$module$core$contextmenu_items,registerDefaultOptions$$module$core$contextmenu_items,inject$$module$core$inject,createDom$$module$core$inject,createMainWorkspace$$module$core$inject,init$$module$core$inject,onKeyDown$$module$core$inject,bindDocumentEvents$$module$core$inject,loadSounds$$module$core$inject,isIcon$$module$core$interfaces$i_icon,isPaster$$module$core$interfaces$i_paster,isSelectableToolboxItem$$module$core$interfaces$i_selectable_toolbox_item,
46
- hideChaff$$module$core$blockly,$jscomp;
24
+ register$$module$core$clipboard$registry,unregister$$module$core$clipboard$registry,queueRender$$module$core$render_management,finishQueuedRenders$$module$core$render_management,triggerQueuedRenders$$module$core$render_management,alwaysImmediatelyRender$$module$core$render_management,queueBlock$$module$core$render_management,doRenders$$module$core$render_management,renderBlock$$module$core$render_management,updateConnectionLocations$$module$core$render_management,updateIconLocations$$module$core$render_management,
25
+ workspaceToDom$$module$core$xml,variablesToDom$$module$core$xml,blockToDomWithXY$$module$core$xml,fieldToDom$$module$core$xml,allFieldsToDom$$module$core$xml,blockToDom$$module$core$xml,cloneShadow$$module$core$xml,domToText$$module$core$xml,domToPrettyText$$module$core$xml,clearWorkspaceAndLoadFromXml$$module$core$xml,appendDomToWorkspace$$module$core$xml,domToBlockInternal$$module$core$xml,domToVariables$$module$core$xml,mapSupportedXmlTags$$module$core$xml,applyMutationTagNodes$$module$core$xml,
26
+ applyCommentTagNodes$$module$core$xml,applyDataTagNodes$$module$core$xml,applyFieldTagNodes$$module$core$xml,findChildBlocks$$module$core$xml,applyInputTagNodes$$module$core$xml,applyNextTagNodes$$module$core$xml,domToBlockHeadless$$module$core$xml,domToField$$module$core$xml,deleteNext$$module$core$xml,isElement$$module$core$xml,isSerializable$$module$core$interfaces$i_serializable,register$$module$core$serialization$registry,unregister$$module$core$serialization$registry,save$$module$core$serialization$blocks,
27
+ saveAttributes$$module$core$serialization$blocks,saveCoords$$module$core$serialization$blocks,saveExtraState$$module$core$serialization$blocks,saveIcons$$module$core$serialization$blocks,saveFields$$module$core$serialization$blocks,saveInputBlocks$$module$core$serialization$blocks,saveNextBlocks$$module$core$serialization$blocks,saveConnection$$module$core$serialization$blocks,append$$module$core$serialization$blocks,appendInternal$$module$core$serialization$blocks,appendPrivate$$module$core$serialization$blocks,
28
+ loadCoords$$module$core$serialization$blocks,loadAttributes$$module$core$serialization$blocks,loadExtraState$$module$core$serialization$blocks,tryToConnectParent$$module$core$serialization$blocks,loadIcons$$module$core$serialization$blocks,loadFields$$module$core$serialization$blocks,loadInputBlocks$$module$core$serialization$blocks,loadNextBlocks$$module$core$serialization$blocks,loadConnection$$module$core$serialization$blocks,initBlock$$module$core$serialization$blocks,moveBlockToNotConflict$$module$core$clipboard$block_paster,
29
+ blockOverlapsOtherExactly$$module$core$clipboard$block_paster,blockIsInSnapRadius$$module$core$clipboard$block_paster,copy$$module$core$clipboard,copyInternal$$module$core$clipboard,paste$$module$core$clipboard,pasteFromData$$module$core$clipboard,duplicate$$module$core$clipboard,duplicateInternal$$module$core$clipboard,setRole$$module$core$utils$aria,setState$$module$core$utils$aria,getDiv$$module$core$widgetdiv,testOnly_setDiv$$module$core$widgetdiv,createDom$$module$core$widgetdiv,show$$module$core$widgetdiv,
30
+ hide$$module$core$widgetdiv,isVisible$$module$core$widgetdiv,hideIfOwner$$module$core$widgetdiv,positionInternal$$module$core$widgetdiv,positionWithAnchor$$module$core$widgetdiv,calculateX$$module$core$widgetdiv,calculateY$$module$core$widgetdiv,isRepositionable$$module$core$widgetdiv,repositionForWindowResize$$module$core$widgetdiv,getCurrentBlock$$module$core$contextmenu,setCurrentBlock$$module$core$contextmenu,show$$module$core$contextmenu,populate_$$module$core$contextmenu,position_$$module$core$contextmenu,
31
+ createWidget_$$module$core$contextmenu,haltPropagation$$module$core$contextmenu,hide$$module$core$contextmenu,dispose$$module$core$contextmenu,commentDeleteOption$$module$core$contextmenu,commentDuplicateOption$$module$core$contextmenu,workspaceCommentOption$$module$core$contextmenu,toRadians$$module$core$utils$math,toDegrees$$module$core$utils$math,clamp$$module$core$utils$math,createDom$$module$core$dropdowndiv,setBoundsElement$$module$core$dropdowndiv,getOwner$$module$core$dropdowndiv,getContentDiv$$module$core$dropdowndiv,
32
+ clearContent$$module$core$dropdowndiv,setColour$$module$core$dropdowndiv,showPositionedByBlock$$module$core$dropdowndiv,showPositionedByField$$module$core$dropdowndiv,getScaledBboxOfBlock$$module$core$dropdowndiv,getScaledBboxOfField$$module$core$dropdowndiv,showPositionedByRect$$module$core$dropdowndiv,show$$module$core$dropdowndiv,getPositionBelowMetrics$$module$core$dropdowndiv,getPositionAboveMetrics$$module$core$dropdowndiv,getPositionTopOfPageMetrics$$module$core$dropdowndiv,getPositionX$$module$core$dropdowndiv,
33
+ isVisible$$module$core$dropdowndiv,hideIfOwner$$module$core$dropdowndiv,hide$$module$core$dropdowndiv,hideWithoutAnimation$$module$core$dropdowndiv,positionInternal$$module$core$dropdowndiv,repositionForWindowResize$$module$core$dropdowndiv,disposeUiEffect$$module$core$block_animations,disposeUiStep$$module$core$block_animations,connectionUiEffect$$module$core$block_animations,disconnectUiEffect$$module$core$block_animations,disconnectUiStep$$module$core$block_animations,disconnectUiStop$$module$core$block_animations,
34
+ startsWith$$module$core$utils$string,shortestStringLength$$module$core$utils$string,commonWordPrefix$$module$core$utils$string,commonWordSuffix$$module$core$utils$string,wrapLine$$module$core$utils$string,wrapScore$$module$core$utils$string,wrapMutate$$module$core$utils$string,wrapToText$$module$core$utils$string,setCustomTooltip$$module$core$tooltip,getCustomTooltip$$module$core$tooltip,isVisible$$module$core$tooltip,getDiv$$module$core$tooltip,getTooltipOfObject$$module$core$tooltip,getTargetObject$$module$core$tooltip,
35
+ createDom$$module$core$tooltip,bindMouseEvents$$module$core$tooltip,unbindMouseEvents$$module$core$tooltip,onMouseOver$$module$core$tooltip,onMouseOut$$module$core$tooltip,onMouseMove$$module$core$tooltip,dispose$$module$core$tooltip,hide$$module$core$tooltip,block$$module$core$tooltip,unblock$$module$core$tooltip,renderContent$$module$core$tooltip,renderDefaultContent$$module$core$tooltip,getPosition$$module$core$tooltip,show$$module$core$tooltip,deepMerge$$module$core$utils$object,hasBubble$$module$core$interfaces$i_has_bubble,
36
+ getHsvSaturation$$module$core$utils$colour,setHsvSaturation$$module$core$utils$colour,getHsvValue$$module$core$utils$colour,setHsvValue$$module$core$utils$colour,parse$$module$core$utils$colour,rgbToHex$$module$core$utils$colour,hexToRgb$$module$core$utils$colour,hsvToHex$$module$core$utils$colour,blend$$module$core$utils$colour,hueToHex$$module$core$utils$colour,tokenizeInterpolationInternal$$module$core$utils$parsing,tokenizeInterpolation$$module$core$utils$parsing,replaceMessageReferences$$module$core$utils$parsing,
37
+ checkMessageReferences$$module$core$utils$parsing,parseBlockColour$$module$core$utils$parsing,isProcedureBlock$$module$core$interfaces$i_procedure_block,isObservable$$module$core$interfaces$i_observable,register$$module$core$field_registry,unregister$$module$core$field_registry,fromJsonInternal$$module$core$field_registry,trimOptions$$module$core$field_dropdown,applyTrim$$module$core$field_dropdown,validateOptions$$module$core$field_dropdown,unregister$$module$core$extensions,isRegistered$$module$core$extensions,
38
+ apply$$module$core$extensions,checkNoMutatorProperties$$module$core$extensions,checkXmlHooks$$module$core$extensions,checkJsonHooks$$module$core$extensions,checkMutatorDialog$$module$core$extensions,checkHasFunctionPair$$module$core$extensions,checkHasMutatorProperties$$module$core$extensions,getMutatorProperties$$module$core$extensions,mutatorPropertiesMatch$$module$core$extensions,runAfterPageLoad$$module$core$extensions,checkDropdownOptionsInTable$$module$core$extensions,extensionParentTooltip$$module$core$extensions,
39
+ point$$module$core$utils$svg_paths,curve$$module$core$utils$svg_paths,moveTo$$module$core$utils$svg_paths,moveBy$$module$core$utils$svg_paths,lineTo$$module$core$utils$svg_paths,line$$module$core$utils$svg_paths,lineOnAxis$$module$core$utils$svg_paths,arc$$module$core$utils$svg_paths,register$$module$core$icons$registry,unregister$$module$core$icons$registry,allProcedures$$module$core$procedures,procTupleComparator$$module$core$procedures,isLegalName$$module$core$procedures,isNameUsed$$module$core$procedures,
40
+ flyoutCategory$$module$core$procedures,updateMutatorFlyout$$module$core$procedures,mutatorOpenListener$$module$core$procedures,mutatorChangeListener$$module$core$procedures,getCallers$$module$core$procedures,blockIsModernCallerFor$$module$core$procedures,isDynamicShape$$module$core$renderers$common$constants,getParentConnection$$module$core$keyboard_nav$ast_node,connectReciprocally$$module$core$connection,getSingleConnection$$module$core$connection,getConnectionForOrphanedOutput$$module$core$connection,
41
+ register$$module$core$renderers$common$block_rendering,unregister$$module$core$renderers$common$block_rendering,init$$module$core$renderers$common$block_rendering,stringButtonClickHandler$$module$core$variables_dynamic,numberButtonClickHandler$$module$core$variables_dynamic,colourButtonClickHandler$$module$core$variables_dynamic,flyoutCategory$$module$core$variables_dynamic,flyoutCategoryBlocks$$module$core$variables_dynamic,resizeSvgContents$$module$core$workspace_svg,isCopyable$$module$core$interfaces$i_copyable,
42
+ registerEscape$$module$core$shortcut_items,registerDelete$$module$core$shortcut_items,registerCopy$$module$core$shortcut_items,registerCut$$module$core$shortcut_items,registerPaste$$module$core$shortcut_items,registerUndo$$module$core$shortcut_items,registerRedo$$module$core$shortcut_items,registerDefaultShortcuts$$module$core$shortcut_items,saveProcedure$$module$core$serialization$procedures,saveParameter$$module$core$serialization$procedures,loadProcedure$$module$core$serialization$procedures,loadParameter$$module$core$serialization$procedures,
43
+ save$$module$core$serialization$workspaces,load$$module$core$serialization$workspaces,bumpObjectIntoBounds$$module$core$bump_objects,bumpIntoBoundsHandler$$module$core$bump_objects,extractObjectFromEvent$$module$core$bump_objects,bumpTopObjectsIntoBounds$$module$core$bump_objects,initIconData$$module$core$block_dragger,registerUndo$$module$core$contextmenu_items,registerRedo$$module$core$contextmenu_items,registerCleanup$$module$core$contextmenu_items,toggleOption_$$module$core$contextmenu_items,
44
+ registerCollapse$$module$core$contextmenu_items,registerExpand$$module$core$contextmenu_items,addDeletableBlocks_$$module$core$contextmenu_items,getDeletableBlocks_$$module$core$contextmenu_items,deleteNext_$$module$core$contextmenu_items,registerDeleteAll$$module$core$contextmenu_items,registerWorkspaceOptions_$$module$core$contextmenu_items,registerDuplicate$$module$core$contextmenu_items,registerComment$$module$core$contextmenu_items,registerInline$$module$core$contextmenu_items,registerCollapseExpandBlock$$module$core$contextmenu_items,
45
+ registerDisable$$module$core$contextmenu_items,registerDelete$$module$core$contextmenu_items,registerHelp$$module$core$contextmenu_items,registerBlockOptions_$$module$core$contextmenu_items,registerDefaultOptions$$module$core$contextmenu_items,inject$$module$core$inject,createDom$$module$core$inject,createMainWorkspace$$module$core$inject,init$$module$core$inject,onKeyDown$$module$core$inject,bindDocumentEvents$$module$core$inject,loadSounds$$module$core$inject,isIcon$$module$core$interfaces$i_icon,
46
+ isPaster$$module$core$interfaces$i_paster,isSelectableToolboxItem$$module$core$interfaces$i_selectable_toolbox_item,hideChaff$$module$core$blockly,$jscomp;
47
47
  register$$module$core$registry=function(a,b,c,d){if(!(a instanceof Type$$module$core$registry)&&"string"!==typeof a||""===`${a}`.trim())throw Error('Invalid type "'+a+'". The type must be a non-empty string or a Blockly.registry.Type.');a=`${a}`.toLowerCase();if("string"!==typeof b||""===b.trim())throw Error('Invalid name "'+b+'". The name must be a non-empty string.');const e=b.toLowerCase();if(!c)throw Error("Can not register a null value");let f=typeMap$$module$core$registry[a],g=nameMap$$module$core$registry[a];
48
48
  f||(f=typeMap$$module$core$registry[a]=Object.create(null),g=nameMap$$module$core$registry[a]=Object.create(null));validate$$module$core$registry(a,c);if(!d&&f[e])throw Error('Name "'+e+'" with type "'+a+'" already registered.');f[e]=c;g[e]=b};validate$$module$core$registry=function(a,b){switch(a){case String(Type$$module$core$registry.FIELD):if("function"!==typeof b.fromJson)throw Error('Type "'+a+'" must have a fromJson function');}};
49
49
  unregister$$module$core$registry=function(a,b){a=`${a}`.toLowerCase();b=b.toLowerCase();const c=typeMap$$module$core$registry[a];c&&c[b]?(delete typeMap$$module$core$registry[a][b],delete nameMap$$module$core$registry[a][b]):console.warn("Unable to unregister ["+b+"]["+a+"] from the registry.")};
@@ -84,8 +84,8 @@ startTextWidthCache$$module$core$utils$dom=function(){cacheReference$$module$cor
84
84
  getTextWidth$$module$core$utils$dom=function(a){const b=a.textContent+"\n"+a.className.baseVal;let c;if(cacheWidths$$module$core$utils$dom&&(c=cacheWidths$$module$core$utils$dom[b]))return c;try{c=a.getComputedTextLength()}catch(d){return 8*a.textContent.length}cacheWidths$$module$core$utils$dom&&(cacheWidths$$module$core$utils$dom[b]=c);return c};getFastTextWidth$$module$core$utils$dom=function(a,b,c,d){return getFastTextWidthWithSizeString$$module$core$utils$dom(a,b+"pt",c,d)};
85
85
  getFastTextWidthWithSizeString$$module$core$utils$dom=function(a,b,c,d){const e=a.textContent;a=e+"\n"+a.className.baseVal;var f;if(cacheWidths$$module$core$utils$dom&&(f=cacheWidths$$module$core$utils$dom[a]))return f;canvasContext$$module$core$utils$dom||(f=document.createElement("canvas"),f.className="blocklyComputeCanvas",document.body.appendChild(f),canvasContext$$module$core$utils$dom=f.getContext("2d"));canvasContext$$module$core$utils$dom.font=c+" "+b+" "+d;f=e?canvasContext$$module$core$utils$dom.measureText(e).width:
86
86
  0;cacheWidths$$module$core$utils$dom&&(cacheWidths$$module$core$utils$dom[a]=f);return f};
87
- measureFontMetrics$$module$core$utils$dom=function(a,b,c,d){const e=document.createElement("span");e.style.font=c+" "+b+" "+d;e.textContent=a;a=document.createElement("div");a.style.width="1px";a.style.height="0";b=document.createElement("div");b.setAttribute("style","position: fixed; top: 0; left: 0; display: flex;");b.appendChild(e);b.appendChild(a);document.body.appendChild(b);c={height:0,baseline:0};try{b.style.alignItems="baseline",c.baseline=a.offsetTop-e.offsetTop,b.style.alignItems="flex-end",
88
- c.height=a.offsetTop-e.offsetTop}finally{document.body.removeChild(b)}return c};getSize$$module$core$utils$style=function(a){return TEST_ONLY$$module$core$utils$style.getSizeInternal(a)};
87
+ measureFontMetrics$$module$core$utils$dom=function(a,b,c,d){const e=document.createElement("span");e.style.font=c+" "+b+" "+d;e.textContent=a;a=document.createElement("div");a.style.width="1px";a.style.height="0";b=document.createElement("div");b.style.display="flex";b.style.position="fixed";b.style.top="0";b.style.left="0";b.appendChild(e);b.appendChild(a);document.body.appendChild(b);c={height:0,baseline:0};try{b.style.alignItems="baseline",c.baseline=a.offsetTop-e.offsetTop,b.style.alignItems=
88
+ "flex-end",c.height=a.offsetTop-e.offsetTop}finally{document.body.removeChild(b)}return c};getSize$$module$core$utils$style=function(a){return TEST_ONLY$$module$core$utils$style.getSizeInternal(a)};
89
89
  getSizeInternal$$module$core$utils$style=function(a){if("none"!==getComputedStyle$$module$core$utils$style(a,"display"))return getSizeWithDisplay$$module$core$utils$style(a);const b=a.style,c=b.display,d=b.visibility,e=b.position;b.visibility="hidden";b.position="absolute";b.display="inline";const f=a.offsetWidth;a=a.offsetHeight;b.display=c;b.position=e;b.visibility=d;return new Size$$module$core$utils$size(f,a)};
90
90
  getSizeWithDisplay$$module$core$utils$style=function(a){return new Size$$module$core$utils$size(a.offsetWidth,a.offsetHeight)};getComputedStyle$$module$core$utils$style=function(a,b){a=window.getComputedStyle(a);return a[b]||a.getPropertyValue(b)};
91
91
  getPageOffset$$module$core$utils$style=function(a){const b=new Coordinate$$module$core$utils$coordinate(0,0);a=a.getBoundingClientRect();var c=document.documentElement;c=new Coordinate$$module$core$utils$coordinate(window.pageXOffset||c.scrollLeft,window.pageYOffset||c.scrollTop);b.x=a.left+c.x;b.y=a.top+c.y;return b};
@@ -134,9 +134,9 @@ generateVariableFieldDom$$module$core$variables=function(a){const b=$.createElem
134
134
  $.getVariable$$module$core$variables=function(a,b,c,d){const e=a.getPotentialVariableMap();let f=null;if(b&&(f=a.getVariableById(b),!f&&e&&(f=e.getVariableById(b)),f))return f;if(c){if(void 0===d)throw Error("Tried to look up a variable by name without a type");f=a.getVariable(c,d);!f&&e&&(f=e.getVariable(c,d))}return f};
135
135
  createVariable$$module$core$variables=function(a,b,c,d){const e=a.getPotentialVariableMap();c||(c=generateUniqueName$$module$core$variables(a.isFlyout?a.targetWorkspace:a));return e?e.createVariable(c,d,b):a.createVariable(c,d,b)};getAddedVariables$$module$core$variables=function(a,b){a=a.getAllVariables();const c=[];if(b.length!==a.length)for(let d=0;d<a.length;d++){const e=a[d];-1===b.indexOf(e)&&c.push(e)}return c};
136
136
  register$$module$core$clipboard$registry=function(a,b){register$$module$core$registry(Type$$module$core$registry.PASTER,a,b)};unregister$$module$core$clipboard$registry=function(a){unregister$$module$core$registry(Type$$module$core$registry.PASTER,a)};
137
- queueRender$$module$core$render_management=function(a){queueBlock$$module$core$render_management(a);afterRendersPromise$$module$core$render_management||(afterRendersPromise$$module$core$render_management=new Promise(b=>{afterRendersResolver$$module$core$render_management=b;animationRequestId$$module$core$render_management=window.requestAnimationFrame(()=>{doRenders$$module$core$render_management();b()})}));return afterRendersPromise$$module$core$render_management};
138
- finishQueuedRenders$$module$core$render_management=function(){return afterRendersPromise$$module$core$render_management?afterRendersPromise$$module$core$render_management:Promise.resolve()};triggerQueuedRenders$$module$core$render_management=function(){window.cancelAnimationFrame(animationRequestId$$module$core$render_management);doRenders$$module$core$render_management();afterRendersResolver$$module$core$render_management&&afterRendersResolver$$module$core$render_management()};
139
- queueBlock$$module$core$render_management=function(a){dirtyBlocks$$module$core$render_management.add(a);const b=a.getParent();b?queueBlock$$module$core$render_management(b):rootBlocks$$module$core$render_management.add(a)};
137
+ queueRender$$module$core$render_management=function(a){queueBlock$$module$core$render_management(a);if(alwaysImmediatelyRender$$module$core$render_management())return doRenders$$module$core$render_management(),Promise.resolve();afterRendersPromise$$module$core$render_management||(afterRendersPromise$$module$core$render_management=new Promise(b=>{afterRendersResolver$$module$core$render_management=b;animationRequestId$$module$core$render_management=window.requestAnimationFrame(()=>{doRenders$$module$core$render_management();
138
+ b()})}));return afterRendersPromise$$module$core$render_management};finishQueuedRenders$$module$core$render_management=function(){return afterRendersPromise$$module$core$render_management?afterRendersPromise$$module$core$render_management:Promise.resolve()};triggerQueuedRenders$$module$core$render_management=function(){window.cancelAnimationFrame(animationRequestId$$module$core$render_management);doRenders$$module$core$render_management();afterRendersResolver$$module$core$render_management&&afterRendersResolver$$module$core$render_management()};
139
+ alwaysImmediatelyRender$$module$core$render_management=function(){return JavaFx$$module$core$utils$useragent};queueBlock$$module$core$render_management=function(a){dirtyBlocks$$module$core$render_management.add(a);const b=a.getParent();b?queueBlock$$module$core$render_management(b):rootBlocks$$module$core$render_management.add(a)};
140
140
  doRenders$$module$core$render_management=function(){const a=new Set([...rootBlocks$$module$core$render_management].map(b=>b.workspace));for(const b of rootBlocks$$module$core$render_management){if(b.isDisposed())continue;if(b.getParent())continue;renderBlock$$module$core$render_management(b);const c=b.getRelativeToSurfaceXY();updateConnectionLocations$$module$core$render_management(b,c);updateIconLocations$$module$core$render_management(b,c)}for(const b of a)b.resizeContents();rootBlocks$$module$core$render_management.clear();
141
141
  dirtyBlocks$$module$core$render_management=new Set;afterRendersPromise$$module$core$render_management=null};renderBlock$$module$core$render_management=function(a){if(dirtyBlocks$$module$core$render_management.has(a)){for(const b of a.getChildren(!1))renderBlock$$module$core$render_management(b);a.renderEfficiently()}};
142
142
  updateConnectionLocations$$module$core$render_management=function(a,b){for(const c of a.getConnections_(!1)){a=c.moveToOffset(b);const d=c.targetBlock();c.isSuperior()&&d&&(a||dirtyBlocks$$module$core$render_management.has(d))&&updateConnectionLocations$$module$core$render_management(d,Coordinate$$module$core$utils$coordinate.sum(b,d.relativeCoords))}};
@@ -180,8 +180,8 @@ saveIcons$$module$core$serialization$blocks=function(a,b,c){const d=Object.creat
180
180
  saveFields$$module$core$serialization$blocks=function(a,b,c){const d=Object.create(null);for(let e=0;e<a.inputList.length;e++){const f=a.inputList[e];for(let g=0;g<f.fieldRow.length;g++){const h=f.fieldRow[g];h.isSerializable()&&(d[h.name]=h.saveState(c))}}Object.keys(d).length&&(b.fields=d)};
181
181
  saveInputBlocks$$module$core$serialization$blocks=function(a,b,c){const d=Object.create(null);for(let e=0;e<a.inputList.length;e++){const f=a.inputList[e];if(!f.connection)continue;const g=saveConnection$$module$core$serialization$blocks(f.connection,c);g&&(d[f.name]=g)}Object.keys(d).length&&(b.inputs=d)};saveNextBlocks$$module$core$serialization$blocks=function(a,b,c){a.nextConnection&&(a=saveConnection$$module$core$serialization$blocks(a.nextConnection,c))&&(b.next=a)};
182
182
  saveConnection$$module$core$serialization$blocks=function(a,b){const c=a.getShadowState(!0);a=a.targetBlock();if(!c&&!a)return null;const d=Object.create(null);c&&(d.shadow=c);a&&!a.isShadow()&&(d.block=save$$module$core$serialization$blocks(a,{doFullSerialization:b}));return d};append$$module$core$serialization$blocks=function(a,b,{recordUndo:c=!1}={}){a=appendInternal$$module$core$serialization$blocks(a,b,{recordUndo:c});b.rendered&&triggerQueuedRenders$$module$core$render_management();return a};
183
- appendInternal$$module$core$serialization$blocks=function(a,b,{parentConnection:c,isShadow:d=!1,recordUndo:e=!1}={}){const f=getRecordUndo$$module$core$events$utils();setRecordUndo$$module$core$events$utils(e);(e=$.getGroup$$module$core$events$utils())||$.setGroup$$module$core$events$utils(!0);$.disable$$module$core$events$utils();const g=appendPrivate$$module$core$serialization$blocks(a,b,{parentConnection:c,isShadow:d});$.enable$$module$core$events$utils();isEnabled$$module$core$events$utils()&&
184
- fire$$module$core$events$utils(new (get$$module$core$events$utils($.CREATE$$module$core$events$utils))(g));$.setGroup$$module$core$events$utils(e);setRecordUndo$$module$core$events$utils(f);b.rendered&&setTimeout(()=>{g.disposed||g.setConnectionTracking(!0)},1);return g};
183
+ appendInternal$$module$core$serialization$blocks=function(a,b,{parentConnection:c,isShadow:d=!1,recordUndo:e=!1}={}){const f=getRecordUndo$$module$core$events$utils();setRecordUndo$$module$core$events$utils(e);(e=$.getGroup$$module$core$events$utils())||$.setGroup$$module$core$events$utils(!0);$.disable$$module$core$events$utils();let g;try{g=appendPrivate$$module$core$serialization$blocks(a,b,{parentConnection:c,isShadow:d})}finally{$.enable$$module$core$events$utils()}isEnabled$$module$core$events$utils()&&
184
+ fire$$module$core$events$utils(new (get$$module$core$events$utils($.CREATE$$module$core$events$utils))(g));$.setGroup$$module$core$events$utils(e);setRecordUndo$$module$core$events$utils(f);if(b.rendered){const h=g;setTimeout(()=>{h.disposed||h.setConnectionTracking(!0)},1)}return g};
185
185
  appendPrivate$$module$core$serialization$blocks=function(a,b,{parentConnection:c,isShadow:d=!1}={}){if(!a.type)throw new MissingBlockType$$module$core$serialization$exceptions(a);const e=b.newBlock(a.type,a.id);e.setShadow(d);loadCoords$$module$core$serialization$blocks(e,a);loadAttributes$$module$core$serialization$blocks(e,a);loadExtraState$$module$core$serialization$blocks(e,a);tryToConnectParent$$module$core$serialization$blocks(c,e,a);loadIcons$$module$core$serialization$blocks(e,a);loadFields$$module$core$serialization$blocks(e,
186
186
  a);loadInputBlocks$$module$core$serialization$blocks(e,a);loadNextBlocks$$module$core$serialization$blocks(e,a);initBlock$$module$core$serialization$blocks(e,b.rendered);return e};loadCoords$$module$core$serialization$blocks=function(a,b){let c=void 0===b.x?0:b.x;b=void 0===b.y?0:b.y;const d=a.workspace;c=d.RTL?d.getWidth()-c:c;a.moveBy(c,b)};
187
187
  loadAttributes$$module$core$serialization$blocks=function(a,b){b.collapsed&&a.setCollapsed(!0);!1===b.deletable&&a.setDeletable(!1);!1===b.movable&&a.setMovable(!1);!1===b.editable&&a.setEditable(!1);!1===b.enabled&&a.setEnabled(!1);void 0!==b.inline&&a.setInputsInline(b.inline);void 0!==b.data&&(a.data=b.data)};loadExtraState$$module$core$serialization$blocks=function(a,b){b.extraState&&(a.loadExtraState?a.loadExtraState(b.extraState):a.domToMutation&&a.domToMutation($.textToDom$$module$core$utils$xml(b.extraState)))};
@@ -295,12 +295,11 @@ checkHasFunctionPair$$module$core$extensions=function(a,b,c){if(a&&b){if("functi
295
295
  checkHasMutatorProperties$$module$core$extensions=function(a,b){const c=checkXmlHooks$$module$core$extensions(b,a),d=checkJsonHooks$$module$core$extensions(b,a);if(!c&&!d)throw Error(a+"Mutations must contain either XML hooks, or JSON hooks, or both");checkMutatorDialog$$module$core$extensions(b,a)};
296
296
  getMutatorProperties$$module$core$extensions=function(a){const b=[];void 0!==a.domToMutation&&b.push(a.domToMutation);void 0!==a.mutationToDom&&b.push(a.mutationToDom);void 0!==a.saveExtraState&&b.push(a.saveExtraState);void 0!==a.loadExtraState&&b.push(a.loadExtraState);void 0!==a.compose&&b.push(a.compose);void 0!==a.decompose&&b.push(a.decompose);return b};
297
297
  mutatorPropertiesMatch$$module$core$extensions=function(a,b){b=getMutatorProperties$$module$core$extensions(b);if(b.length!==a.length)return!1;for(let c=0;c<b.length;c++)if(a[c]!==b[c])return!1;return!0};runAfterPageLoad$$module$core$extensions=function(a){if("object"!==typeof document)throw Error("runAfterPageLoad() requires browser document.");if("complete"===document.readyState)a();else{const b=setInterval(function(){"complete"===document.readyState&&(clearInterval(b),a())},10)}};
298
- $.buildTooltipForDropdown$$module$core$extensions=function(a,b){const c=[];"object"===typeof document&&runAfterPageLoad$$module$core$extensions(function(){for(const d in b)checkMessageReferences$$module$core$utils$parsing(b[d])});return function(){this.type&&-1===c.indexOf(this.type)&&(checkDropdownOptionsInTable$$module$core$extensions(this,a,b),c.push(this.type));this.setTooltip(function(){var d=String(this.getFieldValue(a));let e=b[d];null===e?-1===c.indexOf(this.type)&&(d="No tooltip mapping for value "+
299
- d+" of field "+a,null!==this.type&&(d+=" of block type "+this.type),console.warn(d+".")):e=replaceMessageReferences$$module$core$utils$parsing(e);return e}.bind(this))}};checkDropdownOptionsInTable$$module$core$extensions=function(a,b,c){var d=a.getField(b);if(d instanceof FieldDropdown$$module$core$field_dropdown&&!d.isOptionListDynamic()){d=d.getOptions();for(let e=0;e<d.length;e++){const f=d[e][1];null===c[f]&&console.warn("No tooltip mapping for value "+f+" of field "+b+" of block type "+a.type)}}};
300
- $.buildTooltipWithFieldText$$module$core$extensions=function(a,b){"object"===typeof document&&runAfterPageLoad$$module$core$extensions(function(){checkMessageReferences$$module$core$utils$parsing(a)});return function(){this.setTooltip(function(){const c=this.getField(b);return replaceMessageReferences$$module$core$utils$parsing(a).replace("%1",c?c.getText():"")}.bind(this))}};
301
- extensionParentTooltip$$module$core$extensions=function(){const a=this.tooltip;this.setTooltip(function(){const b=this.getParent();return b&&b.getInputsInline()&&b.tooltip||a}.bind(this))};point$$module$core$utils$svg_paths=function(a,b){return" "+a+","+b+" "};curve$$module$core$utils$svg_paths=function(a,b){return" "+a+b.join("")};moveTo$$module$core$utils$svg_paths=function(a,b){return" M "+a+","+b+" "};moveBy$$module$core$utils$svg_paths=function(a,b){return" m "+a+","+b+" "};
302
- lineTo$$module$core$utils$svg_paths=function(a,b){return" l "+a+","+b+" "};line$$module$core$utils$svg_paths=function(a){return" l"+a.join("")};lineOnAxis$$module$core$utils$svg_paths=function(a,b){return" "+a+" "+b+" "};arc$$module$core$utils$svg_paths=function(a,b,c,d){return a+" "+c+" "+c+" "+b+d};register$$module$core$icons$registry=function(a,b){register$$module$core$registry(Type$$module$core$registry.ICON,a.toString(),b)};
303
- unregister$$module$core$icons$registry=function(a){unregister$$module$core$registry(Type$$module$core$registry.ICON,a)};
298
+ $.buildTooltipForDropdown$$module$core$extensions=function(a,b){const c=[];return function(){-1===c.indexOf(this.type)&&(checkDropdownOptionsInTable$$module$core$extensions(this,a,b),c.push(this.type));this.setTooltip(function(){const d=String(this.getFieldValue(a));return replaceMessageReferences$$module$core$utils$parsing(b[d])}.bind(this))}};
299
+ checkDropdownOptionsInTable$$module$core$extensions=function(a,b,c){var d=a.getField(b);if(d instanceof FieldDropdown$$module$core$field_dropdown&&!d.isOptionListDynamic()){d=d.getOptions();for(const [,e]of d)void 0===c[e]&&console.warn(`No tooltip mapping for value ${e} of field `+`${b} of block type ${a.type}.`)}};
300
+ $.buildTooltipWithFieldText$$module$core$extensions=function(a,b){return function(){this.setTooltip(function(){const c=this.getField(b);return replaceMessageReferences$$module$core$utils$parsing(a).replace("%1",c?c.getText():"")}.bind(this))}};extensionParentTooltip$$module$core$extensions=function(){const a=this.tooltip;this.setTooltip(function(){const b=this.getParent();return b&&b.getInputsInline()&&b.tooltip||a}.bind(this))};point$$module$core$utils$svg_paths=function(a,b){return" "+a+","+b+" "};
301
+ curve$$module$core$utils$svg_paths=function(a,b){return" "+a+b.join("")};moveTo$$module$core$utils$svg_paths=function(a,b){return" M "+a+","+b+" "};moveBy$$module$core$utils$svg_paths=function(a,b){return" m "+a+","+b+" "};lineTo$$module$core$utils$svg_paths=function(a,b){return" l "+a+","+b+" "};line$$module$core$utils$svg_paths=function(a){return" l"+a.join("")};lineOnAxis$$module$core$utils$svg_paths=function(a,b){return" "+a+" "+b+" "};
302
+ arc$$module$core$utils$svg_paths=function(a,b,c,d){return a+" "+c+" "+c+" "+b+d};register$$module$core$icons$registry=function(a,b){register$$module$core$registry(Type$$module$core$registry.ICON,a.toString(),b)};unregister$$module$core$icons$registry=function(a){unregister$$module$core$registry(Type$$module$core$registry.ICON,a)};
304
303
  allProcedures$$module$core$procedures=function(a){const b=a.getProcedureMap().getProcedures().filter(d=>!d.getReturnTypes()).map(d=>[d.getName(),d.getParameters().map(e=>e.getName()),!1]);a.getBlocksByType("procedures_defnoreturn",!1).forEach(d=>{!isProcedureBlock$$module$core$interfaces$i_procedure_block(d)&&isLegacyProcedureDefBlock$$module$core$interfaces$i_legacy_procedure_blocks(d)&&b.push(d.getProcedureDef())});const c=a.getProcedureMap().getProcedures().filter(d=>!!d.getReturnTypes()).map(d=>
305
304
  [d.getName(),d.getParameters().map(e=>e.getName()),!0]);a.getBlocksByType("procedures_defreturn",!1).forEach(d=>{!isProcedureBlock$$module$core$interfaces$i_procedure_block(d)&&isLegacyProcedureDefBlock$$module$core$interfaces$i_legacy_procedure_blocks(d)&&c.push(d.getProcedureDef())});b.sort(procTupleComparator$$module$core$procedures);c.sort(procTupleComparator$$module$core$procedures);return[b,c]};procTupleComparator$$module$core$procedures=function(a,b){return a[0].localeCompare(b[0],void 0,{sensitivity:"base"})};
306
305
  $.findLegalName$$module$core$procedures=function(a,b){if(b.isInFlyout)return a;for(a=a||$.Msg$$module$core$msg.UNNAMED_KEY||"unnamed";!isLegalName$$module$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$core$procedures=function(a,b,c){return!isNameUsed$$module$core$procedures(a,b,c)};
@@ -859,10 +858,10 @@ a=moveBy$$module$core$utils$svg_paths(a,0)+lineOnAxis$$module$core$utils$svg_pat
859
858
  a=moveBy$$module$core$utils$svg_paths(-b,c)+lineOnAxis$$module$core$utils$svg_paths("V",-b)+lineOnAxis$$module$core$utils$svg_paths("H",this.constants_.NOTCH_OFFSET_LEFT)+d.pathLeft+lineOnAxis$$module$core$utils$svg_paths("H",a+2*b)+lineOnAxis$$module$core$utils$svg_paths("V",c);this.markerBlock_.setAttribute("d",a);this.workspace.RTL&&this.flipRtl(this.markerBlock_);this.currentMarkerSvg=this.markerBlock_}positionRect_(a,b,c,d){if(!this.markerSvgRect_)throw Error("createDom should be called before positioning the rect");
860
859
  this.markerSvgRect_.setAttribute("x",`${a}`);this.markerSvgRect_.setAttribute("y",`${b}`);this.markerSvgRect_.setAttribute("width",`${c}`);this.markerSvgRect_.setAttribute("height",`${d}`);this.currentMarkerSvg=this.markerSvgRect_}flipRtl(a){a.setAttribute("transform","scale(-1 1)")}hide(){if(!(this.markerSvgLine_&&this.markerSvgRect_&&this.markerInput_&&this.markerBlock_))throw Error("createDom should be called before hiding the marker");this.markerSvgLine_.style.display="none";this.markerSvgRect_.style.display=
861
860
  "none";this.markerInput_.style.display="none";this.markerBlock_.style.display="none"}fireMarkerEvent(a,b){const c=b.getSourceBlock();a=new (get$$module$core$events$utils(MARKER_MOVE$$module$core$events$utils))(c,this.isCursor(),a,b);fire$$module$core$events$utils(a)}getBlinkProperties_(){return{attributeType:"XML",attributeName:"fill",dur:"1s",values:this.colour_+";transparent;transparent;",repeatCount:"indefinite"}}createDomInternal_(){this.markerSvg_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.G,
862
- {width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.svgGroup_);this.markerSvgLine_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.RECT,{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT,style:"display: none"},this.markerSvg_);this.markerSvgRect_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.RECT,{"class":"blocklyVerticalMarker",rx:10,ry:10,style:"display: none"},this.markerSvg_);this.markerInput_=
863
- createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,{transform:"",style:"display: none"},this.markerSvg_);this.markerBlock_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,{transform:"",style:"display: none",fill:"none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){const a=this.getBlinkProperties_();createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.ANIMATE,a,this.markerSvgLine_);createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.ANIMATE,
864
- a,this.markerInput_);createSvgElement$$module$core$utils$dom(Svg$$module$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");this.markerSvgLine_.setAttribute("fill",this.colour_);this.markerSvgRect_.setAttribute("stroke",this.colour_);this.markerInput_.setAttribute("fill",
865
- 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$core$utils$dom(this.svgGroup_)}},module$core$renderers$common$marker_svg={};module$core$renderers$common$marker_svg.MarkerSvg=MarkerSvg$$module$core$renderers$common$marker_svg;var PathObject$$module$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$core$utils$dom(Svg$$module$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=null}setMarkerSvg(a){a?(this.cursorSvg?
861
+ {width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.svgGroup_);this.markerSvgLine_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.RECT,{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.markerSvg_);this.markerSvgRect_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.RECT,{"class":"blocklyVerticalMarker",rx:10,ry:10},this.markerSvg_);this.markerInput_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,
862
+ {transform:""},this.markerSvg_);this.markerBlock_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,{transform:"",fill:"none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);this.hide();if(this.isCursor()){const a=this.getBlinkProperties_();createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.ANIMATE,a,this.markerSvgLine_);createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.ANIMATE,a,this.markerInput_);createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.ANIMATE,
863
+ 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");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=
864
+ 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$core$utils$dom(this.svgGroup_)}},module$core$renderers$common$marker_svg={};module$core$renderers$common$marker_svg.MarkerSvg=MarkerSvg$$module$core$renderers$common$marker_svg;var PathObject$$module$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$core$utils$dom(Svg$$module$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=null}setMarkerSvg(a){a?(this.cursorSvg?
866
865
  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$core$utils$dom(this.svgRoot,a):removeClass$$module$core$utils$dom(this.svgRoot,a))}updateHighlighted(a){a?
867
866
  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",
868
867
  a)}updateInsertionMarker(a){this.setClass_("blocklyInsertionMarker",a)}updateMovable(a){this.setClass_("blocklyDraggable",a)}updateReplacementFade(a){this.setClass_("blocklyReplaceable",a)}updateShapeForInputHighlight(a,b){}},module$core$renderers$common$path_object={};module$core$renderers$common$path_object.PathObject=PathObject$$module$core$renderers$common$path_object;var Connection$$module$core$connection=class{constructor(a,b){this.type=b;this.targetConnection=null;this.disposed=!1;this.shadowDom=this.check=null;this.y=this.x=0;this.shadowState=null;this.sourceBlock_=a}connect_(a){const b=ConnectionType$$module$core$connection_type.INPUT_VALUE,c=this.getSourceBlock();var d=a.getSourceBlock();a.isConnected()&&a.disconnectInternal(!1);let e;if(this.isConnected()){const g=this.stashShadowState(),h=this.targetBlock();h.isShadow()?h.dispose(!1):(this.disconnectInternal(),
@@ -1017,15 +1016,15 @@ for(a=1;a<this.inputList.length;a++)if(this.inputList[a-1]instanceof $.ValueInpu
1017
1016
  b){b=this.toTokens(b);for(let d=2;d<b.length;d++)"("===b[d-2]&&")"===b[d]&&(b[d-2]=b[d-1],b.splice(d-1,2));let c="";b=b.reduce((d,e)=>{d=d+("("===c||")"===e?"":" ")+e;c=e[e.length-1];return d},"");b=b.trim()||"???";a&&b.length>a&&(b=b.substring(0,a-3)+"...");return b}toTokens(a="?"){const b=[];for(const d of this.inputList)if(d.name!=COLLAPSED_INPUT_NAME$$module$core$constants){for(const e of d.fieldRow)b.push(e.getText());if(d.connection){const e=d.connection.targetBlock();if(e){var c=d.connection;
1018
1017
  let f=c.getCheck();!f&&c.targetConnection&&(f=c.targetConnection.getCheck());(c=!!f&&(-1!==f.indexOf("Boolean")||-1!==f.indexOf("Number")))&&b.push("(");b.push(...e.toTokens(a));c&&b.push(")")}else b.push(a)}}return b}appendValueInput(a){return this.appendInput(new $.ValueInput$$module$core$inputs$value_input(a,this))}appendStatementInput(a){this.statementInputCount++;return this.appendInput(new StatementInput$$module$core$inputs$statement_input(a,this))}appendDummyInput(a=""){return this.appendInput(new DummyInput$$module$core$inputs$dummy_input(a,
1019
1018
  this))}appendEndRowInput(a=""){return this.appendInput(new EndRowInput$$module$core$inputs$end_row_input(a,this))}appendInput(a){this.inputList.push(a);return a}appendInputFromRegistry(a,b){return(a=getClass$$module$core$registry(Type$$module$core$registry.INPUT,a,!1))?this.appendInput(new a(b,this)):null}jsonInit(a){var b=a.type?'Block "'+a.type+'": ':"";if(a.output&&a.previousStatement)throw Error(b+"Must not have both an output and a previousStatement.");a.style&&a.style.hat&&(this.hat=a.style.hat,
1020
- a.style=null);if(a.style&&a.colour)throw Error(b+"Must not have both a colour and a style.");a.style?this.jsonInitStyle_(a,b):this.jsonInitColour_(a,b);for(var c=0;void 0!==a["message"+c];)this.interpolate_(a["message"+c],a["args"+c]||[],a["implicitAlign"+c]||a["lastDummyAlign"+c],b),c++;void 0!==a.inputsInline&&this.setInputsInline(a.inputsInline);void 0!==a.output&&this.setOutput(!0,a.output);void 0!==a.outputShape&&this.setOutputShape(a.outputShape);void 0!==a.previousStatement&&this.setPreviousStatement(!0,
1021
- a.previousStatement);void 0!==a.nextStatement&&this.setNextStatement(!0,a.nextStatement);void 0!==a.tooltip&&(c=replaceMessageReferences$$module$core$utils$parsing(a.tooltip),this.setTooltip(c));void 0!==a.enableContextMenu&&(this.contextMenu=!!a.enableContextMenu);void 0!==a.suppressPrefixSuffix&&(this.suppressPrefixSuffix=!!a.suppressPrefixSuffix);void 0!==a.helpUrl&&(c=replaceMessageReferences$$module$core$utils$parsing(a.helpUrl),this.setHelpUrl(c));"string"===typeof a.extensions&&(console.warn(b+
1022
- "JSON attribute 'extensions' should be an array of strings. Found raw string in JSON for '"+a.type+"' block."),a.extensions=[a.extensions]);void 0!==a.mutator&&apply$$module$core$extensions(a.mutator,this,!0);a=a.extensions;if(Array.isArray(a))for(b=0;b<a.length;b++)apply$$module$core$extensions(a[b],this,!1)}jsonInitColour_(a,b){if("colour"in a)if(void 0===a.colour)console.warn(b+"Undefined colour value.");else{a=a.colour;try{this.setColour(a)}catch(c){console.warn(b+"Illegal colour value: ",a)}}}jsonInitStyle_(a,
1023
- b){a=a.style;try{this.setStyle(a)}catch(c){console.warn(b+"Style does not exist: ",a)}}mixin(a,b){if(void 0!==b&&"boolean"!==typeof b)throw Error("opt_disableCheck must be a boolean if provided");if(!b){b=[];for(const c in a)void 0!==this[c]&&b.push(c);if(b.length)throw Error("Mixin will overwrite block members: "+JSON.stringify(b));}Object.assign(this,a)}interpolate_(a,b,c,d){a=tokenizeInterpolation$$module$core$utils$parsing(a);this.validateTokens_(a,b.length);b=this.interpolateArguments_(a,b,c);
1024
- c=[];for(let e=0,f;f=b[e];e++)if(this.isInputKeyword_(f.type)){if(a=this.inputFromJson_(f,d)){for(let g=0,h;h=c[g];g++)a.appendField(h[0],h[1]);c.length=0}}else(a=this.fieldFromJson_(f))&&c.push([a,f.name])}validateTokens_(a,b){const c=[];let d=0;for(let e=0;e<a.length;e++){const f=a[e];if("number"===typeof f){if(1>f||f>b)throw Error('Block "'+this.type+'": Message index %'+f+" out of range.");if(c[f])throw Error('Block "'+this.type+'": Message index %'+f+" duplicated.");c[f]=!0;d++}}if(d!==b)throw Error('Block "'+
1025
- this.type+'": Message does not reference all '+b+" arg(s).");}interpolateArguments_(a,b,c){const d=[];for(let f=0;f<a.length;f++){var e=a[f];"number"===typeof e&&(e=b[e-1]);if("string"===typeof e)if("\n"===e)e={type:"input_end_row"},c&&(e.align=c);else if(e=this.stringToFieldJson_(e),!e)continue;d.push(e)}(a=d.length)&&!this.isInputKeyword_(d[a-1].type)&&(a={type:"input_dummy"},c&&(a.align=c),d.push(a));return d}fieldFromJson_(a){const b=$.fromJson$$module$core$field_registry(a);return!b&&a.alt?"string"===
1026
- typeof a.alt?(a=this.stringToFieldJson_(a.alt))?this.fieldFromJson_(a):null:this.fieldFromJson_(a.alt):b}inputFromJson_(a,b){var c={LEFT:$.Align$$module$core$inputs$align.LEFT,RIGHT:$.Align$$module$core$inputs$align.RIGHT,CENTRE:$.Align$$module$core$inputs$align.CENTRE,CENTER:$.Align$$module$core$inputs$align.CENTRE};let d;switch(a.type){case "input_value":d=this.appendValueInput(a.name);break;case "input_statement":d=this.appendStatementInput(a.name);break;case "input_dummy":d=this.appendDummyInput(a.name);
1027
- break;case "input_end_row":d=this.appendEndRowInput(a.name);break;default:d=this.appendInputFromRegistry(a.type,a.name)}if(!d)return null;a.check&&d.setCheck(a.check);a.align&&(c=c[a.align.toUpperCase()],void 0===c?console.warn(b+"Illegal align value: ",a.align):d.setAlign(c));return d}isInputKeyword_(a){return"input_value"===a||"input_statement"===a||"input_dummy"===a||"input_end_row"===a||hasItem$$module$core$registry(Type$$module$core$registry.INPUT,a)}stringToFieldJson_(a){return(a=a.trim())?
1028
- {type:"field_label",text:a}:null}moveInputBefore(a,b){if(a!==b){var c=-1,d=b?-1:this.inputList.length;for(let e=0,f;f=this.inputList[e];e++)if(f.name===a){if(c=e,-1!==d)break}else if(b&&f.name===b&&(d=e,-1!==c))break;if(-1===c)throw Error('Named input "'+a+'" not found.');if(-1===d)throw Error('Reference input "'+b+'" not found.');this.moveNumberedInputBefore(c,d)}}moveNumberedInputBefore(a,b){if(a===b)throw Error("Can't move input to itself.");if(a>=this.inputList.length)throw RangeError("Input index "+
1019
+ a.style=null);if(a.style&&a.colour)throw Error(b+"Must not have both a colour and a style.");a.style?this.jsonInitStyle_(a,b):this.jsonInitColour_(a,b);for(var c=0;void 0!==a["message"+c];)this.interpolate_(a["message"+c],a["args"+c]||[],a["implicitAlign"+c]||a["lastDummyAlign"+c],b),c++;void 0!==a.inputsInline&&($.disable$$module$core$events$utils(),this.setInputsInline(a.inputsInline),$.enable$$module$core$events$utils());void 0!==a.output&&this.setOutput(!0,a.output);void 0!==a.outputShape&&this.setOutputShape(a.outputShape);
1020
+ void 0!==a.previousStatement&&this.setPreviousStatement(!0,a.previousStatement);void 0!==a.nextStatement&&this.setNextStatement(!0,a.nextStatement);void 0!==a.tooltip&&(c=replaceMessageReferences$$module$core$utils$parsing(a.tooltip),this.setTooltip(c));void 0!==a.enableContextMenu&&(this.contextMenu=!!a.enableContextMenu);void 0!==a.suppressPrefixSuffix&&(this.suppressPrefixSuffix=!!a.suppressPrefixSuffix);void 0!==a.helpUrl&&(c=replaceMessageReferences$$module$core$utils$parsing(a.helpUrl),this.setHelpUrl(c));
1021
+ "string"===typeof a.extensions&&(console.warn(b+"JSON attribute 'extensions' should be an array of strings. Found raw string in JSON for '"+a.type+"' block."),a.extensions=[a.extensions]);void 0!==a.mutator&&apply$$module$core$extensions(a.mutator,this,!0);a=a.extensions;if(Array.isArray(a))for(b=0;b<a.length;b++)apply$$module$core$extensions(a[b],this,!1)}jsonInitColour_(a,b){if("colour"in a)if(void 0===a.colour)console.warn(b+"Undefined colour value.");else{a=a.colour;try{this.setColour(a)}catch(c){console.warn(b+
1022
+ "Illegal colour value: ",a)}}}jsonInitStyle_(a,b){a=a.style;try{this.setStyle(a)}catch(c){console.warn(b+"Style does not exist: ",a)}}mixin(a,b){if(void 0!==b&&"boolean"!==typeof b)throw Error("opt_disableCheck must be a boolean if provided");if(!b){b=[];for(const c in a)void 0!==this[c]&&b.push(c);if(b.length)throw Error("Mixin will overwrite block members: "+JSON.stringify(b));}Object.assign(this,a)}interpolate_(a,b,c,d){a=tokenizeInterpolation$$module$core$utils$parsing(a);this.validateTokens_(a,
1023
+ b.length);b=this.interpolateArguments_(a,b,c);c=[];for(let e=0,f;f=b[e];e++)if(this.isInputKeyword_(f.type)){if(a=this.inputFromJson_(f,d)){for(let g=0,h;h=c[g];g++)a.appendField(h[0],h[1]);c.length=0}}else(a=this.fieldFromJson_(f))&&c.push([a,f.name])}validateTokens_(a,b){const c=[];let d=0;for(let e=0;e<a.length;e++){const f=a[e];if("number"===typeof f){if(1>f||f>b)throw Error('Block "'+this.type+'": Message index %'+f+" out of range.");if(c[f])throw Error('Block "'+this.type+'": Message index %'+
1024
+ f+" duplicated.");c[f]=!0;d++}}if(d!==b)throw Error('Block "'+this.type+'": Message does not reference all '+b+" arg(s).");}interpolateArguments_(a,b,c){const d=[];for(let f=0;f<a.length;f++){var e=a[f];"number"===typeof e&&(e=b[e-1]);if("string"===typeof e)if("\n"===e)e={type:"input_end_row"},c&&(e.align=c);else if(e=this.stringToFieldJson_(e),!e)continue;d.push(e)}(a=d.length)&&!this.isInputKeyword_(d[a-1].type)&&(a={type:"input_dummy"},c&&(a.align=c),d.push(a));return d}fieldFromJson_(a){const b=
1025
+ $.fromJson$$module$core$field_registry(a);return!b&&a.alt?"string"===typeof a.alt?(a=this.stringToFieldJson_(a.alt))?this.fieldFromJson_(a):null:this.fieldFromJson_(a.alt):b}inputFromJson_(a,b){var c={LEFT:$.Align$$module$core$inputs$align.LEFT,RIGHT:$.Align$$module$core$inputs$align.RIGHT,CENTRE:$.Align$$module$core$inputs$align.CENTRE,CENTER:$.Align$$module$core$inputs$align.CENTRE};let d;switch(a.type){case "input_value":d=this.appendValueInput(a.name);break;case "input_statement":d=this.appendStatementInput(a.name);
1026
+ break;case "input_dummy":d=this.appendDummyInput(a.name);break;case "input_end_row":d=this.appendEndRowInput(a.name);break;default:d=this.appendInputFromRegistry(a.type,a.name)}if(!d)return null;a.check&&d.setCheck(a.check);a.align&&(c=c[a.align.toUpperCase()],void 0===c?console.warn(b+"Illegal align value: ",a.align):d.setAlign(c));return d}isInputKeyword_(a){return"input_value"===a||"input_statement"===a||"input_dummy"===a||"input_end_row"===a||hasItem$$module$core$registry(Type$$module$core$registry.INPUT,
1027
+ a)}stringToFieldJson_(a){return(a=a.trim())?{type:"field_label",text:a}:null}moveInputBefore(a,b){if(a!==b){var c=-1,d=b?-1:this.inputList.length;for(let e=0,f;f=this.inputList[e];e++)if(f.name===a){if(c=e,-1!==d)break}else if(b&&f.name===b&&(d=e,-1!==c))break;if(-1===c)throw Error('Named input "'+a+'" not found.');if(-1===d)throw Error('Reference input "'+b+'" not found.');this.moveNumberedInputBefore(c,d)}}moveNumberedInputBefore(a,b){if(a===b)throw Error("Can't move input to itself.");if(a>=this.inputList.length)throw RangeError("Input index "+
1029
1028
  a+" out of bounds.");if(b>this.inputList.length)throw RangeError("Reference input "+b+" out of bounds.");const c=this.inputList[a];this.inputList.splice(a,1);a<b&&b--;this.inputList.splice(b,0,c)}removeInput(a,b){for(let c=0,d;d=this.inputList[c];c++)if(d.name===a)return d instanceof StatementInput$$module$core$inputs$statement_input&&this.statementInputCount--,d.dispose(),this.inputList.splice(c,1),!0;if(b)return!1;throw Error("Input not found: "+a);}getInput(a){for(let b=0,c;c=this.inputList[b];b++)if(c.name===
1030
1029
  a)return c;return null}getInputTargetBlock(a){return(a=this.getInput(a))&&a.connection&&a.connection.targetBlock()}getCommentText(){let a,b;return null!=(b=null==(a=this.getIcon(CommentIcon$$module$core$icons$comment_icon.TYPE))?void 0:a.getText())?b:null}setCommentText(a){var b;let c;const d=null!=(c=null==(b=this.getIcon(CommentIcon$$module$core$icons$comment_icon.TYPE))?void 0:b.getText())?c:null;d!==a&&(fire$$module$core$events$utils(new (get$$module$core$events$utils($.CHANGE$$module$core$events$utils))(this,
1031
1030
  "comment",null,d,a)),null!==a?((b=this.getIcon(CommentIcon$$module$core$icons$comment_icon.TYPE))||(b=this.addIcon(new CommentIcon$$module$core$icons$comment_icon(this))),b.setText(a)):this.removeIcon(CommentIcon$$module$core$icons$comment_icon.TYPE))}setWarningText(a,b){}setMutator(a){}addIcon(a){if(this.hasIcon(a.getType()))throw new DuplicateIconType$$module$core$icons$exceptions(a);this.icons.push(a);this.icons.sort((b,c)=>b.getWeight()-c.getWeight());return a}removeIcon(a){if(!this.hasIcon(a))return!1;
@@ -1212,7 +1211,7 @@ void 0!==a.spellcheck&&(this.spellcheck_=a.spellcheck)}initView(){if(!this.getSo
1212
1211
  !0,this.isTextValid_=!1,a=this.value_,this.value_=this.htmlInput_.getAttribute("data-untyped-default-value"),this.sourceBlock_&&isEnabled$$module$core$events$utils()&&fire$$module$core$events$utils(new (get$$module$core$events$utils($.CHANGE$$module$core$events$utils))(this.sourceBlock_,"field",this.name||null,a,this.value_)))}doValueUpdate_(a){this.isTextValid_=this.isDirty_=!0;this.value_=a}applyColour(){const a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$core$field;this.getConstants().FULL_BLOCK_FIELDS&&
1213
1212
  this.fieldGroup_&&(!this.isFullBlockField()&&this.borderRect_?(this.borderRect_.style.display="block",this.borderRect_.setAttribute("stroke",a.style.colourTertiary)):(this.borderRect_.style.display="none",a.pathObject.svgPath.setAttribute("fill",this.getConstants().FIELD_BORDER_RECT_COLOUR)))}getSize(){let a;if(null==(a=this.getConstants())?0:a.FULL_BLOCK_FIELDS)this.render_(),this.isDirty_=!1;return super.getSize()}render_(){super.render_();if(this.isBeingEdited_){this.resizeEditor_();var a=this.htmlInput_;
1214
1213
  this.isTextValid_?(removeClass$$module$core$utils$dom(a,"blocklyInvalidInput"),setState$$module$core$utils$aria(a,State$$module$core$utils$aria.INVALID,!1)):(addClass$$module$core$utils$dom(a,"blocklyInvalidInput"),setState$$module$core$utils$aria(a,State$$module$core$utils$aria.INVALID,!0))}a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$core$field;this.getConstants().FULL_BLOCK_FIELDS&&a.applyColour()}setSpellcheck(a){a!==this.spellcheck_&&(this.spellcheck_=a,this.htmlInput_&&
1215
- this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}showEditor_(a,b=!1){this.workspace_=this.sourceBlock_.workspace;!b&&this.workspace_.options.modalInputs&&(MOBILE$$module$core$utils$useragent||ANDROID$$module$core$utils$useragent||IPAD$$module$core$utils$useragent)?this.showPromptEditor_():this.showInlineEditor_(b)}showPromptEditor_(){prompt$$module$core$dialog($.Msg$$module$core$msg.CHANGE_VALUE_TITLE,this.getText(),a=>{null!==a&&this.setValue(this.getValueFromEditorText_(a))})}showInlineEditor_(a){const b=
1214
+ this.htmlInput_.setAttribute("spellcheck",this.spellcheck_))}showEditor_(a,b=!1){this.workspace_=this.sourceBlock_.workspace;!b&&this.workspace_.options.modalInputs&&(MOBILE$$module$core$utils$useragent||ANDROID$$module$core$utils$useragent||IPAD$$module$core$utils$useragent)?this.showPromptEditor_():this.showInlineEditor_(b)}showPromptEditor_(){prompt$$module$core$dialog($.Msg$$module$core$msg.CHANGE_VALUE_TITLE,this.getText(),a=>{null!==a&&this.setValue(this.getValueFromEditorText_(a));this.onFinishEditing_(this.value_)})}showInlineEditor_(a){const b=
1216
1215
  this.getSourceBlock();if(!b)throw new UnattachedFieldError$$module$core$field;show$$module$core$widgetdiv(this,b.RTL,this.widgetDispose_.bind(this));this.htmlInput_=this.widgetCreate_();this.isBeingEdited_=!0;this.valueWhenEditorWasOpened_=this.value_;a||(this.htmlInput_.focus({preventScroll:!0}),this.htmlInput_.select())}widgetCreate_(){var a=this.getSourceBlock();if(!a)throw new UnattachedFieldError$$module$core$field;$.setGroup$$module$core$events$utils(!0);const b=getDiv$$module$core$widgetdiv();
1217
1216
  var c=this.getClickTarget_();if(!c)throw Error("A click target has not been set.");addClass$$module$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=FieldInput$$module$core$field_input.BORDERRADIUS*d+"px";this.isFullBlockField()&&(e=this.getScaledBBox(),e=(e.bottom-e.top)/2+"px",a=a.getParent()?
1218
1217
  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",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",String(this.value_));this.resizeEditor_();this.bindInputEvents_(c);return c}widgetDispose_(){this.isBeingEdited_=
@@ -1245,9 +1244,9 @@ this.constants_;if(1<this.inputRows.length)switch(c){case d.SHAPES.ROUND:return
1245
1244
  2;d<this.rows.length-1;d+=2){const e=this.rows[d-1],f=this.rows[d],g=this.rows[d+1];var a=2===d,b=d+2>=this.rows.length-1?!!this.bottomRow.hasNextConnection:!!g.precedesStatement;if(a?this.topRow.hasPreviousConnection:e.followsStatement){var c=f.elements[1];c=3===f.elements.length&&c instanceof Field$$module$core$renderers$measurables$field&&(c.field instanceof FieldLabel$$module$core$field_label||c.field instanceof FieldImage$$module$core$field_image);if(!a&&c)e.height-=this.constants_.SMALL_PADDING,
1246
1245
  g.height-=this.constants_.SMALL_PADDING,f.height-=this.constants_.MEDIUM_PADDING;else if(!a&&!b)e.height+=this.constants_.SMALL_PADDING;else if(b){a=!1;for(b=0;b<f.elements.length;b++)if(c=f.elements[b],c instanceof InputConnection$$module$core$renderers$measurables$input_connection&&Types$$module$core$renderers$measurables$types.isInlineInput(c)&&c.connectedBlock&&!c.connectedBlock.isShadow()&&40<=c.connectedBlock.getHeightWidth().height){a=!0;break}a&&(e.height-=this.constants_.SMALL_PADDING,g.height-=
1247
1246
  this.constants_.SMALL_PADDING)}}}}finalize_(){this.finalizeOutputConnection_();this.finalizeHorizontalAlignment_();this.finalizeVerticalAlignment_();super.finalize_();this.rightSide&&(this.widthWithChildren+=this.rightSide.width)}},module$core$renderers$zelos$info={};module$core$renderers$zelos$info.RenderInfo=RenderInfo$$module$core$renderers$zelos$info;var MarkerSvg$$module$core$renderers$zelos$marker_svg=class extends MarkerSvg$$module$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();this.positionRect_(0,
1248
- 0,b.width,b.height);this.setParent_(a);this.showCurrent_()}positionCircle(a,b){let c;null==(c=this.markerCircle)||c.setAttribute("cx",`${a}`);let d;null==(d=this.markerCircle)||d.setAttribute("cy",`${b}`);this.currentMarkerSvg=this.markerCircle}hide(){super.hide();this.markerCircle&&(this.markerCircle.style.display="none")}createDomInternal_(){super.createDomInternal_();this.markerCircle=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.CIRCLE,{r:this.constants_.CURSOR_RADIUS,style:"display: none",
1249
- "stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){const a=this.getBlinkProperties_();createSvgElement$$module$core$utils$dom(Svg$$module$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_);if(this.isCursor()){a=this.colour_+";transparent;transparent;";let d;null==(d=
1250
- this.markerCircle)||d.firstElementChild.setAttribute("values",a)}}},module$core$renderers$zelos$marker_svg={};module$core$renderers$zelos$marker_svg.MarkerSvg=MarkerSvg$$module$core$renderers$zelos$marker_svg;var PathObject$$module$core$renderers$zelos$path_object=class extends PathObject$$module$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",b.style.colourTertiary);
1247
+ 0,b.width,b.height);this.setParent_(a);this.showCurrent_()}positionCircle(a,b){let c;null==(c=this.markerCircle)||c.setAttribute("cx",`${a}`);let d;null==(d=this.markerCircle)||d.setAttribute("cy",`${b}`);this.currentMarkerSvg=this.markerCircle}hide(){super.hide();this.markerCircle&&(this.markerCircle.style.display="none")}createDomInternal_(){super.createDomInternal_();this.markerCircle=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.CIRCLE,{r:this.constants_.CURSOR_RADIUS,"stroke-width":this.constants_.CURSOR_STROKE_WIDTH},
1248
+ this.markerSvg_);this.hide();if(this.isCursor()){const a=this.getBlinkProperties_();createSvgElement$$module$core$utils$dom(Svg$$module$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_);if(this.isCursor()){a=this.colour_+";transparent;transparent;";let d;null==(d=this.markerCircle)||d.firstElementChild.setAttribute("values",
1249
+ a)}}},module$core$renderers$zelos$marker_svg={};module$core$renderers$zelos$marker_svg.MarkerSvg=MarkerSvg$$module$core$renderers$zelos$marker_svg;var PathObject$$module$core$renderers$zelos$path_object=class extends PathObject$$module$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",b.style.colourTertiary);
1251
1250
  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)):
1252
1251
  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();
1253
1252
  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$core$utils$dom(Svg$$module$core$utils$svg.PATH,{"class":"blocklyOutlinePath",d:""},this.svgRoot));
@@ -1259,7 +1258,7 @@ module$core$contextmenu_items.registerDefaultOptions=registerDefaultOptions$$mod
1259
1258
  module$core$contextmenu_items.registerExpand=registerExpand$$module$core$contextmenu_items;module$core$contextmenu_items.registerHelp=registerHelp$$module$core$contextmenu_items;module$core$contextmenu_items.registerInline=registerInline$$module$core$contextmenu_items;module$core$contextmenu_items.registerRedo=registerRedo$$module$core$contextmenu_items;module$core$contextmenu_items.registerUndo=registerUndo$$module$core$contextmenu_items;var FieldAngle$$module$core$field_angle=class extends FieldInput$$module$core$field_input{constructor(a,b,c){super(Field$$module$core$field.SKIP_SETUP);this.clockwise=FieldAngle$$module$core$field_angle.CLOCKWISE;this.offset=FieldAngle$$module$core$field_angle.OFFSET;this.wrap=FieldAngle$$module$core$field_angle.WRAP;this.round=FieldAngle$$module$core$field_angle.ROUND;this.boundEvents=[];this.symbol_=this.gauge=this.line=null;a!==Field$$module$core$field.SKIP_SETUP&&(c&&this.configure_(c),this.setValue(a),
1260
1259
  b&&this.setValidator(b))}configure_(a){super.configure_(a);switch(a.mode){case Mode$$module$core$field_angle.COMPASS:this.clockwise=!0;this.offset=90;break;case Mode$$module$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=a.wrap);a.round&&(this.round=a.round)}initView(){super.initView();this.symbol_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.TSPAN,{});this.symbol_.appendChild(document.createTextNode("\u00b0"));
1261
1260
  this.getTextElement().appendChild(this.symbol_)}render_(){super.render_();this.updateGraph()}showEditor_(a){super.showEditor_(a,MOBILE$$module$core$utils$useragent||ANDROID$$module$core$utils$useragent||IPAD$$module$core$utils$useragent);a=this.dropdownCreate();getContentDiv$$module$core$dropdowndiv().appendChild(a);this.sourceBlock_ instanceof BlockSvg$$module$core$block_svg&&setColour$$module$core$dropdowndiv(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary);showPositionedByField$$module$core$dropdowndiv(this,
1262
- this.dropdownDispose.bind(this));this.updateGraph()}dropdownCreate(){const a=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.SVG,{xmlns:SVG_NS$$module$core$utils$dom,"xmlns:html":HTML_NS$$module$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$core$utils$dom,version:"1.1",height:2*FieldAngle$$module$core$field_angle.HALF+"px",width:2*FieldAngle$$module$core$field_angle.HALF+"px",style:"touch-action: none"}),b=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.CIRCLE,
1261
+ this.dropdownDispose.bind(this));this.updateGraph()}dropdownCreate(){const a=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.SVG,{xmlns:SVG_NS$$module$core$utils$dom,"xmlns:html":HTML_NS$$module$core$utils$dom,"xmlns:xlink":XLINK_NS$$module$core$utils$dom,version:"1.1",height:2*FieldAngle$$module$core$field_angle.HALF+"px",width:2*FieldAngle$$module$core$field_angle.HALF+"px"});a.style.touchAction="none";const b=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.CIRCLE,
1263
1262
  {cx:FieldAngle$$module$core$field_angle.HALF,cy:FieldAngle$$module$core$field_angle.HALF,r:FieldAngle$$module$core$field_angle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,{"class":"blocklyAngleGauge"},a);this.line=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.LINE,{x1:FieldAngle$$module$core$field_angle.HALF,y1:FieldAngle$$module$core$field_angle.HALF,"class":"blocklyAngleLine"},a);for(let c=0;360>
1264
1263
  c;c+=15)createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.LINE,{x1:FieldAngle$$module$core$field_angle.HALF+FieldAngle$$module$core$field_angle.RADIUS,y1:FieldAngle$$module$core$field_angle.HALF,x2:FieldAngle$$module$core$field_angle.HALF+FieldAngle$$module$core$field_angle.RADIUS-(0===c%45?10:5),y2:FieldAngle$$module$core$field_angle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+c+","+FieldAngle$$module$core$field_angle.HALF+","+FieldAngle$$module$core$field_angle.HALF+")"},
1265
1264
  a);this.boundEvents.push(conditionalBind$$module$core$browser_events(a,"click",this,this.hide));this.boundEvents.push(conditionalBind$$module$core$browser_events(b,"pointerdown",this,this.onMouseMove_,!0));this.boundEvents.push(conditionalBind$$module$core$browser_events(b,"pointermove",this,this.onMouseMove_,!0));return a}dropdownDispose(){for(const a of this.boundEvents)unbind$$module$core$browser_events(a);this.boundEvents.length=0;this.line=this.gauge=null}hide(){hideIfOwner$$module$core$dropdowndiv(this);
@@ -1325,7 +1324,7 @@ var module$core$flyout_button={};module$core$flyout_button.FlyoutButton=FlyoutBu
1325
1324
  a=a?this.workspace_.scale:1;return{height:(b.height+2*c)/a,width:(b.width+b.left+c)/a,top:0,left:0}}},module$core$flyout_metrics_manager={};module$core$flyout_metrics_manager.FlyoutMetricsManager=FlyoutMetricsManager$$module$core$flyout_metrics_manager;var FlyoutItemType$$module$core$flyout_base;(function(a){a.BLOCK="block";a.BUTTON="button"})(FlyoutItemType$$module$core$flyout_base||(FlyoutItemType$$module$core$flyout_base={}));
1326
1325
  var Flyout$$module$core$flyout_base=class extends DeleteArea$$module$core$delete_area{constructor(a){super();this.horizontalLayout=!1;this.boundEvents=[];this.filterWrapper=this.reflowWrapper=null;this.mats=[];this.buttons_=[];this.listeners=[];this.permanentlyDisabled=[];this.recycledBlocks=[];this.autoClose=!0;this.isVisible_=!1;this.containerVisible=!0;this.CORNER_RADIUS=8;this.SCROLLBAR_MARGIN=2.5;this.height_=this.width_=0;this.dragAngleRange_=70;this.svgGroup_=this.svgBackground_=null;a.setMetrics=
1327
1326
  this.setMetrics_.bind(this);this.workspace_=new WorkspaceSvg$$module$core$workspace_svg(a);this.workspace_.setMetricsManager(new FlyoutMetricsManager$$module$core$flyout_metrics_manager(this.workspace_,this));this.workspace_.internalIsFlyout=!0;this.workspace_.setVisible(this.isVisible_);this.id=genUid$$module$core$utils$idgenerator();this.RTL=!!a.RTL;this.toolboxPosition_=a.toolboxPosition;this.tabWidth_=this.workspace_.getRenderer().getConstants().TAB_WIDTH;this.rectMap_=new WeakMap;this.MARGIN=
1328
- this.CORNER_RADIUS;this.GAP_X=3*this.MARGIN;this.GAP_Y=3*this.MARGIN}createDom(a){this.svgGroup_=createSvgElement$$module$core$utils$dom(a,{"class":"blocklyFlyout",style:"display: none"});this.svgBackground_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,{"class":"blocklyFlyoutBackground"},this.svgGroup_);this.svgGroup_.appendChild(this.workspace_.createDom());this.workspace_.getThemeManager().subscribe(this.svgBackground_,"flyoutBackgroundColour","fill");this.workspace_.getThemeManager().subscribe(this.svgBackground_,
1327
+ this.CORNER_RADIUS;this.GAP_X=3*this.MARGIN;this.GAP_Y=3*this.MARGIN}createDom(a){this.svgGroup_=createSvgElement$$module$core$utils$dom(a,{"class":"blocklyFlyout"});this.svgGroup_.style.display="none";this.svgBackground_=createSvgElement$$module$core$utils$dom(Svg$$module$core$utils$svg.PATH,{"class":"blocklyFlyoutBackground"},this.svgGroup_);this.svgGroup_.appendChild(this.workspace_.createDom());this.workspace_.getThemeManager().subscribe(this.svgBackground_,"flyoutBackgroundColour","fill");this.workspace_.getThemeManager().subscribe(this.svgBackground_,
1329
1328
  "flyoutOpacity","fill-opacity");return this.svgGroup_}init(a){this.targetWorkspace=a;this.workspace_.targetWorkspace=a;this.workspace_.scrollbar=new ScrollbarPair$$module$core$scrollbar_pair(this.workspace_,this.horizontalLayout,!this.horizontalLayout,"blocklyFlyoutScrollbar",this.SCROLLBAR_MARGIN);this.hide();this.boundEvents.push(conditionalBind$$module$core$browser_events(this.svgGroup_,"wheel",this,this.wheel_));this.autoClose||(this.filterWrapper=this.filterForCapacity.bind(this),this.targetWorkspace.addChangeListener(this.filterWrapper));
1330
1329
  this.boundEvents.push(conditionalBind$$module$core$browser_events(this.svgBackground_,"pointerdown",this,this.onMouseDown));this.workspace_.getGesture=this.targetWorkspace.getGesture.bind(this.targetWorkspace);this.workspace_.setVariableMap(this.targetWorkspace.getVariableMap());this.workspace_.createPotentialVariableMap();a.getComponentManager().addComponent({component:this,weight:1,capabilities:[ComponentManager$$module$core$component_manager.Capability.DELETE_AREA,ComponentManager$$module$core$component_manager.Capability.DRAG_TARGET]})}dispose(){this.hide();
1331
1330
  this.workspace_.getComponentManager().removeComponent(this.id);for(const a of this.boundEvents)unbind$$module$core$browser_events(a);this.boundEvents.length=0;this.filterWrapper&&this.targetWorkspace.removeChangeListener(this.filterWrapper);this.workspace_&&(this.workspace_.getThemeManager().unsubscribe(this.svgBackground_),this.workspace_.dispose());this.svgGroup_&&removeNode$$module$core$utils$dom(this.svgGroup_)}getWidth(){return this.width_}getHeight(){return this.height_}getFlyoutScale(){return this.targetWorkspace.scale}getWorkspace(){return this.workspace_}isVisible(){return this.isVisible_}setVisible(a){const b=
@@ -1471,7 +1470,7 @@ setState$$module$core$utils$aria(this.contentsDiv_,State$$module$core$utils$aria
1471
1470
  d,this.workspace_.id);fire$$module$core$events$utils(a)}selectParent_(){return this.selectedItem_?this.selectedItem_.isCollapsible()&&this.selectedItem_.isExpanded()?(this.selectedItem_.toggleExpanded(),!0):this.selectedItem_.getParent()&&this.selectedItem_.getParent().isSelectable()?(this.setSelectedItem(this.selectedItem_.getParent()),!0):!1:!1}selectChild_(){if(!this.selectedItem_||!this.selectedItem_.isCollapsible())return!1;const a=this.selectedItem_;a.isExpanded()?this.selectNext_():a.toggleExpanded();
1472
1471
  return!0}selectNext_(){if(!this.selectedItem_)return!1;let a=this.contents_.indexOf(this.selectedItem_)+1;if(-1<a&&a<this.contents_.length){let b=this.contents_[a];for(;b&&!b.isSelectable();)b=this.contents_[++a];if(b&&b.isSelectable())return this.setSelectedItem(b),!0}return!1}selectPrevious_(){if(!this.selectedItem_)return!1;let a=this.contents_.indexOf(this.selectedItem_)-1;if(-1<a&&a<this.contents_.length){let b=this.contents_[a];for(;b&&!b.isSelectable();)b=this.contents_[--a];if(b&&b.isSelectable())return this.setSelectedItem(b),
1473
1472
  !0}return!1}dispose(){this.workspace_.getComponentManager().removeComponent("toolbox");this.flyout_.dispose();for(var a=0;a<this.contents_.length;a++)this.contents_[a].dispose();for(a=0;a<this.boundEvents_.length;a++)unbind$$module$core$browser_events(this.boundEvents_[a]);this.boundEvents_=[];this.contents_=[];this.HtmlDiv&&(this.workspace_.getThemeManager().unsubscribe(this.HtmlDiv),removeNode$$module$core$utils$dom(this.HtmlDiv))}};register$$module$core$css('\n.blocklyToolboxDelete {\n cursor: url("<<<PATH>>>/handdelete.cur"), auto;\n}\n\n.blocklyToolboxGrab {\n cursor: url("<<<PATH>>>/handclosed.cur"), auto;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n/* Category tree in Toolbox. */\n.blocklyToolboxDiv {\n background-color: #ddd;\n overflow-x: visible;\n overflow-y: auto;\n padding: 4px 0 4px 0;\n position: absolute;\n z-index: 70; /* so blocks go under toolbox when dragging */\n -webkit-tap-highlight-color: transparent; /* issue #1345 */\n}\n\n.blocklyToolboxContents {\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n}\n\n.blocklyToolboxContents:focus {\n outline: none;\n}\n');
1474
- register$$module$core$registry(Type$$module$core$registry.TOOLBOX,DEFAULT$$module$core$registry,Toolbox$$module$core$toolbox$toolbox);var module$core$toolbox$toolbox={};module$core$toolbox$toolbox.Toolbox=Toolbox$$module$core$toolbox$toolbox;var VERSION$$module$core$blockly="10.2.0-beta.2",ALIGN_LEFT$$module$core$blockly=$.Align$$module$core$inputs$align.LEFT,ALIGN_CENTRE$$module$core$blockly=$.Align$$module$core$inputs$align.CENTRE,ALIGN_RIGHT$$module$core$blockly=$.Align$$module$core$inputs$align.RIGHT,INPUT_VALUE$$module$core$blockly=ConnectionType$$module$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$core$blockly=ConnectionType$$module$core$connection_type.OUTPUT_VALUE,NEXT_STATEMENT$$module$core$blockly=ConnectionType$$module$core$connection_type.NEXT_STATEMENT,
1473
+ register$$module$core$registry(Type$$module$core$registry.TOOLBOX,DEFAULT$$module$core$registry,Toolbox$$module$core$toolbox$toolbox);var module$core$toolbox$toolbox={};module$core$toolbox$toolbox.Toolbox=Toolbox$$module$core$toolbox$toolbox;var VERSION$$module$core$blockly="10.2.0-beta.3",ALIGN_LEFT$$module$core$blockly=$.Align$$module$core$inputs$align.LEFT,ALIGN_CENTRE$$module$core$blockly=$.Align$$module$core$inputs$align.CENTRE,ALIGN_RIGHT$$module$core$blockly=$.Align$$module$core$inputs$align.RIGHT,INPUT_VALUE$$module$core$blockly=ConnectionType$$module$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$core$blockly=ConnectionType$$module$core$connection_type.OUTPUT_VALUE,NEXT_STATEMENT$$module$core$blockly=ConnectionType$$module$core$connection_type.NEXT_STATEMENT,
1475
1474
  PREVIOUS_STATEMENT$$module$core$blockly=ConnectionType$$module$core$connection_type.PREVIOUS_STATEMENT,DUMMY_INPUT$$module$core$blockly=$.inputTypes$$module$core$inputs$input_types.DUMMY,TOOLBOX_AT_TOP$$module$core$blockly=Position$$module$core$utils$toolbox.TOP,TOOLBOX_AT_BOTTOM$$module$core$blockly=Position$$module$core$utils$toolbox.BOTTOM,TOOLBOX_AT_LEFT$$module$core$blockly=Position$$module$core$utils$toolbox.LEFT,TOOLBOX_AT_RIGHT$$module$core$blockly=Position$$module$core$utils$toolbox.RIGHT,
1476
1475
  svgResize$$module$core$blockly=svgResize$$module$core$common,getMainWorkspace$$module$core$blockly=getMainWorkspace$$module$core$common,getSelected$$module$core$blockly=getSelected$$module$core$common,defineBlocksWithJsonArray$$module$core$blockly=defineBlocksWithJsonArray$$module$core$common,setParentContainer$$module$core$blockly=setParentContainer$$module$core$common,COLLAPSE_CHARS$$module$core$blockly=COLLAPSE_CHARS$$module$core$internal_constants,DRAG_STACK$$module$core$blockly=DRAG_STACK$$module$core$internal_constants,
1477
1476
  OPPOSITE_TYPE$$module$core$blockly=OPPOSITE_TYPE$$module$core$internal_constants,RENAME_VARIABLE_ID$$module$core$blockly=RENAME_VARIABLE_ID$$module$core$internal_constants,DELETE_VARIABLE_ID$$module$core$blockly=DELETE_VARIABLE_ID$$module$core$internal_constants,COLLAPSED_INPUT_NAME$$module$core$blockly=COLLAPSED_INPUT_NAME$$module$core$constants,COLLAPSED_FIELD_NAME$$module$core$blockly=COLLAPSED_FIELD_NAME$$module$core$constants,VARIABLE_CATEGORY_NAME$$module$core$blockly=CATEGORY_NAME$$module$core$variables,
@@ -1821,7 +1820,7 @@ Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "return";
1821
1820
  Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "Creates a function with an output.";
1822
1821
  Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "Warning: This function has duplicate parameters.";
1823
1822
  Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "Highlight function definition";
1824
- Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause";
1823
+ Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "https://c2.com/cgi/wiki?GuardClause";
1825
1824
  Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "If a value is true, then return a second value.";
1826
1825
  Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "Warning: This block may be used only within a function definition.";
1827
1826
  Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "input name:";
@@ -1913,7 +1912,6 @@ Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/V
1913
1912
  Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input.";
1914
1913
  Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists.";
1915
1914
  Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'.";
1916
- Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER"] = "A variable named '%1' already exists as a parameter in the procedure '%2'.";
1917
1915
  Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace";
1918
1916
  Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something...";
1919
1917
  Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
@@ -1937,15 +1935,15 @@ Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_
1937
1935
  Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
1938
1936
  Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
1939
1937
 
1940
- Blockly.Msg["LOGIC_HUE"] = "210";
1941
- Blockly.Msg["LOOPS_HUE"] = "120";
1942
1938
  Blockly.Msg["MATH_HUE"] = "230";
1943
- Blockly.Msg["TEXTS_HUE"] = "160";
1939
+ Blockly.Msg["LOOPS_HUE"] = "120";
1944
1940
  Blockly.Msg["LISTS_HUE"] = "260";
1945
- Blockly.Msg["COLOUR_HUE"] = "20";
1941
+ Blockly.Msg["LOGIC_HUE"] = "210";
1946
1942
  Blockly.Msg["VARIABLES_HUE"] = "330";
1947
- Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
1943
+ Blockly.Msg["TEXTS_HUE"] = "160";
1948
1944
  Blockly.Msg["PROCEDURES_HUE"] = "290";
1945
+ Blockly.Msg["COLOUR_HUE"] = "20";
1946
+ Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
1949
1947
  return Blockly.Msg;
1950
1948
  }));
1951
1949