blockly 9.3.1 → 9.3.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.
package/blockly.min.js CHANGED
@@ -50,17 +50,17 @@ removeElem$$module$build$src$core$utils$array,disposeUiEffect$$module$build$src$
50
50
  bumpIntoBoundsHandler$$module$build$src$core$bump_objects,extractObjectFromEvent$$module$build$src$core$bump_objects,bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects,initIconData$$module$build$src$core$block_dragger,copy$$module$build$src$core$clipboard,copyInternal$$module$build$src$core$clipboard,paste$$module$build$src$core$clipboard,duplicate$$module$build$src$core$clipboard,duplicateInternal$$module$build$src$core$clipboard,getCurrentBlock$$module$build$src$core$contextmenu,setCurrentBlock$$module$build$src$core$contextmenu,
51
51
  show$$module$build$src$core$contextmenu,populate_$$module$build$src$core$contextmenu,position_$$module$build$src$core$contextmenu,createWidget_$$module$build$src$core$contextmenu,haltPropagation$$module$build$src$core$contextmenu,hide$$module$build$src$core$contextmenu,dispose$$module$build$src$core$contextmenu,callbackFactory$$module$build$src$core$contextmenu,commentDeleteOption$$module$build$src$core$contextmenu,commentDuplicateOption$$module$build$src$core$contextmenu,workspaceCommentOption$$module$build$src$core$contextmenu,
52
52
  getParentConnection$$module$build$src$core$keyboard_nav$ast_node,point$$module$build$src$core$utils$svg_paths,curve$$module$build$src$core$utils$svg_paths,moveTo$$module$build$src$core$utils$svg_paths,moveBy$$module$build$src$core$utils$svg_paths,lineTo$$module$build$src$core$utils$svg_paths,line$$module$build$src$core$utils$svg_paths,lineOnAxis$$module$build$src$core$utils$svg_paths,arc$$module$build$src$core$utils$svg_paths,queueRender$$module$build$src$core$render_management,queueBlock$$module$build$src$core$render_management,
53
- doRenders$$module$build$src$core$render_management,renderBlock$$module$build$src$core$render_management,updateConnectionLocations$$module$build$src$core$render_management,registerUndo$$module$build$src$core$contextmenu_items,registerRedo$$module$build$src$core$contextmenu_items,registerCleanup$$module$build$src$core$contextmenu_items,toggleOption_$$module$build$src$core$contextmenu_items,registerCollapse$$module$build$src$core$contextmenu_items,registerExpand$$module$build$src$core$contextmenu_items,
54
- addDeletableBlocks_$$module$build$src$core$contextmenu_items,getDeletableBlocks_$$module$build$src$core$contextmenu_items,deleteNext_$$module$build$src$core$contextmenu_items,registerDeleteAll$$module$build$src$core$contextmenu_items,registerWorkspaceOptions_$$module$build$src$core$contextmenu_items,registerDuplicate$$module$build$src$core$contextmenu_items,registerComment$$module$build$src$core$contextmenu_items,registerInline$$module$build$src$core$contextmenu_items,registerCollapseExpandBlock$$module$build$src$core$contextmenu_items,
55
- registerDisable$$module$build$src$core$contextmenu_items,registerDelete$$module$build$src$core$contextmenu_items,registerHelp$$module$build$src$core$contextmenu_items,registerBlockOptions_$$module$build$src$core$contextmenu_items,registerDefaultOptions$$module$build$src$core$contextmenu_items,isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block,isObservable$$module$build$src$core$interfaces$i_observable,allProcedures$$module$build$src$core$procedures,procTupleComparator$$module$build$src$core$procedures,
56
- findLegalName$$module$build$src$core$procedures,isLegalName$$module$build$src$core$procedures,isNameUsed$$module$build$src$core$procedures,rename$$module$build$src$core$procedures,flyoutCategory$$module$build$src$core$procedures,updateMutatorFlyout$$module$build$src$core$procedures,mutatorOpenListener$$module$build$src$core$procedures,mutatorChangeListener$$module$build$src$core$procedures,getCallers$$module$build$src$core$procedures,blockIsModernCallerFor$$module$build$src$core$procedures,mutateCallers$$module$build$src$core$procedures,
57
- getDefinition$$module$build$src$core$procedures,isDynamicShape$$module$build$src$core$renderers$common$constants,isDebuggerEnabled$$module$build$src$core$renderers$common$debug,startDebugger$$module$build$src$core$renderers$common$debug,stopDebugger$$module$build$src$core$renderers$common$debug,register$$module$build$src$core$renderers$common$block_rendering,unregister$$module$build$src$core$renderers$common$block_rendering,stopDebugger$$module$build$src$core$renderers$common$block_rendering,init$$module$build$src$core$renderers$common$block_rendering,
58
- stringButtonClickHandler$$module$build$src$core$variables_dynamic,numberButtonClickHandler$$module$build$src$core$variables_dynamic,colourButtonClickHandler$$module$build$src$core$variables_dynamic,flyoutCategory$$module$build$src$core$variables_dynamic,flyoutCategoryBlocks$$module$build$src$core$variables_dynamic,getStartPositionRect$$module$build$src$core$positionable_helpers,getCornerOppositeToolbox$$module$build$src$core$positionable_helpers,bumpPositionRect$$module$build$src$core$positionable_helpers,
59
- resizeSvgContents$$module$build$src$core$workspace_svg,inject$$module$build$src$core$inject,createDom$$module$build$src$core$inject,createMainWorkspace$$module$build$src$core$inject,init$$module$build$src$core$inject,onKeyDown$$module$build$src$core$inject,bindDocumentEvents$$module$build$src$core$inject,loadSounds$$module$build$src$core$inject,saveProcedure$$module$build$src$core$serialization$procedures,saveParameter$$module$build$src$core$serialization$procedures,loadProcedure$$module$build$src$core$serialization$procedures,
60
- loadParameter$$module$build$src$core$serialization$procedures,save$$module$build$src$core$serialization$workspaces,load$$module$build$src$core$serialization$workspaces,registerEscape$$module$build$src$core$shortcut_items,registerDelete$$module$build$src$core$shortcut_items,registerCopy$$module$build$src$core$shortcut_items,registerCut$$module$build$src$core$shortcut_items,registerPaste$$module$build$src$core$shortcut_items,registerUndo$$module$build$src$core$shortcut_items,registerRedo$$module$build$src$core$shortcut_items,
61
- registerDefaultShortcuts$$module$build$src$core$shortcut_items,isSelectableToolboxItem$$module$build$src$core$interfaces$i_selectable_toolbox_item,getRelativeXY$$module$build$src$core$utils,getInjectionDivXY$$module$build$src$core$utils,tokenizeInterpolation$$module$build$src$core$utils,replaceMessageReferences$$module$build$src$core$utils,checkMessageReferences$$module$build$src$core$utils,is3dSupported$$module$build$src$core$utils,getViewportBBox$$module$build$src$core$utils,arrayRemove$$module$build$src$core$utils,
62
- getDocumentScroll$$module$build$src$core$utils,getBlockTypeCounts$$module$build$src$core$utils,screenToWsCoordinates$$module$build$src$core$utils,parseBlockColour$$module$build$src$core$utils,runAfterPageLoad$$module$build$src$core$utils,hideChaff$$module$build$src$core$blockly,resizeSvgContentsLocal$$module$build$src$core$blockly,copy$$module$build$src$core$blockly,paste$$module$build$src$core$blockly,duplicate$$module$build$src$core$blockly,isNumber$$module$build$src$core$blockly,hueToHex$$module$build$src$core$blockly,
63
- bindEvent_$$module$build$src$core$blockly,unbindEvent_$$module$build$src$core$blockly,bindEventWithChecks_$$module$build$src$core$blockly,$jscomp;warn$$module$build$src$core$utils$deprecation=function(a,b,c,d){a=a+" was deprecated in "+b+" and will be deleted in "+c+".";d&&(a+="\nUse "+d+" instead.");console.warn(a)};
53
+ doRenders$$module$build$src$core$render_management,renderBlock$$module$build$src$core$render_management,updateConnectionLocations$$module$build$src$core$render_management,updateIconLocations$$module$build$src$core$render_management,registerUndo$$module$build$src$core$contextmenu_items,registerRedo$$module$build$src$core$contextmenu_items,registerCleanup$$module$build$src$core$contextmenu_items,toggleOption_$$module$build$src$core$contextmenu_items,registerCollapse$$module$build$src$core$contextmenu_items,
54
+ registerExpand$$module$build$src$core$contextmenu_items,addDeletableBlocks_$$module$build$src$core$contextmenu_items,getDeletableBlocks_$$module$build$src$core$contextmenu_items,deleteNext_$$module$build$src$core$contextmenu_items,registerDeleteAll$$module$build$src$core$contextmenu_items,registerWorkspaceOptions_$$module$build$src$core$contextmenu_items,registerDuplicate$$module$build$src$core$contextmenu_items,registerComment$$module$build$src$core$contextmenu_items,registerInline$$module$build$src$core$contextmenu_items,
55
+ registerCollapseExpandBlock$$module$build$src$core$contextmenu_items,registerDisable$$module$build$src$core$contextmenu_items,registerDelete$$module$build$src$core$contextmenu_items,registerHelp$$module$build$src$core$contextmenu_items,registerBlockOptions_$$module$build$src$core$contextmenu_items,registerDefaultOptions$$module$build$src$core$contextmenu_items,isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block,isObservable$$module$build$src$core$interfaces$i_observable,allProcedures$$module$build$src$core$procedures,
56
+ procTupleComparator$$module$build$src$core$procedures,findLegalName$$module$build$src$core$procedures,isLegalName$$module$build$src$core$procedures,isNameUsed$$module$build$src$core$procedures,rename$$module$build$src$core$procedures,flyoutCategory$$module$build$src$core$procedures,updateMutatorFlyout$$module$build$src$core$procedures,mutatorOpenListener$$module$build$src$core$procedures,mutatorChangeListener$$module$build$src$core$procedures,getCallers$$module$build$src$core$procedures,blockIsModernCallerFor$$module$build$src$core$procedures,
57
+ mutateCallers$$module$build$src$core$procedures,getDefinition$$module$build$src$core$procedures,isDynamicShape$$module$build$src$core$renderers$common$constants,isDebuggerEnabled$$module$build$src$core$renderers$common$debug,startDebugger$$module$build$src$core$renderers$common$debug,stopDebugger$$module$build$src$core$renderers$common$debug,register$$module$build$src$core$renderers$common$block_rendering,unregister$$module$build$src$core$renderers$common$block_rendering,stopDebugger$$module$build$src$core$renderers$common$block_rendering,
58
+ init$$module$build$src$core$renderers$common$block_rendering,stringButtonClickHandler$$module$build$src$core$variables_dynamic,numberButtonClickHandler$$module$build$src$core$variables_dynamic,colourButtonClickHandler$$module$build$src$core$variables_dynamic,flyoutCategory$$module$build$src$core$variables_dynamic,flyoutCategoryBlocks$$module$build$src$core$variables_dynamic,getStartPositionRect$$module$build$src$core$positionable_helpers,getCornerOppositeToolbox$$module$build$src$core$positionable_helpers,
59
+ bumpPositionRect$$module$build$src$core$positionable_helpers,resizeSvgContents$$module$build$src$core$workspace_svg,inject$$module$build$src$core$inject,createDom$$module$build$src$core$inject,createMainWorkspace$$module$build$src$core$inject,init$$module$build$src$core$inject,onKeyDown$$module$build$src$core$inject,bindDocumentEvents$$module$build$src$core$inject,loadSounds$$module$build$src$core$inject,saveProcedure$$module$build$src$core$serialization$procedures,saveParameter$$module$build$src$core$serialization$procedures,
60
+ loadProcedure$$module$build$src$core$serialization$procedures,loadParameter$$module$build$src$core$serialization$procedures,save$$module$build$src$core$serialization$workspaces,load$$module$build$src$core$serialization$workspaces,registerEscape$$module$build$src$core$shortcut_items,registerDelete$$module$build$src$core$shortcut_items,registerCopy$$module$build$src$core$shortcut_items,registerCut$$module$build$src$core$shortcut_items,registerPaste$$module$build$src$core$shortcut_items,registerUndo$$module$build$src$core$shortcut_items,
61
+ registerRedo$$module$build$src$core$shortcut_items,registerDefaultShortcuts$$module$build$src$core$shortcut_items,isSelectableToolboxItem$$module$build$src$core$interfaces$i_selectable_toolbox_item,getRelativeXY$$module$build$src$core$utils,getInjectionDivXY$$module$build$src$core$utils,tokenizeInterpolation$$module$build$src$core$utils,replaceMessageReferences$$module$build$src$core$utils,checkMessageReferences$$module$build$src$core$utils,is3dSupported$$module$build$src$core$utils,getViewportBBox$$module$build$src$core$utils,
62
+ arrayRemove$$module$build$src$core$utils,getDocumentScroll$$module$build$src$core$utils,getBlockTypeCounts$$module$build$src$core$utils,screenToWsCoordinates$$module$build$src$core$utils,parseBlockColour$$module$build$src$core$utils,runAfterPageLoad$$module$build$src$core$utils,hideChaff$$module$build$src$core$blockly,resizeSvgContentsLocal$$module$build$src$core$blockly,copy$$module$build$src$core$blockly,paste$$module$build$src$core$blockly,duplicate$$module$build$src$core$blockly,isNumber$$module$build$src$core$blockly,
63
+ hueToHex$$module$build$src$core$blockly,bindEvent_$$module$build$src$core$blockly,unbindEvent_$$module$build$src$core$blockly,bindEventWithChecks_$$module$build$src$core$blockly,$jscomp;warn$$module$build$src$core$utils$deprecation=function(a,b,c,d){a=a+" was deprecated in "+b+" and will be deleted in "+c+".";d&&(a+="\nUse "+d+" instead.");console.warn(a)};
64
64
  register$$module$build$src$core$registry=function(a,b,c,d){if(!(a instanceof Type$$module$build$src$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$build$src$core$registry[a],
65
65
  g=nameMap$$module$build$src$core$registry[a];f||(f=typeMap$$module$build$src$core$registry[a]=Object.create(null),g=nameMap$$module$build$src$core$registry[a]=Object.create(null));validate$$module$build$src$core$registry(a,c);if(!d&&f[e])throw Error('Name "'+e+'" with type "'+a+'" already registered.');f[e]=c;g[e]=b};
66
66
  validate$$module$build$src$core$registry=function(a,b){switch(a){case String(Type$$module$build$src$core$registry.FIELD):if("function"!==typeof b.fromJson)throw Error('Type "'+a+'" must have a fromJson function');}};
@@ -335,9 +335,10 @@ e=new Coordinate$$module$build$src$core$utils$coordinate(b.clientX-e.left,b.clie
335
335
  point$$module$build$src$core$utils$svg_paths=function(a,b){return" "+a+","+b+" "};curve$$module$build$src$core$utils$svg_paths=function(a,b){return" "+a+b.join("")};moveTo$$module$build$src$core$utils$svg_paths=function(a,b){return" M "+a+","+b+" "};moveBy$$module$build$src$core$utils$svg_paths=function(a,b){return" m "+a+","+b+" "};lineTo$$module$build$src$core$utils$svg_paths=function(a,b){return" l "+a+","+b+" "};line$$module$build$src$core$utils$svg_paths=function(a){return" l"+a.join("")};
336
336
  lineOnAxis$$module$build$src$core$utils$svg_paths=function(a,b){return" "+a+" "+b+" "};arc$$module$build$src$core$utils$svg_paths=function(a,b,c,d){return a+" "+c+" "+c+" "+b+d};queueRender$$module$build$src$core$render_management=function(a){queueBlock$$module$build$src$core$render_management(a);pid$$module$build$src$core$render_management||(pid$$module$build$src$core$render_management=window.requestAnimationFrame(doRenders$$module$build$src$core$render_management))};
337
337
  queueBlock$$module$build$src$core$render_management=function(a){dirtyBlocks$$module$build$src$core$render_management.add(a);const b=a.getParent();b?queueBlock$$module$build$src$core$render_management(b):rootBlocks$$module$build$src$core$render_management.add(a)};
338
- doRenders$$module$build$src$core$render_management=function(){const a=new Set([...rootBlocks$$module$build$src$core$render_management].map(b=>b.workspace));for(const b of rootBlocks$$module$build$src$core$render_management)b.isDisposed()||b.getParent()||(renderBlock$$module$build$src$core$render_management(b),updateConnectionLocations$$module$build$src$core$render_management(b,b.getRelativeToSurfaceXY()));for(const b of a)b.resizeContents();rootBlocks$$module$build$src$core$render_management.clear();
339
- dirtyBlocks$$module$build$src$core$render_management=new Set;pid$$module$build$src$core$render_management=0};renderBlock$$module$build$src$core$render_management=function(a){if(dirtyBlocks$$module$build$src$core$render_management.has(a)){for(const b of a.getChildren(!1))renderBlock$$module$build$src$core$render_management(b);a.renderEfficiently()}};
338
+ doRenders$$module$build$src$core$render_management=function(){const a=new Set([...rootBlocks$$module$build$src$core$render_management].map(b=>b.workspace));for(const b of rootBlocks$$module$build$src$core$render_management)b.isDisposed()||b.getParent()||(renderBlock$$module$build$src$core$render_management(b),updateConnectionLocations$$module$build$src$core$render_management(b,b.getRelativeToSurfaceXY()),updateIconLocations$$module$build$src$core$render_management(b));for(const b of a)b.resizeContents();
339
+ rootBlocks$$module$build$src$core$render_management.clear();dirtyBlocks$$module$build$src$core$render_management=new Set;pid$$module$build$src$core$render_management=0};renderBlock$$module$build$src$core$render_management=function(a){if(dirtyBlocks$$module$build$src$core$render_management.has(a)){for(const b of a.getChildren(!1))renderBlock$$module$build$src$core$render_management(b);a.renderEfficiently()}};
340
340
  updateConnectionLocations$$module$build$src$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$build$src$core$render_management.has(d))&&updateConnectionLocations$$module$build$src$core$render_management(d,Coordinate$$module$build$src$core$utils$coordinate.sum(b,d.relativeCoords))}};
341
+ updateIconLocations$$module$build$src$core$render_management=function(a){if(a.getIcons){for(const b of a.getIcons())b.computeIconLocation();for(const b of a.getChildren(!1))updateIconLocations$$module$build$src$core$render_management(b)}};
341
342
  registerUndo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.UNDO},preconditionFn(a){return 0<a.workspace.getUndoStack().length?"enabled":"disabled"},callback(a){a.workspace.undo(!1)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"undoWorkspace",weight:1})};
342
343
  registerRedo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.REDO},preconditionFn(a){return 0<a.workspace.getRedoStack().length?"enabled":"disabled"},callback(a){a.workspace.undo(!0)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"redoWorkspace",weight:2})};
343
344
  registerCleanup$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.CLEAN_UP},preconditionFn(a){return a.workspace.isMovable()?1<a.workspace.getTopBlocks(!1).length?"enabled":"disabled":"hidden"},callback(a){a.workspace.cleanUp()},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"cleanWorkspace",weight:3})};
@@ -743,10 +744,10 @@ this.bubble_.registerMoveEvent(this.onBubbleMove.bind(this));var d=c.options.lan
743
744
  ()=>{const h=this.getBlock();h.saveConnections&&h.saveConnections(g)};b.workspace.addChangeListener(this.sourceListener)}this.resizeBubble();d=this.workspaceChanged.bind(this);c.addChangeListener(d);e&&e.getWorkspace().addChangeListener(d);this.updateWorkspace();this.applyColour()}else this.svgDialog=null,this.workspace_.dispose(),this.rootBlock=this.workspace_=null,null==(c=this.bubble_)||c.dispose(),this.bubble_=null,this.workspaceHeight=this.workspaceWidth=0,this.sourceListener&&(b.workspace.removeChangeListener(this.sourceListener),
744
745
  this.sourceListener=null);fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(b,a,"mutator"))}}workspaceChanged(a){this.shouldIgnoreMutatorEvent_(a)||this.updateWorkspacePid||(this.updateWorkspacePid=setTimeout(()=>{this.updateWorkspacePid=null;this.updateWorkspace()},0))}shouldIgnoreMutatorEvent_(a){return a.isUiEvent||a.type===CREATE$$module$build$src$core$events$utils||a.type===CHANGE$$module$build$src$core$events$utils&&
745
746
  "disabled"===a.element}updateWorkspace(){if(!this.workspace_.isDragging()){var a=this.workspace_.getTopBlocks(!1);for(let d=0,e;e=a[d];d++){var b=e.getRelativeToSurfaceXY();20>b.y&&e.moveBy(0,20-b.y);if(e.RTL){var c=-20;const f=this.workspace_.getFlyout();f&&(c-=f.getWidth());b.x>c&&e.moveBy(c-b.x,0)}else 20>b.x&&e.moveBy(20-b.x,0)}}if(this.rootBlock&&this.rootBlock.workspace===this.workspace_){(a=getGroup$$module$build$src$core$events$utils())||setGroup$$module$build$src$core$events$utils(!0);const d=
746
- this.getBlock();b=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);c=d.rendered;d.rendered=!1;d.compose(this.rootBlock);d.rendered=c;d.initSvg();d.rendered&&d.render();c=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);if(b!==c){fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(d,"mutation",null,b,c));const e=getGroup$$module$build$src$core$events$utils();
747
- setTimeout(function(){const f=getGroup$$module$build$src$core$events$utils();setGroup$$module$build$src$core$events$utils(e);d.bumpNeighbours();setGroup$$module$build$src$core$events$utils(f)},$.config$$module$build$src$core$config.bumpDelay)}this.workspace_.isDragging()||setTimeout(()=>this.resizeBubble(),0);setGroup$$module$build$src$core$events$utils(a)}}dispose(){this.getBlock().mutator=null;super.dispose()}updateBlockStyle(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){const b=a.getAllBlocks(!1);
748
- for(let c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout()){a=a.getWorkspace().getAllBlocks(!1);for(let c=0,d;d=a[c];c++)d.setStyle(d.getStyleName())}}}static reconnect(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;const d=a.targetBlock();return d&&d!==b||!c||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)}static findParentWs(a){let b=null;if(a&&a.options){const c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):
749
- c&&(b=c)}return b}};module$build$src$core$mutator={};module$build$src$core$mutator.Mutator=$.Mutator$$module$build$src$core$mutator;var allExtensions$$module$build$src$core$extensions=Object.create(null),TEST_ONLY$$module$build$src$core$extensions={allExtensions:allExtensions$$module$build$src$core$extensions};$.register$$module$build$src$core$extensions("parent_tooltip_when_inline",extensionParentTooltip$$module$build$src$core$extensions);$.module$build$src$core$extensions={};$.module$build$src$core$extensions.TEST_ONLY=TEST_ONLY$$module$build$src$core$extensions;$.module$build$src$core$extensions.apply=apply$$module$build$src$core$extensions;
747
+ this.getBlock();b=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);d.compose(this.rootBlock);c=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);if(b!==c){fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(d,"mutation",null,b,c));const e=getGroup$$module$build$src$core$events$utils();setTimeout(function(){const f=getGroup$$module$build$src$core$events$utils();
748
+ setGroup$$module$build$src$core$events$utils(e);d.bumpNeighbours();setGroup$$module$build$src$core$events$utils(f)},$.config$$module$build$src$core$config.bumpDelay)}this.workspace_.isDragging()||setTimeout(()=>this.resizeBubble(),0);setGroup$$module$build$src$core$events$utils(a)}}dispose(){this.getBlock().mutator=null;super.dispose()}updateBlockStyle(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){const b=a.getAllBlocks(!1);for(let c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout()){a=
749
+ a.getWorkspace().getAllBlocks(!1);for(let c=0,d;d=a[c];c++)d.setStyle(d.getStyleName())}}}static reconnect(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;const d=a.targetBlock();return d&&d!==b||!c||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)}static findParentWs(a){let b=null;if(a&&a.options){const c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):c&&(b=c)}return b}};module$build$src$core$mutator={};
750
+ module$build$src$core$mutator.Mutator=$.Mutator$$module$build$src$core$mutator;var allExtensions$$module$build$src$core$extensions=Object.create(null),TEST_ONLY$$module$build$src$core$extensions={allExtensions:allExtensions$$module$build$src$core$extensions};$.register$$module$build$src$core$extensions("parent_tooltip_when_inline",extensionParentTooltip$$module$build$src$core$extensions);$.module$build$src$core$extensions={};$.module$build$src$core$extensions.TEST_ONLY=TEST_ONLY$$module$build$src$core$extensions;$.module$build$src$core$extensions.apply=apply$$module$build$src$core$extensions;
750
751
  $.module$build$src$core$extensions.buildTooltipForDropdown=$.buildTooltipForDropdown$$module$build$src$core$extensions;$.module$build$src$core$extensions.buildTooltipWithFieldText=$.buildTooltipWithFieldText$$module$build$src$core$extensions;$.module$build$src$core$extensions.isRegistered=isRegistered$$module$build$src$core$extensions;$.module$build$src$core$extensions.register=$.register$$module$build$src$core$extensions;$.module$build$src$core$extensions.registerMixin=registerMixin$$module$build$src$core$extensions;
751
752
  $.module$build$src$core$extensions.registerMutator=$.registerMutator$$module$build$src$core$extensions;$.module$build$src$core$extensions.runAfterPageLoad=runAfterPageLoad$$module$build$src$core$extensions;$.module$build$src$core$extensions.unregister=unregister$$module$build$src$core$extensions;var FieldLabel$$module$build$src$core$field_label=class extends Field$$module$build$src$core$field{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.class_=null;this.EDITABLE=!1;a!==Field$$module$build$src$core$field.SKIP_SETUP&&(c?this.configure_(c):this.class_=b||null,this.setValue(a))}configure_(a){super.configure_(a);a.class&&(this.class_=a.class)}initView(){this.createTextElement_();this.class_&&addClass$$module$build$src$core$utils$dom(this.getTextElement(),this.class_)}doClassValidation_(a){return null===
752
753
  a||void 0===a?null:`${a}`}setClass(a){this.textElement_&&(this.class_&&removeClass$$module$build$src$core$utils$dom(this.textElement_,this.class_),a&&addClass$$module$build$src$core$utils$dom(this.textElement_,a));this.class_=a}static fromJson(a){return new this(replaceMessageReferences$$module$build$src$core$utils$parsing(a.text),void 0,a)}};register$$module$build$src$core$field_registry("field_label",FieldLabel$$module$build$src$core$field_label);
@@ -807,19 +808,19 @@ null==(f=this.capabilityToComponentIds.get(e))||f.push(c)}else this.capabilityTo
807
808
  a+'" has not been added to the ComponentManager');if(this.hasCapability(a,b))console.warn('Plugin "'+a+'already has capability "'+b+'"');else{b=`${b}`.toLowerCase();var c;null==(c=this.componentData.get(a))||c.capabilities.push(b);var d;null==(d=this.capabilityToComponentIds.get(b))||d.push(a)}}removeCapability(a,b){if(!this.getComponent(a))throw Error('Cannot remove capability, "'+b+'". Plugin "'+a+'" has not been added to the ComponentManager');this.hasCapability(a,b)?(b=`${b}`.toLowerCase(),removeElem$$module$build$src$core$utils$array(this.componentData.get(a).capabilities,
808
809
  b),removeElem$$module$build$src$core$utils$array(this.capabilityToComponentIds.get(b),a)):console.warn('Plugin "'+a+"doesn't have capability \""+b+'" to remove')}hasCapability(a,b){b=`${b}`.toLowerCase();return this.componentData.has(a)&&-1!==this.componentData.get(a).capabilities.indexOf(b)}getComponent(a){let b;return null==(b=this.componentData.get(a))?void 0:b.component}getComponents(a,b){a=`${a}`.toLowerCase();a=this.capabilityToComponentIds.get(a);if(!a)return[];const c=[];if(b){const d=[];
809
810
  a.forEach(e=>{d.push(this.componentData.get(e))});d.sort(function(e,f){return e.weight-f.weight});d.forEach(function(e){c.push(e.component)})}else a.forEach(d=>{c.push(this.componentData.get(d).component)});return c}};ComponentManager$$module$build$src$core$component_manager.Capability=Capability$$module$build$src$core$component_manager;var module$build$src$core$component_manager={};module$build$src$core$component_manager.ComponentManager=ComponentManager$$module$build$src$core$component_manager;var DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager="The insertion marker manager tried to create a marker but the result is missing %1. If you are using a mutator, make sure your domToMutation method is properly defined.",InsertionMarkerManager$$module$build$src$core$insertion_marker_manager=class{constructor(a){this.activeCandidate=this.lastMarker=this.lastOnStack=null;this.wouldDeleteBlock=!1;this.fadedBlock=this.highlightedBlock=this.markerConnection=null;setSelected$$module$build$src$core$common(a);
810
- this.topBlock=a;this.workspace=a.workspace;this.firstMarker=this.createMarkerBlock(this.topBlock);this.availableConnections=this.initAvailableConnections();this.lastOnStack&&(this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock()))}dispose(){this.availableConnections.length=0;this.disposeInsertionMarker(this.firstMarker);this.disposeInsertionMarker(this.lastMarker)}updateAvailableConnections(){this.availableConnections=this.initAvailableConnections()}wouldConnectBlock(){return!!this.activeCandidate}applyConnections(){if(this.activeCandidate){var {local:a,
811
- closest:b}=this.activeCandidate;a.connect(b);disable$$module$build$src$core$events$utils();this.hidePreview();enable$$module$build$src$core$events$utils();if(this.topBlock.rendered){const c=a.isSuperior()?b:a;connectionUiEffect$$module$build$src$core$block_animations(c.getSourceBlock());const d=this.topBlock.getRootBlock();requestAnimationFrame(()=>{setTimeout(()=>{d.bringToFront()},0)})}}}update(a,b){const c=this.getCandidate(a);if((this.wouldDeleteBlock=this.shouldDelete(!!c,b))||this.shouldUpdatePreviews(c,
812
- a))disable$$module$build$src$core$events$utils(),this.maybeHidePreview(c),this.maybeShowPreview(c),enable$$module$build$src$core$events$utils()}createMarkerBlock(a){var b=a.type;disable$$module$build$src$core$events$utils();let c;try{c=this.workspace.newBlock(b);c.setInsertionMarker(!0);if(a.saveExtraState){var d=a.saveExtraState();d&&c.loadExtraState&&c.loadExtraState(d)}else if(a.mutationToDom){const e=a.mutationToDom();e&&c.domToMutation&&c.domToMutation(e)}for(b=0;b<a.inputList.length;b++){const e=
813
- a.inputList[b];if(e.name===COLLAPSED_INPUT_NAME$$module$build$src$core$constants)continue;const f=c.inputList[b];if(!f)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","an input"));for(d=0;d<e.fieldRow.length;d++){const g=e.fieldRow[d],h=f.fieldRow[d];if(!h)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","a field"));h.setValue(g.getValue())}}c.setCollapsed(a.isCollapsed());c.setInputsInline(a.getInputsInline());
814
- c.initSvg();c.getSvgRoot().setAttribute("visibility","hidden")}finally{enable$$module$build$src$core$events$utils()}return c}initAvailableConnections(){const a=this.topBlock.getConnections_(!1),b=this.topBlock.lastConnectionInStack(!0);b&&b!==this.topBlock.nextConnection&&(a.push(b),this.lastOnStack=b);return a}shouldUpdatePreviews(a,b){if(!a)return!!this.activeCandidate;if(!this.activeCandidate)return!0;const {local:c,closest:d}=this.activeCandidate;if(d===a.closest&&c===a.local)return!1;const e=
815
- c.x+b.x-d.x;b=c.y+b.y-d.y;return a.radius<Math.sqrt(e*e+b*b)-$.config$$module$build$src$core$config.currentConnectionPreference}getCandidate(a){this.markerConnection&&this.markerConnection.isConnected()||this.updateAvailableConnections();let b=this.getStartRadius(),c=null;for(let d=0;d<this.availableConnections.length;d++){const e=this.availableConnections[d],f=e.closest(b,a);f.connection&&(c={closest:f.connection,local:e,radius:f.radius},b=f.radius)}return c}getStartRadius(){return this.activeCandidate?
816
- $.config$$module$build$src$core$config.connectingSnapRadius:$.config$$module$build$src$core$config.snapRadius}shouldDelete(a,b){return b&&this.workspace.getComponentManager().hasCapability(b.id,ComponentManager$$module$build$src$core$component_manager.Capability.DELETE_AREA)?b.wouldDelete(this.topBlock,a):!1}maybeShowPreview(a){if(!this.wouldDeleteBlock&&a){var b=a.closest,c;b===(null==(c=this.activeCandidate)?void 0:c.closest)||b.getSourceBlock().isInsertionMarker()?console.log("Trying to connect to an insertion marker"):
817
- (this.activeCandidate=a,this.showPreview(this.activeCandidate))}}showPreview(a){const b=this.workspace.getRenderer();switch(b.getConnectionPreviewMethod(a.closest,a.local,this.topBlock)){case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INPUT_OUTLINE:this.showInsertionInputOutline(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INSERTION_MARKER:this.showInsertionMarker(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.REPLACEMENT_FADE:this.showReplacementFade(a)}b.shouldHighlightConnection(a.closest)&&
818
- a.closest.highlight()}maybeHidePreview(a){if(!a)this.hidePreview();else if(this.activeCandidate){const b=this.activeCandidate.local!==a.local;(this.activeCandidate.closest!==a.closest||b||this.wouldDeleteBlock)&&this.hidePreview()}this.activeCandidate=this.markerConnection=null}hidePreview(){let a;const b=null==(a=this.activeCandidate)?void 0:a.closest;b&&b.targetBlock()&&this.workspace.getRenderer().shouldHighlightConnection(b)&&b.unhighlight();this.hideReplacementFade();this.hideInsertionInputOutline();
819
- this.hideInsertionMarker()}showInsertionMarker(a){const {local:b,closest:c}=a;let d=(a=this.lastOnStack&&b===this.lastOnStack)?this.lastMarker:this.firstMarker;if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");let e;try{e=d.getMatchingConnection(b.getSourceBlock(),b)}catch(f){a&&this.lastOnStack?(this.disposeInsertionMarker(this.lastMarker),d=this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock())):(this.disposeInsertionMarker(this.firstMarker),
820
- d=this.firstMarker=this.createMarkerBlock(this.topBlock));if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");e=d.getMatchingConnection(b.getSourceBlock(),b)}if(!e)throw Error("Cannot show the insertion marker because there is no associated connection");if(e===this.markerConnection)throw Error("Made it to showInsertionMarker_ even though the marker isn't changing");d.render();d.rendered=!0;d.getSvgRoot().setAttribute("visibility","visible");e&&c&&d.positionNearConnection(e,
821
- c);c&&e.connect(c);this.markerConnection=e}hideInsertionMarker(){if(this.markerConnection){var a=this.markerConnection,b=a.getSourceBlock(),c=b.outputConnection,d;if((null==(d=b.previousConnection)?0:d.targetConnection)||(null==c?0:c.targetConnection))b.unplug(!0);else{let e;null==(e=a.targetBlock())||e.unplug(!1)}if(a.targetConnection)throw Error("markerConnection still connected at the end of disconnectInsertionMarker");this.markerConnection=null;(a=b.getSvgRoot())&&a.setAttribute("visibility",
822
- "hidden")}}showInsertionInputOutline(a){a=a.closest;this.highlightedBlock=a.getSourceBlock();this.highlightedBlock.highlightShapeForInput(a,!0)}hideInsertionInputOutline(){if(this.highlightedBlock){if(!this.activeCandidate)throw Error("Cannot hide the insertion marker outline because there is no active candidate");this.highlightedBlock.highlightShapeForInput(this.activeCandidate.closest,!1);this.highlightedBlock=null}}showReplacementFade(a){this.fadedBlock=a.closest.targetBlock();if(!this.fadedBlock)throw Error("Cannot show the replacement fade because the closest connection does not have a target block");
811
+ this.topBlock=a;this.workspace=a.workspace;this.firstMarker=this.createMarkerBlock(this.topBlock);this.availableConnections=this.initAvailableConnections();this.lastOnStack&&(this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock()))}dispose(){this.availableConnections.length=0;this.disposeInsertionMarker(this.firstMarker);this.disposeInsertionMarker(this.lastMarker)}updateAvailableConnections(){this.availableConnections=this.initAvailableConnections()}wouldConnectBlock(){return!!this.activeCandidate}applyConnections(){if(this.activeCandidate){disable$$module$build$src$core$events$utils();
812
+ this.hidePreview();enable$$module$build$src$core$events$utils();var {local:a,closest:b}=this.activeCandidate;a.connect(b);if(this.topBlock.rendered){const c=a.isSuperior()?b:a,d=this.topBlock.getRootBlock();requestAnimationFrame(()=>{connectionUiEffect$$module$build$src$core$block_animations(c.getSourceBlock());setTimeout(()=>{d.bringToFront()},0)})}}}update(a,b){const c=this.getCandidate(a);if((this.wouldDeleteBlock=this.shouldDelete(!!c,b))||this.shouldUpdatePreviews(c,a))disable$$module$build$src$core$events$utils(),
813
+ this.maybeHidePreview(c),this.maybeShowPreview(c),enable$$module$build$src$core$events$utils()}createMarkerBlock(a){var b=a.type;disable$$module$build$src$core$events$utils();let c;try{c=this.workspace.newBlock(b);c.setInsertionMarker(!0);if(a.saveExtraState){var d=a.saveExtraState();d&&c.loadExtraState&&c.loadExtraState(d)}else if(a.mutationToDom){const e=a.mutationToDom();e&&c.domToMutation&&c.domToMutation(e)}for(b=0;b<a.inputList.length;b++){const e=a.inputList[b];if(e.name===COLLAPSED_INPUT_NAME$$module$build$src$core$constants)continue;
814
+ const f=c.inputList[b];if(!f)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","an input"));for(d=0;d<e.fieldRow.length;d++){const g=e.fieldRow[d],h=f.fieldRow[d];if(!h)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","a field"));h.setValue(g.getValue())}}c.setCollapsed(a.isCollapsed());c.setInputsInline(a.getInputsInline());c.initSvg();c.getSvgRoot().setAttribute("visibility","hidden")}finally{enable$$module$build$src$core$events$utils()}return c}initAvailableConnections(){const a=
815
+ this.topBlock.getConnections_(!1),b=this.topBlock.lastConnectionInStack(!0);b&&b!==this.topBlock.nextConnection&&(a.push(b),this.lastOnStack=b);return a}shouldUpdatePreviews(a,b){if(!a)return!!this.activeCandidate;if(!this.activeCandidate)return!0;const {local:c,closest:d}=this.activeCandidate;if(d===a.closest&&c===a.local)return!1;const e=c.x+b.x-d.x;b=c.y+b.y-d.y;return a.radius<Math.sqrt(e*e+b*b)-$.config$$module$build$src$core$config.currentConnectionPreference}getCandidate(a){this.markerConnection&&
816
+ this.markerConnection.isConnected()||this.updateAvailableConnections();let b=this.getStartRadius(),c=null;for(let d=0;d<this.availableConnections.length;d++){const e=this.availableConnections[d],f=e.closest(b,a);f.connection&&(c={closest:f.connection,local:e,radius:f.radius},b=f.radius)}return c}getStartRadius(){return this.activeCandidate?$.config$$module$build$src$core$config.connectingSnapRadius:$.config$$module$build$src$core$config.snapRadius}shouldDelete(a,b){return b&&this.workspace.getComponentManager().hasCapability(b.id,
817
+ ComponentManager$$module$build$src$core$component_manager.Capability.DELETE_AREA)?b.wouldDelete(this.topBlock,a):!1}maybeShowPreview(a){if(!this.wouldDeleteBlock&&a){var b=a.closest,c;b===(null==(c=this.activeCandidate)?void 0:c.closest)||b.getSourceBlock().isInsertionMarker()?console.log("Trying to connect to an insertion marker"):(this.activeCandidate=a,this.showPreview(this.activeCandidate))}}showPreview(a){const b=this.workspace.getRenderer();switch(b.getConnectionPreviewMethod(a.closest,a.local,
818
+ this.topBlock)){case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INPUT_OUTLINE:this.showInsertionInputOutline(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INSERTION_MARKER:this.showInsertionMarker(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.REPLACEMENT_FADE:this.showReplacementFade(a)}b.shouldHighlightConnection(a.closest)&&a.closest.highlight()}maybeHidePreview(a){if(!a)this.hidePreview();
819
+ else if(this.activeCandidate){const b=this.activeCandidate.local!==a.local;(this.activeCandidate.closest!==a.closest||b||this.wouldDeleteBlock)&&this.hidePreview()}this.activeCandidate=this.markerConnection=null}hidePreview(){let a;const b=null==(a=this.activeCandidate)?void 0:a.closest;b&&b.targetBlock()&&this.workspace.getRenderer().shouldHighlightConnection(b)&&b.unhighlight();this.hideReplacementFade();this.hideInsertionInputOutline();this.hideInsertionMarker()}showInsertionMarker(a){const {local:b,
820
+ closest:c}=a;let d=(a=this.lastOnStack&&b===this.lastOnStack)?this.lastMarker:this.firstMarker;if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");let e;try{e=d.getMatchingConnection(b.getSourceBlock(),b)}catch(f){a&&this.lastOnStack?(this.disposeInsertionMarker(this.lastMarker),d=this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock())):(this.disposeInsertionMarker(this.firstMarker),d=this.firstMarker=this.createMarkerBlock(this.topBlock));
821
+ if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");e=d.getMatchingConnection(b.getSourceBlock(),b)}if(!e)throw Error("Cannot show the insertion marker because there is no associated connection");if(e===this.markerConnection)throw Error("Made it to showInsertionMarker_ even though the marker isn't changing");d.render();d.rendered=!0;d.getSvgRoot().setAttribute("visibility","visible");e&&c&&d.positionNearConnection(e,c);c&&e.connect(c);this.markerConnection=
822
+ e}hideInsertionMarker(){if(this.markerConnection){var a=this.markerConnection,b=a.getSourceBlock(),c=b.outputConnection,d;if((null==(d=b.previousConnection)?0:d.targetConnection)||(null==c?0:c.targetConnection))b.unplug(!0);else{let e;null==(e=a.targetBlock())||e.unplug(!1)}if(a.targetConnection)throw Error("markerConnection still connected at the end of disconnectInsertionMarker");this.markerConnection=null;(a=b.getSvgRoot())&&a.setAttribute("visibility","hidden")}}showInsertionInputOutline(a){a=
823
+ a.closest;this.highlightedBlock=a.getSourceBlock();this.highlightedBlock.highlightShapeForInput(a,!0)}hideInsertionInputOutline(){if(this.highlightedBlock){if(!this.activeCandidate)throw Error("Cannot hide the insertion marker outline because there is no active candidate");this.highlightedBlock.highlightShapeForInput(this.activeCandidate.closest,!1);this.highlightedBlock=null}}showReplacementFade(a){this.fadedBlock=a.closest.targetBlock();if(!this.fadedBlock)throw Error("Cannot show the replacement fade because the closest connection does not have a target block");
823
824
  this.fadedBlock.fadeForReplacement(!0)}hideReplacementFade(){this.fadedBlock&&(this.fadedBlock.fadeForReplacement(!1),this.fadedBlock=null)}getInsertionMarkers(){const a=[];this.firstMarker&&a.push(this.firstMarker);this.lastMarker&&a.push(this.lastMarker);return a}disposeInsertionMarker(a){if(a){disable$$module$build$src$core$events$utils();try{a.dispose()}finally{enable$$module$build$src$core$events$utils()}}}};
824
825
  (function(a){a=a.PREVIEW_TYPE||(a.PREVIEW_TYPE={});a[a.INSERTION_MARKER=0]="INSERTION_MARKER";a[a.INPUT_OUTLINE=1]="INPUT_OUTLINE";a[a.REPLACEMENT_FADE=2]="REPLACEMENT_FADE"})(InsertionMarkerManager$$module$build$src$core$insertion_marker_manager||(InsertionMarkerManager$$module$build$src$core$insertion_marker_manager={}));
825
826
  var PreviewType$$module$build$src$core$insertion_marker_manager=InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE,module$build$src$core$insertion_marker_manager={};module$build$src$core$insertion_marker_manager.InsertionMarkerManager=InsertionMarkerManager$$module$build$src$core$insertion_marker_manager;module$build$src$core$insertion_marker_manager.PreviewType=PreviewType$$module$build$src$core$insertion_marker_manager;var BlockDragger$$module$build$src$core$block_dragger=class{constructor(a,b){this.dragTarget_=null;this.wouldDeleteBlock_=!1;this.draggingBlock_=a;this.draggedConnectionManager_=new InsertionMarkerManager$$module$build$src$core$insertion_marker_manager(this.draggingBlock_);this.workspace_=b;this.startXY_=this.draggingBlock_.getRelativeToSurfaceXY();this.dragIconData_=initIconData$$module$build$src$core$block_dragger(a)}dispose(){this.dragIconData_.length=0;this.draggedConnectionManager_&&this.draggedConnectionManager_.dispose()}startDrag(a,
@@ -829,9 +830,10 @@ a&&this.draggingBlock_.nextConnection&&this.draggingBlock_.nextConnection.target
829
830
  this.updateCursorDuringBlockDrag_();this.dragTarget_!==c&&(c&&c.onDragExit(this.draggingBlock_),this.dragTarget_&&this.dragTarget_.onDragEnter(this.draggingBlock_));this.dragTarget_&&this.dragTarget_.onDragOver(this.draggingBlock_)}endDrag(a,b){this.drag(a,b);this.dragIconData_=[];this.fireDragEndEvent_();stopTextWidthCache$$module$build$src$core$utils$dom();disconnectUiStop$$module$build$src$core$block_animations();a=null;this.dragTarget_&&this.dragTarget_.shouldPreventMove(this.draggingBlock_)?
830
831
  b=this.startXY_:(b=this.getNewLocationAfterDrag_(b),a=b.delta,b=b.newLocation);this.draggingBlock_.moveOffDragSurface(b);if(this.dragTarget_)this.dragTarget_.onDrop(this.draggingBlock_);this.maybeDeleteBlock_()||(this.draggingBlock_.setDragging(!1),a?this.updateBlockAfterMove_():bumpObjectIntoBounds$$module$build$src$core$bump_objects(this.draggingBlock_.workspace,this.workspace_.getMetricsManager().getScrollMetrics(!0),this.draggingBlock_));this.workspace_.setResizesEnabled(!0);setGroup$$module$build$src$core$events$utils(!1)}getNewLocationAfterDrag_(a){a=
831
832
  this.pixelsToWorkspaceUnits_(a);const b=Coordinate$$module$build$src$core$utils$coordinate.sum(this.startXY_,a);return{delta:a,newLocation:b}}maybeDeleteBlock_(){return this.wouldDeleteBlock_?(this.fireMoveEvent_(),this.draggingBlock_.dispose(!1,!0),draggingConnections$$module$build$src$core$common.length=0,!0):!1}updateBlockAfterMove_(){this.fireMoveEvent_();this.draggedConnectionManager_.wouldConnectBlock()?this.draggedConnectionManager_.applyConnections():this.draggingBlock_.queueRender();this.draggingBlock_.scheduleSnapAndBump()}fireDragEndEvent_(){const a=
832
- new (get$$module$build$src$core$events$utils(BLOCK_DRAG$$module$build$src$core$events$utils))(this.draggingBlock_,!1,this.draggingBlock_.getDescendants(!1));fire$$module$build$src$core$events$utils(a)}updateToolboxStyle_(a){const b=this.workspace_.getToolbox();if(b){const c=this.draggingBlock_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";a&&"function"===typeof b.removeStyle?b.removeStyle(c):a||"function"!==typeof b.addStyle||b.addStyle(c)}}fireMoveEvent_(){const a=new (get$$module$build$src$core$events$utils(MOVE$$module$build$src$core$events$utils))(this.draggingBlock_);
833
- a.oldCoordinate=this.startXY_;a.recordNew();fire$$module$build$src$core$events$utils(a)}updateCursorDuringBlockDrag_(){this.draggingBlock_.setDeleteStyle(this.wouldDeleteBlock_)}pixelsToWorkspaceUnits_(a){a=new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&&a.scale(1/this.workspace_.options.parentWorkspace.scale);return a}dragIcons_(a){for(let b=0;b<this.dragIconData_.length;b++){const c=this.dragIconData_[b];c.icon.setIconLocation(Coordinate$$module$build$src$core$utils$coordinate.sum(c.location,
834
- a))}}getInsertionMarkers(){return this.draggedConnectionManager_&&this.draggedConnectionManager_.getInsertionMarkers?this.draggedConnectionManager_.getInsertionMarkers():[]}};register$$module$build$src$core$registry(Type$$module$build$src$core$registry.BLOCK_DRAGGER,DEFAULT$$module$build$src$core$registry,BlockDragger$$module$build$src$core$block_dragger);var module$build$src$core$block_dragger={};module$build$src$core$block_dragger.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;var Comment$$module$build$src$core$comment=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.cachedText="";this.boundEvents=[];this.paragraphElement_=this.textarea_=this.foreignObject=null;this.model=a.commentModel;let b;this.model.text=null!=(b=this.model.text)?b:"";this.createIcon()}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
833
+ new (get$$module$build$src$core$events$utils(BLOCK_DRAG$$module$build$src$core$events$utils))(this.draggingBlock_,!1,this.draggingBlock_.getDescendants(!1));fire$$module$build$src$core$events$utils(a)}updateToolboxStyle_(a){const b=this.workspace_.getToolbox();if(b){const c=this.draggingBlock_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";a&&"function"===typeof b.removeStyle?b.removeStyle(c):a||"function"!==typeof b.addStyle||b.addStyle(c)}}fireMoveEvent_(){if(!this.draggingBlock_.isDeadOrDying()){var a=
834
+ new (get$$module$build$src$core$events$utils(MOVE$$module$build$src$core$events$utils))(this.draggingBlock_);a.oldCoordinate=this.startXY_;a.recordNew();fire$$module$build$src$core$events$utils(a)}}updateCursorDuringBlockDrag_(){this.draggingBlock_.setDeleteStyle(this.wouldDeleteBlock_)}pixelsToWorkspaceUnits_(a){a=new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&&a.scale(1/this.workspace_.options.parentWorkspace.scale);
835
+ return a}dragIcons_(a){for(let b=0;b<this.dragIconData_.length;b++){const c=this.dragIconData_[b];c.icon.setIconLocation(Coordinate$$module$build$src$core$utils$coordinate.sum(c.location,a))}}getInsertionMarkers(){return this.draggedConnectionManager_&&this.draggedConnectionManager_.getInsertionMarkers?this.draggedConnectionManager_.getInsertionMarkers():[]}};register$$module$build$src$core$registry(Type$$module$build$src$core$registry.BLOCK_DRAGGER,DEFAULT$$module$build$src$core$registry,BlockDragger$$module$build$src$core$block_dragger);
836
+ var module$build$src$core$block_dragger={};module$build$src$core$block_dragger.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;var Comment$$module$build$src$core$comment=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.cachedText="";this.boundEvents=[];this.paragraphElement_=this.textarea_=this.foreignObject=null;this.model=a.commentModel;let b;this.model.text=null!=(b=this.model.text)?b:"";this.createIcon()}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
835
837
  {"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)}createEditor(){this.foreignObject=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.FOREIGNOBJECT,
836
838
  {x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});const a=document.createElementNS(HTML_NS$$module$build$src$core$utils$dom,"body");a.setAttribute("xmlns",HTML_NS$$module$build$src$core$utils$dom);a.className="blocklyMinimalBody";const b=this.textarea_=document.createElementNS(HTML_NS$$module$build$src$core$utils$dom,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.getBlock().RTL?"RTL":"LTR");let c;b.value=null!=(c=
837
839
  this.model.text)?c:"";this.resizeTextarea();a.appendChild(b);this.foreignObject.appendChild(a);this.boundEvents.push(conditionalBind$$module$build$src$core$browser_events(b,"focus",this,this.startEdit,!0));this.boundEvents.push(conditionalBind$$module$build$src$core$browser_events(b,"wheel",this,function(d){d.stopPropagation()}));this.boundEvents.push(conditionalBind$$module$build$src$core$browser_events(b,"change",this,function(d){this.cachedText!==this.model.text&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(this.getBlock(),
@@ -1651,7 +1653,7 @@ module$build$src$core$utils.aria=module$build$src$core$utils$aria;module$build$s
1651
1653
  module$build$src$core$utils.deprecation=module$build$src$core$utils$deprecation;module$build$src$core$utils.dom=module$build$src$core$utils$dom;module$build$src$core$utils.extensions=$.module$build$src$core$extensions;module$build$src$core$utils.getBlockTypeCounts=getBlockTypeCounts$$module$build$src$core$utils;module$build$src$core$utils.getDocumentScroll=getDocumentScroll$$module$build$src$core$utils;module$build$src$core$utils.getInjectionDivXY_=getInjectionDivXY$$module$build$src$core$utils;
1652
1654
  module$build$src$core$utils.getRelativeXY=getRelativeXY$$module$build$src$core$utils;module$build$src$core$utils.getViewportBBox=getViewportBBox$$module$build$src$core$utils;module$build$src$core$utils.idGenerator=module$build$src$core$utils$idgenerator;module$build$src$core$utils.is3dSupported=is3dSupported$$module$build$src$core$utils;module$build$src$core$utils.math=module$build$src$core$utils$math;module$build$src$core$utils.object=module$build$src$core$utils$object;
1653
1655
  module$build$src$core$utils.parseBlockColour=parseBlockColour$$module$build$src$core$utils;module$build$src$core$utils.parsing=module$build$src$core$utils$parsing;module$build$src$core$utils.replaceMessageReferences=replaceMessageReferences$$module$build$src$core$utils;module$build$src$core$utils.runAfterPageLoad=runAfterPageLoad$$module$build$src$core$utils;module$build$src$core$utils.screenToWsCoordinates=screenToWsCoordinates$$module$build$src$core$utils;module$build$src$core$utils.string=$.module$build$src$core$utils$string;
1654
- module$build$src$core$utils.style=module$build$src$core$utils$style;module$build$src$core$utils.svgMath=module$build$src$core$utils$svg_math;module$build$src$core$utils.svgPaths=module$build$src$core$utils$svg_paths;module$build$src$core$utils.tokenizeInterpolation=tokenizeInterpolation$$module$build$src$core$utils;module$build$src$core$utils.toolbox=module$build$src$core$utils$toolbox;module$build$src$core$utils.userAgent=module$build$src$core$utils$useragent;module$build$src$core$utils.xml=$.module$build$src$core$utils$xml;var VERSION$$module$build$src$core$blockly="9.3.1",ALIGN_LEFT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.LEFT,ALIGN_CENTRE$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.CENTRE,ALIGN_RIGHT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.RIGHT,INPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE,
1656
+ module$build$src$core$utils.style=module$build$src$core$utils$style;module$build$src$core$utils.svgMath=module$build$src$core$utils$svg_math;module$build$src$core$utils.svgPaths=module$build$src$core$utils$svg_paths;module$build$src$core$utils.tokenizeInterpolation=tokenizeInterpolation$$module$build$src$core$utils;module$build$src$core$utils.toolbox=module$build$src$core$utils$toolbox;module$build$src$core$utils.userAgent=module$build$src$core$utils$useragent;module$build$src$core$utils.xml=$.module$build$src$core$utils$xml;var VERSION$$module$build$src$core$blockly="9.3.3",ALIGN_LEFT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.LEFT,ALIGN_CENTRE$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.CENTRE,ALIGN_RIGHT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.RIGHT,INPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE,
1655
1657
  NEXT_STATEMENT$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.NEXT_STATEMENT,PREVIOUS_STATEMENT$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.PREVIOUS_STATEMENT,DUMMY_INPUT$$module$build$src$core$blockly=inputTypes$$module$build$src$core$input_types.DUMMY,TOOLBOX_AT_TOP$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.TOP,TOOLBOX_AT_BOTTOM$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.BOTTOM,
1656
1658
  TOOLBOX_AT_LEFT$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.LEFT,TOOLBOX_AT_RIGHT$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.RIGHT,svgResize$$module$build$src$core$blockly=svgResize$$module$build$src$core$common,getMainWorkspace$$module$build$src$core$blockly=getMainWorkspace$$module$build$src$core$common,getSelected$$module$build$src$core$blockly=getSelected$$module$build$src$core$common,defineBlocksWithJsonArray$$module$build$src$core$blockly=
1657
1659
  defineBlocksWithJsonArray$$module$build$src$core$common,setParentContainer$$module$build$src$core$blockly=setParentContainer$$module$build$src$core$common,resizeSvgContents$$module$build$src$core$blockly=resizeSvgContentsLocal$$module$build$src$core$blockly,COLLAPSE_CHARS$$module$build$src$core$blockly=COLLAPSE_CHARS$$module$build$src$core$internal_constants,DRAG_STACK$$module$build$src$core$blockly=DRAG_STACK$$module$build$src$core$internal_constants,OPPOSITE_TYPE$$module$build$src$core$blockly=
@@ -50,17 +50,17 @@ removeElem$$module$build$src$core$utils$array,disposeUiEffect$$module$build$src$
50
50
  bumpIntoBoundsHandler$$module$build$src$core$bump_objects,extractObjectFromEvent$$module$build$src$core$bump_objects,bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects,initIconData$$module$build$src$core$block_dragger,copy$$module$build$src$core$clipboard,copyInternal$$module$build$src$core$clipboard,paste$$module$build$src$core$clipboard,duplicate$$module$build$src$core$clipboard,duplicateInternal$$module$build$src$core$clipboard,getCurrentBlock$$module$build$src$core$contextmenu,setCurrentBlock$$module$build$src$core$contextmenu,
51
51
  show$$module$build$src$core$contextmenu,populate_$$module$build$src$core$contextmenu,position_$$module$build$src$core$contextmenu,createWidget_$$module$build$src$core$contextmenu,haltPropagation$$module$build$src$core$contextmenu,hide$$module$build$src$core$contextmenu,dispose$$module$build$src$core$contextmenu,callbackFactory$$module$build$src$core$contextmenu,commentDeleteOption$$module$build$src$core$contextmenu,commentDuplicateOption$$module$build$src$core$contextmenu,workspaceCommentOption$$module$build$src$core$contextmenu,
52
52
  getParentConnection$$module$build$src$core$keyboard_nav$ast_node,point$$module$build$src$core$utils$svg_paths,curve$$module$build$src$core$utils$svg_paths,moveTo$$module$build$src$core$utils$svg_paths,moveBy$$module$build$src$core$utils$svg_paths,lineTo$$module$build$src$core$utils$svg_paths,line$$module$build$src$core$utils$svg_paths,lineOnAxis$$module$build$src$core$utils$svg_paths,arc$$module$build$src$core$utils$svg_paths,queueRender$$module$build$src$core$render_management,queueBlock$$module$build$src$core$render_management,
53
- doRenders$$module$build$src$core$render_management,renderBlock$$module$build$src$core$render_management,updateConnectionLocations$$module$build$src$core$render_management,registerUndo$$module$build$src$core$contextmenu_items,registerRedo$$module$build$src$core$contextmenu_items,registerCleanup$$module$build$src$core$contextmenu_items,toggleOption_$$module$build$src$core$contextmenu_items,registerCollapse$$module$build$src$core$contextmenu_items,registerExpand$$module$build$src$core$contextmenu_items,
54
- addDeletableBlocks_$$module$build$src$core$contextmenu_items,getDeletableBlocks_$$module$build$src$core$contextmenu_items,deleteNext_$$module$build$src$core$contextmenu_items,registerDeleteAll$$module$build$src$core$contextmenu_items,registerWorkspaceOptions_$$module$build$src$core$contextmenu_items,registerDuplicate$$module$build$src$core$contextmenu_items,registerComment$$module$build$src$core$contextmenu_items,registerInline$$module$build$src$core$contextmenu_items,registerCollapseExpandBlock$$module$build$src$core$contextmenu_items,
55
- registerDisable$$module$build$src$core$contextmenu_items,registerDelete$$module$build$src$core$contextmenu_items,registerHelp$$module$build$src$core$contextmenu_items,registerBlockOptions_$$module$build$src$core$contextmenu_items,registerDefaultOptions$$module$build$src$core$contextmenu_items,isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block,isObservable$$module$build$src$core$interfaces$i_observable,allProcedures$$module$build$src$core$procedures,procTupleComparator$$module$build$src$core$procedures,
56
- findLegalName$$module$build$src$core$procedures,isLegalName$$module$build$src$core$procedures,isNameUsed$$module$build$src$core$procedures,rename$$module$build$src$core$procedures,flyoutCategory$$module$build$src$core$procedures,updateMutatorFlyout$$module$build$src$core$procedures,mutatorOpenListener$$module$build$src$core$procedures,mutatorChangeListener$$module$build$src$core$procedures,getCallers$$module$build$src$core$procedures,blockIsModernCallerFor$$module$build$src$core$procedures,mutateCallers$$module$build$src$core$procedures,
57
- getDefinition$$module$build$src$core$procedures,isDynamicShape$$module$build$src$core$renderers$common$constants,isDebuggerEnabled$$module$build$src$core$renderers$common$debug,startDebugger$$module$build$src$core$renderers$common$debug,stopDebugger$$module$build$src$core$renderers$common$debug,register$$module$build$src$core$renderers$common$block_rendering,unregister$$module$build$src$core$renderers$common$block_rendering,stopDebugger$$module$build$src$core$renderers$common$block_rendering,init$$module$build$src$core$renderers$common$block_rendering,
58
- stringButtonClickHandler$$module$build$src$core$variables_dynamic,numberButtonClickHandler$$module$build$src$core$variables_dynamic,colourButtonClickHandler$$module$build$src$core$variables_dynamic,flyoutCategory$$module$build$src$core$variables_dynamic,flyoutCategoryBlocks$$module$build$src$core$variables_dynamic,getStartPositionRect$$module$build$src$core$positionable_helpers,getCornerOppositeToolbox$$module$build$src$core$positionable_helpers,bumpPositionRect$$module$build$src$core$positionable_helpers,
59
- resizeSvgContents$$module$build$src$core$workspace_svg,inject$$module$build$src$core$inject,createDom$$module$build$src$core$inject,createMainWorkspace$$module$build$src$core$inject,init$$module$build$src$core$inject,onKeyDown$$module$build$src$core$inject,bindDocumentEvents$$module$build$src$core$inject,loadSounds$$module$build$src$core$inject,saveProcedure$$module$build$src$core$serialization$procedures,saveParameter$$module$build$src$core$serialization$procedures,loadProcedure$$module$build$src$core$serialization$procedures,
60
- loadParameter$$module$build$src$core$serialization$procedures,save$$module$build$src$core$serialization$workspaces,load$$module$build$src$core$serialization$workspaces,registerEscape$$module$build$src$core$shortcut_items,registerDelete$$module$build$src$core$shortcut_items,registerCopy$$module$build$src$core$shortcut_items,registerCut$$module$build$src$core$shortcut_items,registerPaste$$module$build$src$core$shortcut_items,registerUndo$$module$build$src$core$shortcut_items,registerRedo$$module$build$src$core$shortcut_items,
61
- registerDefaultShortcuts$$module$build$src$core$shortcut_items,isSelectableToolboxItem$$module$build$src$core$interfaces$i_selectable_toolbox_item,getRelativeXY$$module$build$src$core$utils,getInjectionDivXY$$module$build$src$core$utils,tokenizeInterpolation$$module$build$src$core$utils,replaceMessageReferences$$module$build$src$core$utils,checkMessageReferences$$module$build$src$core$utils,is3dSupported$$module$build$src$core$utils,getViewportBBox$$module$build$src$core$utils,arrayRemove$$module$build$src$core$utils,
62
- getDocumentScroll$$module$build$src$core$utils,getBlockTypeCounts$$module$build$src$core$utils,screenToWsCoordinates$$module$build$src$core$utils,parseBlockColour$$module$build$src$core$utils,runAfterPageLoad$$module$build$src$core$utils,hideChaff$$module$build$src$core$blockly,resizeSvgContentsLocal$$module$build$src$core$blockly,copy$$module$build$src$core$blockly,paste$$module$build$src$core$blockly,duplicate$$module$build$src$core$blockly,isNumber$$module$build$src$core$blockly,hueToHex$$module$build$src$core$blockly,
63
- bindEvent_$$module$build$src$core$blockly,unbindEvent_$$module$build$src$core$blockly,bindEventWithChecks_$$module$build$src$core$blockly,$jscomp;warn$$module$build$src$core$utils$deprecation=function(a,b,c,d){a=a+" was deprecated in "+b+" and will be deleted in "+c+".";d&&(a+="\nUse "+d+" instead.");console.warn(a)};
53
+ doRenders$$module$build$src$core$render_management,renderBlock$$module$build$src$core$render_management,updateConnectionLocations$$module$build$src$core$render_management,updateIconLocations$$module$build$src$core$render_management,registerUndo$$module$build$src$core$contextmenu_items,registerRedo$$module$build$src$core$contextmenu_items,registerCleanup$$module$build$src$core$contextmenu_items,toggleOption_$$module$build$src$core$contextmenu_items,registerCollapse$$module$build$src$core$contextmenu_items,
54
+ registerExpand$$module$build$src$core$contextmenu_items,addDeletableBlocks_$$module$build$src$core$contextmenu_items,getDeletableBlocks_$$module$build$src$core$contextmenu_items,deleteNext_$$module$build$src$core$contextmenu_items,registerDeleteAll$$module$build$src$core$contextmenu_items,registerWorkspaceOptions_$$module$build$src$core$contextmenu_items,registerDuplicate$$module$build$src$core$contextmenu_items,registerComment$$module$build$src$core$contextmenu_items,registerInline$$module$build$src$core$contextmenu_items,
55
+ registerCollapseExpandBlock$$module$build$src$core$contextmenu_items,registerDisable$$module$build$src$core$contextmenu_items,registerDelete$$module$build$src$core$contextmenu_items,registerHelp$$module$build$src$core$contextmenu_items,registerBlockOptions_$$module$build$src$core$contextmenu_items,registerDefaultOptions$$module$build$src$core$contextmenu_items,isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block,isObservable$$module$build$src$core$interfaces$i_observable,allProcedures$$module$build$src$core$procedures,
56
+ procTupleComparator$$module$build$src$core$procedures,findLegalName$$module$build$src$core$procedures,isLegalName$$module$build$src$core$procedures,isNameUsed$$module$build$src$core$procedures,rename$$module$build$src$core$procedures,flyoutCategory$$module$build$src$core$procedures,updateMutatorFlyout$$module$build$src$core$procedures,mutatorOpenListener$$module$build$src$core$procedures,mutatorChangeListener$$module$build$src$core$procedures,getCallers$$module$build$src$core$procedures,blockIsModernCallerFor$$module$build$src$core$procedures,
57
+ mutateCallers$$module$build$src$core$procedures,getDefinition$$module$build$src$core$procedures,isDynamicShape$$module$build$src$core$renderers$common$constants,isDebuggerEnabled$$module$build$src$core$renderers$common$debug,startDebugger$$module$build$src$core$renderers$common$debug,stopDebugger$$module$build$src$core$renderers$common$debug,register$$module$build$src$core$renderers$common$block_rendering,unregister$$module$build$src$core$renderers$common$block_rendering,stopDebugger$$module$build$src$core$renderers$common$block_rendering,
58
+ init$$module$build$src$core$renderers$common$block_rendering,stringButtonClickHandler$$module$build$src$core$variables_dynamic,numberButtonClickHandler$$module$build$src$core$variables_dynamic,colourButtonClickHandler$$module$build$src$core$variables_dynamic,flyoutCategory$$module$build$src$core$variables_dynamic,flyoutCategoryBlocks$$module$build$src$core$variables_dynamic,getStartPositionRect$$module$build$src$core$positionable_helpers,getCornerOppositeToolbox$$module$build$src$core$positionable_helpers,
59
+ bumpPositionRect$$module$build$src$core$positionable_helpers,resizeSvgContents$$module$build$src$core$workspace_svg,inject$$module$build$src$core$inject,createDom$$module$build$src$core$inject,createMainWorkspace$$module$build$src$core$inject,init$$module$build$src$core$inject,onKeyDown$$module$build$src$core$inject,bindDocumentEvents$$module$build$src$core$inject,loadSounds$$module$build$src$core$inject,saveProcedure$$module$build$src$core$serialization$procedures,saveParameter$$module$build$src$core$serialization$procedures,
60
+ loadProcedure$$module$build$src$core$serialization$procedures,loadParameter$$module$build$src$core$serialization$procedures,save$$module$build$src$core$serialization$workspaces,load$$module$build$src$core$serialization$workspaces,registerEscape$$module$build$src$core$shortcut_items,registerDelete$$module$build$src$core$shortcut_items,registerCopy$$module$build$src$core$shortcut_items,registerCut$$module$build$src$core$shortcut_items,registerPaste$$module$build$src$core$shortcut_items,registerUndo$$module$build$src$core$shortcut_items,
61
+ registerRedo$$module$build$src$core$shortcut_items,registerDefaultShortcuts$$module$build$src$core$shortcut_items,isSelectableToolboxItem$$module$build$src$core$interfaces$i_selectable_toolbox_item,getRelativeXY$$module$build$src$core$utils,getInjectionDivXY$$module$build$src$core$utils,tokenizeInterpolation$$module$build$src$core$utils,replaceMessageReferences$$module$build$src$core$utils,checkMessageReferences$$module$build$src$core$utils,is3dSupported$$module$build$src$core$utils,getViewportBBox$$module$build$src$core$utils,
62
+ arrayRemove$$module$build$src$core$utils,getDocumentScroll$$module$build$src$core$utils,getBlockTypeCounts$$module$build$src$core$utils,screenToWsCoordinates$$module$build$src$core$utils,parseBlockColour$$module$build$src$core$utils,runAfterPageLoad$$module$build$src$core$utils,hideChaff$$module$build$src$core$blockly,resizeSvgContentsLocal$$module$build$src$core$blockly,copy$$module$build$src$core$blockly,paste$$module$build$src$core$blockly,duplicate$$module$build$src$core$blockly,isNumber$$module$build$src$core$blockly,
63
+ hueToHex$$module$build$src$core$blockly,bindEvent_$$module$build$src$core$blockly,unbindEvent_$$module$build$src$core$blockly,bindEventWithChecks_$$module$build$src$core$blockly,$jscomp;warn$$module$build$src$core$utils$deprecation=function(a,b,c,d){a=a+" was deprecated in "+b+" and will be deleted in "+c+".";d&&(a+="\nUse "+d+" instead.");console.warn(a)};
64
64
  register$$module$build$src$core$registry=function(a,b,c,d){if(!(a instanceof Type$$module$build$src$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$build$src$core$registry[a],
65
65
  g=nameMap$$module$build$src$core$registry[a];f||(f=typeMap$$module$build$src$core$registry[a]=Object.create(null),g=nameMap$$module$build$src$core$registry[a]=Object.create(null));validate$$module$build$src$core$registry(a,c);if(!d&&f[e])throw Error('Name "'+e+'" with type "'+a+'" already registered.');f[e]=c;g[e]=b};
66
66
  validate$$module$build$src$core$registry=function(a,b){switch(a){case String(Type$$module$build$src$core$registry.FIELD):if("function"!==typeof b.fromJson)throw Error('Type "'+a+'" must have a fromJson function');}};
@@ -335,9 +335,10 @@ e=new Coordinate$$module$build$src$core$utils$coordinate(b.clientX-e.left,b.clie
335
335
  point$$module$build$src$core$utils$svg_paths=function(a,b){return" "+a+","+b+" "};curve$$module$build$src$core$utils$svg_paths=function(a,b){return" "+a+b.join("")};moveTo$$module$build$src$core$utils$svg_paths=function(a,b){return" M "+a+","+b+" "};moveBy$$module$build$src$core$utils$svg_paths=function(a,b){return" m "+a+","+b+" "};lineTo$$module$build$src$core$utils$svg_paths=function(a,b){return" l "+a+","+b+" "};line$$module$build$src$core$utils$svg_paths=function(a){return" l"+a.join("")};
336
336
  lineOnAxis$$module$build$src$core$utils$svg_paths=function(a,b){return" "+a+" "+b+" "};arc$$module$build$src$core$utils$svg_paths=function(a,b,c,d){return a+" "+c+" "+c+" "+b+d};queueRender$$module$build$src$core$render_management=function(a){queueBlock$$module$build$src$core$render_management(a);pid$$module$build$src$core$render_management||(pid$$module$build$src$core$render_management=window.requestAnimationFrame(doRenders$$module$build$src$core$render_management))};
337
337
  queueBlock$$module$build$src$core$render_management=function(a){dirtyBlocks$$module$build$src$core$render_management.add(a);const b=a.getParent();b?queueBlock$$module$build$src$core$render_management(b):rootBlocks$$module$build$src$core$render_management.add(a)};
338
- doRenders$$module$build$src$core$render_management=function(){const a=new Set([...rootBlocks$$module$build$src$core$render_management].map(b=>b.workspace));for(const b of rootBlocks$$module$build$src$core$render_management)b.isDisposed()||b.getParent()||(renderBlock$$module$build$src$core$render_management(b),updateConnectionLocations$$module$build$src$core$render_management(b,b.getRelativeToSurfaceXY()));for(const b of a)b.resizeContents();rootBlocks$$module$build$src$core$render_management.clear();
339
- dirtyBlocks$$module$build$src$core$render_management=new Set;pid$$module$build$src$core$render_management=0};renderBlock$$module$build$src$core$render_management=function(a){if(dirtyBlocks$$module$build$src$core$render_management.has(a)){for(const b of a.getChildren(!1))renderBlock$$module$build$src$core$render_management(b);a.renderEfficiently()}};
338
+ doRenders$$module$build$src$core$render_management=function(){const a=new Set([...rootBlocks$$module$build$src$core$render_management].map(b=>b.workspace));for(const b of rootBlocks$$module$build$src$core$render_management)b.isDisposed()||b.getParent()||(renderBlock$$module$build$src$core$render_management(b),updateConnectionLocations$$module$build$src$core$render_management(b,b.getRelativeToSurfaceXY()),updateIconLocations$$module$build$src$core$render_management(b));for(const b of a)b.resizeContents();
339
+ rootBlocks$$module$build$src$core$render_management.clear();dirtyBlocks$$module$build$src$core$render_management=new Set;pid$$module$build$src$core$render_management=0};renderBlock$$module$build$src$core$render_management=function(a){if(dirtyBlocks$$module$build$src$core$render_management.has(a)){for(const b of a.getChildren(!1))renderBlock$$module$build$src$core$render_management(b);a.renderEfficiently()}};
340
340
  updateConnectionLocations$$module$build$src$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$build$src$core$render_management.has(d))&&updateConnectionLocations$$module$build$src$core$render_management(d,Coordinate$$module$build$src$core$utils$coordinate.sum(b,d.relativeCoords))}};
341
+ updateIconLocations$$module$build$src$core$render_management=function(a){if(a.getIcons){for(const b of a.getIcons())b.computeIconLocation();for(const b of a.getChildren(!1))updateIconLocations$$module$build$src$core$render_management(b)}};
341
342
  registerUndo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.UNDO},preconditionFn(a){return 0<a.workspace.getUndoStack().length?"enabled":"disabled"},callback(a){a.workspace.undo(!1)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"undoWorkspace",weight:1})};
342
343
  registerRedo$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.REDO},preconditionFn(a){return 0<a.workspace.getRedoStack().length?"enabled":"disabled"},callback(a){a.workspace.undo(!0)},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"redoWorkspace",weight:2})};
343
344
  registerCleanup$$module$build$src$core$contextmenu_items=function(){ContextMenuRegistry$$module$build$src$core$contextmenu_registry.registry.register({displayText(){return Msg$$module$build$src$core$msg.CLEAN_UP},preconditionFn(a){return a.workspace.isMovable()?1<a.workspace.getTopBlocks(!1).length?"enabled":"disabled":"hidden"},callback(a){a.workspace.cleanUp()},scopeType:ContextMenuRegistry$$module$build$src$core$contextmenu_registry.ScopeType.WORKSPACE,id:"cleanWorkspace",weight:3})};
@@ -743,10 +744,10 @@ this.bubble_.registerMoveEvent(this.onBubbleMove.bind(this));var d=c.options.lan
743
744
  ()=>{const h=this.getBlock();h.saveConnections&&h.saveConnections(g)};b.workspace.addChangeListener(this.sourceListener)}this.resizeBubble();d=this.workspaceChanged.bind(this);c.addChangeListener(d);e&&e.getWorkspace().addChangeListener(d);this.updateWorkspace();this.applyColour()}else this.svgDialog=null,this.workspace_.dispose(),this.rootBlock=this.workspace_=null,null==(c=this.bubble_)||c.dispose(),this.bubble_=null,this.workspaceHeight=this.workspaceWidth=0,this.sourceListener&&(b.workspace.removeChangeListener(this.sourceListener),
744
745
  this.sourceListener=null);fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(BUBBLE_OPEN$$module$build$src$core$events$utils))(b,a,"mutator"))}}workspaceChanged(a){this.shouldIgnoreMutatorEvent_(a)||this.updateWorkspacePid||(this.updateWorkspacePid=setTimeout(()=>{this.updateWorkspacePid=null;this.updateWorkspace()},0))}shouldIgnoreMutatorEvent_(a){return a.isUiEvent||a.type===CREATE$$module$build$src$core$events$utils||a.type===CHANGE$$module$build$src$core$events$utils&&
745
746
  "disabled"===a.element}updateWorkspace(){if(!this.workspace_.isDragging()){var a=this.workspace_.getTopBlocks(!1);for(let d=0,e;e=a[d];d++){var b=e.getRelativeToSurfaceXY();20>b.y&&e.moveBy(0,20-b.y);if(e.RTL){var c=-20;const f=this.workspace_.getFlyout();f&&(c-=f.getWidth());b.x>c&&e.moveBy(c-b.x,0)}else 20>b.x&&e.moveBy(20-b.x,0)}}if(this.rootBlock&&this.rootBlock.workspace===this.workspace_){(a=getGroup$$module$build$src$core$events$utils())||setGroup$$module$build$src$core$events$utils(!0);const d=
746
- this.getBlock();b=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);c=d.rendered;d.rendered=!1;d.compose(this.rootBlock);d.rendered=c;d.initSvg();d.rendered&&d.render();c=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);if(b!==c){fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(d,"mutation",null,b,c));const e=getGroup$$module$build$src$core$events$utils();
747
- setTimeout(function(){const f=getGroup$$module$build$src$core$events$utils();setGroup$$module$build$src$core$events$utils(e);d.bumpNeighbours();setGroup$$module$build$src$core$events$utils(f)},$.config$$module$build$src$core$config.bumpDelay)}this.workspace_.isDragging()||setTimeout(()=>this.resizeBubble(),0);setGroup$$module$build$src$core$events$utils(a)}}dispose(){this.getBlock().mutator=null;super.dispose()}updateBlockStyle(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){const b=a.getAllBlocks(!1);
748
- for(let c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout()){a=a.getWorkspace().getAllBlocks(!1);for(let c=0,d;d=a[c];c++)d.setStyle(d.getStyleName())}}}static reconnect(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;const d=a.targetBlock();return d&&d!==b||!c||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)}static findParentWs(a){let b=null;if(a&&a.options){const c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):
749
- c&&(b=c)}return b}};module$build$src$core$mutator={};module$build$src$core$mutator.Mutator=$.Mutator$$module$build$src$core$mutator;var allExtensions$$module$build$src$core$extensions=Object.create(null),TEST_ONLY$$module$build$src$core$extensions={allExtensions:allExtensions$$module$build$src$core$extensions};$.register$$module$build$src$core$extensions("parent_tooltip_when_inline",extensionParentTooltip$$module$build$src$core$extensions);$.module$build$src$core$extensions={};$.module$build$src$core$extensions.TEST_ONLY=TEST_ONLY$$module$build$src$core$extensions;$.module$build$src$core$extensions.apply=apply$$module$build$src$core$extensions;
747
+ this.getBlock();b=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);d.compose(this.rootBlock);c=BlockChange$$module$build$src$core$events$events_block_change.getExtraBlockState_(d);if(b!==c){fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(d,"mutation",null,b,c));const e=getGroup$$module$build$src$core$events$utils();setTimeout(function(){const f=getGroup$$module$build$src$core$events$utils();
748
+ setGroup$$module$build$src$core$events$utils(e);d.bumpNeighbours();setGroup$$module$build$src$core$events$utils(f)},$.config$$module$build$src$core$config.bumpDelay)}this.workspace_.isDragging()||setTimeout(()=>this.resizeBubble(),0);setGroup$$module$build$src$core$events$utils(a)}}dispose(){this.getBlock().mutator=null;super.dispose()}updateBlockStyle(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){const b=a.getAllBlocks(!1);for(let c=0,d;d=b[c];c++)d.setStyle(d.getStyleName());if(a=a.getFlyout()){a=
749
+ a.getWorkspace().getAllBlocks(!1);for(let c=0,d;d=a[c];c++)d.setStyle(d.getStyleName())}}}static reconnect(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;const d=a.targetBlock();return d&&d!==b||!c||c.targetConnection===a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)}static findParentWs(a){let b=null;if(a&&a.options){const c=a.options.parentWorkspace;a.isFlyout?c&&c.options&&(b=c.options.parentWorkspace):c&&(b=c)}return b}};module$build$src$core$mutator={};
750
+ module$build$src$core$mutator.Mutator=$.Mutator$$module$build$src$core$mutator;var allExtensions$$module$build$src$core$extensions=Object.create(null),TEST_ONLY$$module$build$src$core$extensions={allExtensions:allExtensions$$module$build$src$core$extensions};$.register$$module$build$src$core$extensions("parent_tooltip_when_inline",extensionParentTooltip$$module$build$src$core$extensions);$.module$build$src$core$extensions={};$.module$build$src$core$extensions.TEST_ONLY=TEST_ONLY$$module$build$src$core$extensions;$.module$build$src$core$extensions.apply=apply$$module$build$src$core$extensions;
750
751
  $.module$build$src$core$extensions.buildTooltipForDropdown=$.buildTooltipForDropdown$$module$build$src$core$extensions;$.module$build$src$core$extensions.buildTooltipWithFieldText=$.buildTooltipWithFieldText$$module$build$src$core$extensions;$.module$build$src$core$extensions.isRegistered=isRegistered$$module$build$src$core$extensions;$.module$build$src$core$extensions.register=$.register$$module$build$src$core$extensions;$.module$build$src$core$extensions.registerMixin=registerMixin$$module$build$src$core$extensions;
751
752
  $.module$build$src$core$extensions.registerMutator=$.registerMutator$$module$build$src$core$extensions;$.module$build$src$core$extensions.runAfterPageLoad=runAfterPageLoad$$module$build$src$core$extensions;$.module$build$src$core$extensions.unregister=unregister$$module$build$src$core$extensions;var FieldLabel$$module$build$src$core$field_label=class extends Field$$module$build$src$core$field{constructor(a,b,c){super(Field$$module$build$src$core$field.SKIP_SETUP);this.class_=null;this.EDITABLE=!1;a!==Field$$module$build$src$core$field.SKIP_SETUP&&(c?this.configure_(c):this.class_=b||null,this.setValue(a))}configure_(a){super.configure_(a);a.class&&(this.class_=a.class)}initView(){this.createTextElement_();this.class_&&addClass$$module$build$src$core$utils$dom(this.getTextElement(),this.class_)}doClassValidation_(a){return null===
752
753
  a||void 0===a?null:`${a}`}setClass(a){this.textElement_&&(this.class_&&removeClass$$module$build$src$core$utils$dom(this.textElement_,this.class_),a&&addClass$$module$build$src$core$utils$dom(this.textElement_,a));this.class_=a}static fromJson(a){return new this(replaceMessageReferences$$module$build$src$core$utils$parsing(a.text),void 0,a)}};register$$module$build$src$core$field_registry("field_label",FieldLabel$$module$build$src$core$field_label);
@@ -807,19 +808,19 @@ null==(f=this.capabilityToComponentIds.get(e))||f.push(c)}else this.capabilityTo
807
808
  a+'" has not been added to the ComponentManager');if(this.hasCapability(a,b))console.warn('Plugin "'+a+'already has capability "'+b+'"');else{b=`${b}`.toLowerCase();var c;null==(c=this.componentData.get(a))||c.capabilities.push(b);var d;null==(d=this.capabilityToComponentIds.get(b))||d.push(a)}}removeCapability(a,b){if(!this.getComponent(a))throw Error('Cannot remove capability, "'+b+'". Plugin "'+a+'" has not been added to the ComponentManager');this.hasCapability(a,b)?(b=`${b}`.toLowerCase(),removeElem$$module$build$src$core$utils$array(this.componentData.get(a).capabilities,
808
809
  b),removeElem$$module$build$src$core$utils$array(this.capabilityToComponentIds.get(b),a)):console.warn('Plugin "'+a+"doesn't have capability \""+b+'" to remove')}hasCapability(a,b){b=`${b}`.toLowerCase();return this.componentData.has(a)&&-1!==this.componentData.get(a).capabilities.indexOf(b)}getComponent(a){let b;return null==(b=this.componentData.get(a))?void 0:b.component}getComponents(a,b){a=`${a}`.toLowerCase();a=this.capabilityToComponentIds.get(a);if(!a)return[];const c=[];if(b){const d=[];
809
810
  a.forEach(e=>{d.push(this.componentData.get(e))});d.sort(function(e,f){return e.weight-f.weight});d.forEach(function(e){c.push(e.component)})}else a.forEach(d=>{c.push(this.componentData.get(d).component)});return c}};ComponentManager$$module$build$src$core$component_manager.Capability=Capability$$module$build$src$core$component_manager;var module$build$src$core$component_manager={};module$build$src$core$component_manager.ComponentManager=ComponentManager$$module$build$src$core$component_manager;var DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager="The insertion marker manager tried to create a marker but the result is missing %1. If you are using a mutator, make sure your domToMutation method is properly defined.",InsertionMarkerManager$$module$build$src$core$insertion_marker_manager=class{constructor(a){this.activeCandidate=this.lastMarker=this.lastOnStack=null;this.wouldDeleteBlock=!1;this.fadedBlock=this.highlightedBlock=this.markerConnection=null;setSelected$$module$build$src$core$common(a);
810
- this.topBlock=a;this.workspace=a.workspace;this.firstMarker=this.createMarkerBlock(this.topBlock);this.availableConnections=this.initAvailableConnections();this.lastOnStack&&(this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock()))}dispose(){this.availableConnections.length=0;this.disposeInsertionMarker(this.firstMarker);this.disposeInsertionMarker(this.lastMarker)}updateAvailableConnections(){this.availableConnections=this.initAvailableConnections()}wouldConnectBlock(){return!!this.activeCandidate}applyConnections(){if(this.activeCandidate){var {local:a,
811
- closest:b}=this.activeCandidate;a.connect(b);disable$$module$build$src$core$events$utils();this.hidePreview();enable$$module$build$src$core$events$utils();if(this.topBlock.rendered){const c=a.isSuperior()?b:a;connectionUiEffect$$module$build$src$core$block_animations(c.getSourceBlock());const d=this.topBlock.getRootBlock();requestAnimationFrame(()=>{setTimeout(()=>{d.bringToFront()},0)})}}}update(a,b){const c=this.getCandidate(a);if((this.wouldDeleteBlock=this.shouldDelete(!!c,b))||this.shouldUpdatePreviews(c,
812
- a))disable$$module$build$src$core$events$utils(),this.maybeHidePreview(c),this.maybeShowPreview(c),enable$$module$build$src$core$events$utils()}createMarkerBlock(a){var b=a.type;disable$$module$build$src$core$events$utils();let c;try{c=this.workspace.newBlock(b);c.setInsertionMarker(!0);if(a.saveExtraState){var d=a.saveExtraState();d&&c.loadExtraState&&c.loadExtraState(d)}else if(a.mutationToDom){const e=a.mutationToDom();e&&c.domToMutation&&c.domToMutation(e)}for(b=0;b<a.inputList.length;b++){const e=
813
- a.inputList[b];if(e.name===COLLAPSED_INPUT_NAME$$module$build$src$core$constants)continue;const f=c.inputList[b];if(!f)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","an input"));for(d=0;d<e.fieldRow.length;d++){const g=e.fieldRow[d],h=f.fieldRow[d];if(!h)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","a field"));h.setValue(g.getValue())}}c.setCollapsed(a.isCollapsed());c.setInputsInline(a.getInputsInline());
814
- c.initSvg();c.getSvgRoot().setAttribute("visibility","hidden")}finally{enable$$module$build$src$core$events$utils()}return c}initAvailableConnections(){const a=this.topBlock.getConnections_(!1),b=this.topBlock.lastConnectionInStack(!0);b&&b!==this.topBlock.nextConnection&&(a.push(b),this.lastOnStack=b);return a}shouldUpdatePreviews(a,b){if(!a)return!!this.activeCandidate;if(!this.activeCandidate)return!0;const {local:c,closest:d}=this.activeCandidate;if(d===a.closest&&c===a.local)return!1;const e=
815
- c.x+b.x-d.x;b=c.y+b.y-d.y;return a.radius<Math.sqrt(e*e+b*b)-$.config$$module$build$src$core$config.currentConnectionPreference}getCandidate(a){this.markerConnection&&this.markerConnection.isConnected()||this.updateAvailableConnections();let b=this.getStartRadius(),c=null;for(let d=0;d<this.availableConnections.length;d++){const e=this.availableConnections[d],f=e.closest(b,a);f.connection&&(c={closest:f.connection,local:e,radius:f.radius},b=f.radius)}return c}getStartRadius(){return this.activeCandidate?
816
- $.config$$module$build$src$core$config.connectingSnapRadius:$.config$$module$build$src$core$config.snapRadius}shouldDelete(a,b){return b&&this.workspace.getComponentManager().hasCapability(b.id,ComponentManager$$module$build$src$core$component_manager.Capability.DELETE_AREA)?b.wouldDelete(this.topBlock,a):!1}maybeShowPreview(a){if(!this.wouldDeleteBlock&&a){var b=a.closest,c;b===(null==(c=this.activeCandidate)?void 0:c.closest)||b.getSourceBlock().isInsertionMarker()?console.log("Trying to connect to an insertion marker"):
817
- (this.activeCandidate=a,this.showPreview(this.activeCandidate))}}showPreview(a){const b=this.workspace.getRenderer();switch(b.getConnectionPreviewMethod(a.closest,a.local,this.topBlock)){case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INPUT_OUTLINE:this.showInsertionInputOutline(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INSERTION_MARKER:this.showInsertionMarker(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.REPLACEMENT_FADE:this.showReplacementFade(a)}b.shouldHighlightConnection(a.closest)&&
818
- a.closest.highlight()}maybeHidePreview(a){if(!a)this.hidePreview();else if(this.activeCandidate){const b=this.activeCandidate.local!==a.local;(this.activeCandidate.closest!==a.closest||b||this.wouldDeleteBlock)&&this.hidePreview()}this.activeCandidate=this.markerConnection=null}hidePreview(){let a;const b=null==(a=this.activeCandidate)?void 0:a.closest;b&&b.targetBlock()&&this.workspace.getRenderer().shouldHighlightConnection(b)&&b.unhighlight();this.hideReplacementFade();this.hideInsertionInputOutline();
819
- this.hideInsertionMarker()}showInsertionMarker(a){const {local:b,closest:c}=a;let d=(a=this.lastOnStack&&b===this.lastOnStack)?this.lastMarker:this.firstMarker;if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");let e;try{e=d.getMatchingConnection(b.getSourceBlock(),b)}catch(f){a&&this.lastOnStack?(this.disposeInsertionMarker(this.lastMarker),d=this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock())):(this.disposeInsertionMarker(this.firstMarker),
820
- d=this.firstMarker=this.createMarkerBlock(this.topBlock));if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");e=d.getMatchingConnection(b.getSourceBlock(),b)}if(!e)throw Error("Cannot show the insertion marker because there is no associated connection");if(e===this.markerConnection)throw Error("Made it to showInsertionMarker_ even though the marker isn't changing");d.render();d.rendered=!0;d.getSvgRoot().setAttribute("visibility","visible");e&&c&&d.positionNearConnection(e,
821
- c);c&&e.connect(c);this.markerConnection=e}hideInsertionMarker(){if(this.markerConnection){var a=this.markerConnection,b=a.getSourceBlock(),c=b.outputConnection,d;if((null==(d=b.previousConnection)?0:d.targetConnection)||(null==c?0:c.targetConnection))b.unplug(!0);else{let e;null==(e=a.targetBlock())||e.unplug(!1)}if(a.targetConnection)throw Error("markerConnection still connected at the end of disconnectInsertionMarker");this.markerConnection=null;(a=b.getSvgRoot())&&a.setAttribute("visibility",
822
- "hidden")}}showInsertionInputOutline(a){a=a.closest;this.highlightedBlock=a.getSourceBlock();this.highlightedBlock.highlightShapeForInput(a,!0)}hideInsertionInputOutline(){if(this.highlightedBlock){if(!this.activeCandidate)throw Error("Cannot hide the insertion marker outline because there is no active candidate");this.highlightedBlock.highlightShapeForInput(this.activeCandidate.closest,!1);this.highlightedBlock=null}}showReplacementFade(a){this.fadedBlock=a.closest.targetBlock();if(!this.fadedBlock)throw Error("Cannot show the replacement fade because the closest connection does not have a target block");
811
+ this.topBlock=a;this.workspace=a.workspace;this.firstMarker=this.createMarkerBlock(this.topBlock);this.availableConnections=this.initAvailableConnections();this.lastOnStack&&(this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock()))}dispose(){this.availableConnections.length=0;this.disposeInsertionMarker(this.firstMarker);this.disposeInsertionMarker(this.lastMarker)}updateAvailableConnections(){this.availableConnections=this.initAvailableConnections()}wouldConnectBlock(){return!!this.activeCandidate}applyConnections(){if(this.activeCandidate){disable$$module$build$src$core$events$utils();
812
+ this.hidePreview();enable$$module$build$src$core$events$utils();var {local:a,closest:b}=this.activeCandidate;a.connect(b);if(this.topBlock.rendered){const c=a.isSuperior()?b:a,d=this.topBlock.getRootBlock();requestAnimationFrame(()=>{connectionUiEffect$$module$build$src$core$block_animations(c.getSourceBlock());setTimeout(()=>{d.bringToFront()},0)})}}}update(a,b){const c=this.getCandidate(a);if((this.wouldDeleteBlock=this.shouldDelete(!!c,b))||this.shouldUpdatePreviews(c,a))disable$$module$build$src$core$events$utils(),
813
+ this.maybeHidePreview(c),this.maybeShowPreview(c),enable$$module$build$src$core$events$utils()}createMarkerBlock(a){var b=a.type;disable$$module$build$src$core$events$utils();let c;try{c=this.workspace.newBlock(b);c.setInsertionMarker(!0);if(a.saveExtraState){var d=a.saveExtraState();d&&c.loadExtraState&&c.loadExtraState(d)}else if(a.mutationToDom){const e=a.mutationToDom();e&&c.domToMutation&&c.domToMutation(e)}for(b=0;b<a.inputList.length;b++){const e=a.inputList[b];if(e.name===COLLAPSED_INPUT_NAME$$module$build$src$core$constants)continue;
814
+ const f=c.inputList[b];if(!f)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","an input"));for(d=0;d<e.fieldRow.length;d++){const g=e.fieldRow[d],h=f.fieldRow[d];if(!h)throw Error(DUPLICATE_BLOCK_ERROR$$module$build$src$core$insertion_marker_manager.replace("%1","a field"));h.setValue(g.getValue())}}c.setCollapsed(a.isCollapsed());c.setInputsInline(a.getInputsInline());c.initSvg();c.getSvgRoot().setAttribute("visibility","hidden")}finally{enable$$module$build$src$core$events$utils()}return c}initAvailableConnections(){const a=
815
+ this.topBlock.getConnections_(!1),b=this.topBlock.lastConnectionInStack(!0);b&&b!==this.topBlock.nextConnection&&(a.push(b),this.lastOnStack=b);return a}shouldUpdatePreviews(a,b){if(!a)return!!this.activeCandidate;if(!this.activeCandidate)return!0;const {local:c,closest:d}=this.activeCandidate;if(d===a.closest&&c===a.local)return!1;const e=c.x+b.x-d.x;b=c.y+b.y-d.y;return a.radius<Math.sqrt(e*e+b*b)-$.config$$module$build$src$core$config.currentConnectionPreference}getCandidate(a){this.markerConnection&&
816
+ this.markerConnection.isConnected()||this.updateAvailableConnections();let b=this.getStartRadius(),c=null;for(let d=0;d<this.availableConnections.length;d++){const e=this.availableConnections[d],f=e.closest(b,a);f.connection&&(c={closest:f.connection,local:e,radius:f.radius},b=f.radius)}return c}getStartRadius(){return this.activeCandidate?$.config$$module$build$src$core$config.connectingSnapRadius:$.config$$module$build$src$core$config.snapRadius}shouldDelete(a,b){return b&&this.workspace.getComponentManager().hasCapability(b.id,
817
+ ComponentManager$$module$build$src$core$component_manager.Capability.DELETE_AREA)?b.wouldDelete(this.topBlock,a):!1}maybeShowPreview(a){if(!this.wouldDeleteBlock&&a){var b=a.closest,c;b===(null==(c=this.activeCandidate)?void 0:c.closest)||b.getSourceBlock().isInsertionMarker()?console.log("Trying to connect to an insertion marker"):(this.activeCandidate=a,this.showPreview(this.activeCandidate))}}showPreview(a){const b=this.workspace.getRenderer();switch(b.getConnectionPreviewMethod(a.closest,a.local,
818
+ this.topBlock)){case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INPUT_OUTLINE:this.showInsertionInputOutline(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.INSERTION_MARKER:this.showInsertionMarker(a);break;case InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE.REPLACEMENT_FADE:this.showReplacementFade(a)}b.shouldHighlightConnection(a.closest)&&a.closest.highlight()}maybeHidePreview(a){if(!a)this.hidePreview();
819
+ else if(this.activeCandidate){const b=this.activeCandidate.local!==a.local;(this.activeCandidate.closest!==a.closest||b||this.wouldDeleteBlock)&&this.hidePreview()}this.activeCandidate=this.markerConnection=null}hidePreview(){let a;const b=null==(a=this.activeCandidate)?void 0:a.closest;b&&b.targetBlock()&&this.workspace.getRenderer().shouldHighlightConnection(b)&&b.unhighlight();this.hideReplacementFade();this.hideInsertionInputOutline();this.hideInsertionMarker()}showInsertionMarker(a){const {local:b,
820
+ closest:c}=a;let d=(a=this.lastOnStack&&b===this.lastOnStack)?this.lastMarker:this.firstMarker;if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");let e;try{e=d.getMatchingConnection(b.getSourceBlock(),b)}catch(f){a&&this.lastOnStack?(this.disposeInsertionMarker(this.lastMarker),d=this.lastMarker=this.createMarkerBlock(this.lastOnStack.getSourceBlock())):(this.disposeInsertionMarker(this.firstMarker),d=this.firstMarker=this.createMarkerBlock(this.topBlock));
821
+ if(!d)throw Error("Cannot show the insertion marker because there is no insertion marker block");e=d.getMatchingConnection(b.getSourceBlock(),b)}if(!e)throw Error("Cannot show the insertion marker because there is no associated connection");if(e===this.markerConnection)throw Error("Made it to showInsertionMarker_ even though the marker isn't changing");d.render();d.rendered=!0;d.getSvgRoot().setAttribute("visibility","visible");e&&c&&d.positionNearConnection(e,c);c&&e.connect(c);this.markerConnection=
822
+ e}hideInsertionMarker(){if(this.markerConnection){var a=this.markerConnection,b=a.getSourceBlock(),c=b.outputConnection,d;if((null==(d=b.previousConnection)?0:d.targetConnection)||(null==c?0:c.targetConnection))b.unplug(!0);else{let e;null==(e=a.targetBlock())||e.unplug(!1)}if(a.targetConnection)throw Error("markerConnection still connected at the end of disconnectInsertionMarker");this.markerConnection=null;(a=b.getSvgRoot())&&a.setAttribute("visibility","hidden")}}showInsertionInputOutline(a){a=
823
+ a.closest;this.highlightedBlock=a.getSourceBlock();this.highlightedBlock.highlightShapeForInput(a,!0)}hideInsertionInputOutline(){if(this.highlightedBlock){if(!this.activeCandidate)throw Error("Cannot hide the insertion marker outline because there is no active candidate");this.highlightedBlock.highlightShapeForInput(this.activeCandidate.closest,!1);this.highlightedBlock=null}}showReplacementFade(a){this.fadedBlock=a.closest.targetBlock();if(!this.fadedBlock)throw Error("Cannot show the replacement fade because the closest connection does not have a target block");
823
824
  this.fadedBlock.fadeForReplacement(!0)}hideReplacementFade(){this.fadedBlock&&(this.fadedBlock.fadeForReplacement(!1),this.fadedBlock=null)}getInsertionMarkers(){const a=[];this.firstMarker&&a.push(this.firstMarker);this.lastMarker&&a.push(this.lastMarker);return a}disposeInsertionMarker(a){if(a){disable$$module$build$src$core$events$utils();try{a.dispose()}finally{enable$$module$build$src$core$events$utils()}}}};
824
825
  (function(a){a=a.PREVIEW_TYPE||(a.PREVIEW_TYPE={});a[a.INSERTION_MARKER=0]="INSERTION_MARKER";a[a.INPUT_OUTLINE=1]="INPUT_OUTLINE";a[a.REPLACEMENT_FADE=2]="REPLACEMENT_FADE"})(InsertionMarkerManager$$module$build$src$core$insertion_marker_manager||(InsertionMarkerManager$$module$build$src$core$insertion_marker_manager={}));
825
826
  var PreviewType$$module$build$src$core$insertion_marker_manager=InsertionMarkerManager$$module$build$src$core$insertion_marker_manager.PREVIEW_TYPE,module$build$src$core$insertion_marker_manager={};module$build$src$core$insertion_marker_manager.InsertionMarkerManager=InsertionMarkerManager$$module$build$src$core$insertion_marker_manager;module$build$src$core$insertion_marker_manager.PreviewType=PreviewType$$module$build$src$core$insertion_marker_manager;var BlockDragger$$module$build$src$core$block_dragger=class{constructor(a,b){this.dragTarget_=null;this.wouldDeleteBlock_=!1;this.draggingBlock_=a;this.draggedConnectionManager_=new InsertionMarkerManager$$module$build$src$core$insertion_marker_manager(this.draggingBlock_);this.workspace_=b;this.startXY_=this.draggingBlock_.getRelativeToSurfaceXY();this.dragIconData_=initIconData$$module$build$src$core$block_dragger(a)}dispose(){this.dragIconData_.length=0;this.draggedConnectionManager_&&this.draggedConnectionManager_.dispose()}startDrag(a,
@@ -829,9 +830,10 @@ a&&this.draggingBlock_.nextConnection&&this.draggingBlock_.nextConnection.target
829
830
  this.updateCursorDuringBlockDrag_();this.dragTarget_!==c&&(c&&c.onDragExit(this.draggingBlock_),this.dragTarget_&&this.dragTarget_.onDragEnter(this.draggingBlock_));this.dragTarget_&&this.dragTarget_.onDragOver(this.draggingBlock_)}endDrag(a,b){this.drag(a,b);this.dragIconData_=[];this.fireDragEndEvent_();stopTextWidthCache$$module$build$src$core$utils$dom();disconnectUiStop$$module$build$src$core$block_animations();a=null;this.dragTarget_&&this.dragTarget_.shouldPreventMove(this.draggingBlock_)?
830
831
  b=this.startXY_:(b=this.getNewLocationAfterDrag_(b),a=b.delta,b=b.newLocation);this.draggingBlock_.moveOffDragSurface(b);if(this.dragTarget_)this.dragTarget_.onDrop(this.draggingBlock_);this.maybeDeleteBlock_()||(this.draggingBlock_.setDragging(!1),a?this.updateBlockAfterMove_():bumpObjectIntoBounds$$module$build$src$core$bump_objects(this.draggingBlock_.workspace,this.workspace_.getMetricsManager().getScrollMetrics(!0),this.draggingBlock_));this.workspace_.setResizesEnabled(!0);setGroup$$module$build$src$core$events$utils(!1)}getNewLocationAfterDrag_(a){a=
831
832
  this.pixelsToWorkspaceUnits_(a);const b=Coordinate$$module$build$src$core$utils$coordinate.sum(this.startXY_,a);return{delta:a,newLocation:b}}maybeDeleteBlock_(){return this.wouldDeleteBlock_?(this.fireMoveEvent_(),this.draggingBlock_.dispose(!1,!0),draggingConnections$$module$build$src$core$common.length=0,!0):!1}updateBlockAfterMove_(){this.fireMoveEvent_();this.draggedConnectionManager_.wouldConnectBlock()?this.draggedConnectionManager_.applyConnections():this.draggingBlock_.queueRender();this.draggingBlock_.scheduleSnapAndBump()}fireDragEndEvent_(){const a=
832
- new (get$$module$build$src$core$events$utils(BLOCK_DRAG$$module$build$src$core$events$utils))(this.draggingBlock_,!1,this.draggingBlock_.getDescendants(!1));fire$$module$build$src$core$events$utils(a)}updateToolboxStyle_(a){const b=this.workspace_.getToolbox();if(b){const c=this.draggingBlock_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";a&&"function"===typeof b.removeStyle?b.removeStyle(c):a||"function"!==typeof b.addStyle||b.addStyle(c)}}fireMoveEvent_(){const a=new (get$$module$build$src$core$events$utils(MOVE$$module$build$src$core$events$utils))(this.draggingBlock_);
833
- a.oldCoordinate=this.startXY_;a.recordNew();fire$$module$build$src$core$events$utils(a)}updateCursorDuringBlockDrag_(){this.draggingBlock_.setDeleteStyle(this.wouldDeleteBlock_)}pixelsToWorkspaceUnits_(a){a=new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&&a.scale(1/this.workspace_.options.parentWorkspace.scale);return a}dragIcons_(a){for(let b=0;b<this.dragIconData_.length;b++){const c=this.dragIconData_[b];c.icon.setIconLocation(Coordinate$$module$build$src$core$utils$coordinate.sum(c.location,
834
- a))}}getInsertionMarkers(){return this.draggedConnectionManager_&&this.draggedConnectionManager_.getInsertionMarkers?this.draggedConnectionManager_.getInsertionMarkers():[]}};register$$module$build$src$core$registry(Type$$module$build$src$core$registry.BLOCK_DRAGGER,DEFAULT$$module$build$src$core$registry,BlockDragger$$module$build$src$core$block_dragger);var module$build$src$core$block_dragger={};module$build$src$core$block_dragger.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;var Comment$$module$build$src$core$comment=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.cachedText="";this.boundEvents=[];this.paragraphElement_=this.textarea_=this.foreignObject=null;this.model=a.commentModel;let b;this.model.text=null!=(b=this.model.text)?b:"";this.createIcon()}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
833
+ new (get$$module$build$src$core$events$utils(BLOCK_DRAG$$module$build$src$core$events$utils))(this.draggingBlock_,!1,this.draggingBlock_.getDescendants(!1));fire$$module$build$src$core$events$utils(a)}updateToolboxStyle_(a){const b=this.workspace_.getToolbox();if(b){const c=this.draggingBlock_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";a&&"function"===typeof b.removeStyle?b.removeStyle(c):a||"function"!==typeof b.addStyle||b.addStyle(c)}}fireMoveEvent_(){if(!this.draggingBlock_.isDeadOrDying()){var a=
834
+ new (get$$module$build$src$core$events$utils(MOVE$$module$build$src$core$events$utils))(this.draggingBlock_);a.oldCoordinate=this.startXY_;a.recordNew();fire$$module$build$src$core$events$utils(a)}}updateCursorDuringBlockDrag_(){this.draggingBlock_.setDeleteStyle(this.wouldDeleteBlock_)}pixelsToWorkspaceUnits_(a){a=new Coordinate$$module$build$src$core$utils$coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&&a.scale(1/this.workspace_.options.parentWorkspace.scale);
835
+ return a}dragIcons_(a){for(let b=0;b<this.dragIconData_.length;b++){const c=this.dragIconData_[b];c.icon.setIconLocation(Coordinate$$module$build$src$core$utils$coordinate.sum(c.location,a))}}getInsertionMarkers(){return this.draggedConnectionManager_&&this.draggedConnectionManager_.getInsertionMarkers?this.draggedConnectionManager_.getInsertionMarkers():[]}};register$$module$build$src$core$registry(Type$$module$build$src$core$registry.BLOCK_DRAGGER,DEFAULT$$module$build$src$core$registry,BlockDragger$$module$build$src$core$block_dragger);
836
+ var module$build$src$core$block_dragger={};module$build$src$core$block_dragger.BlockDragger=BlockDragger$$module$build$src$core$block_dragger;var Comment$$module$build$src$core$comment=class extends Icon$$module$build$src$core$icon{constructor(a){super(a);this.cachedText="";this.boundEvents=[];this.paragraphElement_=this.textarea_=this.foreignObject=null;this.model=a.commentModel;let b;this.model.text=null!=(b=this.model.text)?b:"";this.createIcon()}drawIcon_(a){createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.CIRCLE,{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.PATH,
835
837
  {"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.4050.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25-1.201,0.998 -1.201,1.528 -1.204,2.19z"},a);createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.RECT,{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)}createEditor(){this.foreignObject=createSvgElement$$module$build$src$core$utils$dom(Svg$$module$build$src$core$utils$svg.FOREIGNOBJECT,
836
838
  {x:Bubble$$module$build$src$core$bubble.BORDER_WIDTH,y:Bubble$$module$build$src$core$bubble.BORDER_WIDTH});const a=document.createElementNS(HTML_NS$$module$build$src$core$utils$dom,"body");a.setAttribute("xmlns",HTML_NS$$module$build$src$core$utils$dom);a.className="blocklyMinimalBody";const b=this.textarea_=document.createElementNS(HTML_NS$$module$build$src$core$utils$dom,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.getBlock().RTL?"RTL":"LTR");let c;b.value=null!=(c=
837
839
  this.model.text)?c:"";this.resizeTextarea();a.appendChild(b);this.foreignObject.appendChild(a);this.boundEvents.push(conditionalBind$$module$build$src$core$browser_events(b,"focus",this,this.startEdit,!0));this.boundEvents.push(conditionalBind$$module$build$src$core$browser_events(b,"wheel",this,function(d){d.stopPropagation()}));this.boundEvents.push(conditionalBind$$module$build$src$core$browser_events(b,"change",this,function(d){this.cachedText!==this.model.text&&fire$$module$build$src$core$events$utils(new (get$$module$build$src$core$events$utils(CHANGE$$module$build$src$core$events$utils))(this.getBlock(),
@@ -1651,7 +1653,7 @@ module$build$src$core$utils.aria=module$build$src$core$utils$aria;module$build$s
1651
1653
  module$build$src$core$utils.deprecation=module$build$src$core$utils$deprecation;module$build$src$core$utils.dom=module$build$src$core$utils$dom;module$build$src$core$utils.extensions=$.module$build$src$core$extensions;module$build$src$core$utils.getBlockTypeCounts=getBlockTypeCounts$$module$build$src$core$utils;module$build$src$core$utils.getDocumentScroll=getDocumentScroll$$module$build$src$core$utils;module$build$src$core$utils.getInjectionDivXY_=getInjectionDivXY$$module$build$src$core$utils;
1652
1654
  module$build$src$core$utils.getRelativeXY=getRelativeXY$$module$build$src$core$utils;module$build$src$core$utils.getViewportBBox=getViewportBBox$$module$build$src$core$utils;module$build$src$core$utils.idGenerator=module$build$src$core$utils$idgenerator;module$build$src$core$utils.is3dSupported=is3dSupported$$module$build$src$core$utils;module$build$src$core$utils.math=module$build$src$core$utils$math;module$build$src$core$utils.object=module$build$src$core$utils$object;
1653
1655
  module$build$src$core$utils.parseBlockColour=parseBlockColour$$module$build$src$core$utils;module$build$src$core$utils.parsing=module$build$src$core$utils$parsing;module$build$src$core$utils.replaceMessageReferences=replaceMessageReferences$$module$build$src$core$utils;module$build$src$core$utils.runAfterPageLoad=runAfterPageLoad$$module$build$src$core$utils;module$build$src$core$utils.screenToWsCoordinates=screenToWsCoordinates$$module$build$src$core$utils;module$build$src$core$utils.string=$.module$build$src$core$utils$string;
1654
- module$build$src$core$utils.style=module$build$src$core$utils$style;module$build$src$core$utils.svgMath=module$build$src$core$utils$svg_math;module$build$src$core$utils.svgPaths=module$build$src$core$utils$svg_paths;module$build$src$core$utils.tokenizeInterpolation=tokenizeInterpolation$$module$build$src$core$utils;module$build$src$core$utils.toolbox=module$build$src$core$utils$toolbox;module$build$src$core$utils.userAgent=module$build$src$core$utils$useragent;module$build$src$core$utils.xml=$.module$build$src$core$utils$xml;var VERSION$$module$build$src$core$blockly="9.3.1",ALIGN_LEFT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.LEFT,ALIGN_CENTRE$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.CENTRE,ALIGN_RIGHT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.RIGHT,INPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE,
1656
+ module$build$src$core$utils.style=module$build$src$core$utils$style;module$build$src$core$utils.svgMath=module$build$src$core$utils$svg_math;module$build$src$core$utils.svgPaths=module$build$src$core$utils$svg_paths;module$build$src$core$utils.tokenizeInterpolation=tokenizeInterpolation$$module$build$src$core$utils;module$build$src$core$utils.toolbox=module$build$src$core$utils$toolbox;module$build$src$core$utils.userAgent=module$build$src$core$utils$useragent;module$build$src$core$utils.xml=$.module$build$src$core$utils$xml;var VERSION$$module$build$src$core$blockly="9.3.3",ALIGN_LEFT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.LEFT,ALIGN_CENTRE$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.CENTRE,ALIGN_RIGHT$$module$build$src$core$blockly=$.Align$$module$build$src$core$input.RIGHT,INPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.INPUT_VALUE,OUTPUT_VALUE$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.OUTPUT_VALUE,
1655
1657
  NEXT_STATEMENT$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.NEXT_STATEMENT,PREVIOUS_STATEMENT$$module$build$src$core$blockly=ConnectionType$$module$build$src$core$connection_type.PREVIOUS_STATEMENT,DUMMY_INPUT$$module$build$src$core$blockly=inputTypes$$module$build$src$core$input_types.DUMMY,TOOLBOX_AT_TOP$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.TOP,TOOLBOX_AT_BOTTOM$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.BOTTOM,
1656
1658
  TOOLBOX_AT_LEFT$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.LEFT,TOOLBOX_AT_RIGHT$$module$build$src$core$blockly=Position$$module$build$src$core$utils$toolbox.RIGHT,svgResize$$module$build$src$core$blockly=svgResize$$module$build$src$core$common,getMainWorkspace$$module$build$src$core$blockly=getMainWorkspace$$module$build$src$core$common,getSelected$$module$build$src$core$blockly=getSelected$$module$build$src$core$common,defineBlocksWithJsonArray$$module$build$src$core$blockly=
1657
1659
  defineBlocksWithJsonArray$$module$build$src$core$common,setParentContainer$$module$build$src$core$blockly=setParentContainer$$module$build$src$core$common,resizeSvgContents$$module$build$src$core$blockly=resizeSvgContentsLocal$$module$build$src$core$blockly,COLLAPSE_CHARS$$module$build$src$core$blockly=COLLAPSE_CHARS$$module$build$src$core$internal_constants,DRAG_STACK$$module$build$src$core$blockly=DRAG_STACK$$module$build$src$core$internal_constants,OPPOSITE_TYPE$$module$build$src$core$blockly=