UNPKG

@webwriter/block-based-code

Version:

Write block-based code (e.g. Scratch) and run it.

488 lines (487 loc) 3.64 MB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); var __typeError = (msg2) => { throw TypeError(msg2); }; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to2, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to2, key) && key !== except) __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to2; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __decoratorStart = (base2) => [, , , __create(base2?.[__knownSymbol("metadata")] ?? null)]; var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"]; var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn; var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) }); var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]); var __runInitializers = (array, flags, self2, value) => { for (var i6 = 0, fns = array[flags >> 1], n7 = fns && fns.length; i6 < n7; i6++) flags & 1 ? fns[i6].call(self2) : value = fns[i6].call(self2, value); return value; }; var __decorateElement = (array, flags, name, decorators, target, extra) => { var fn, it, done, ctx, access, k4 = flags & 7, s5 = !!(flags & 8), p4 = !!(flags & 16); var j4 = k4 > 3 ? array.length + 1 : k4 ? s5 ? 1 : 2 : 0, key = __decoratorStrings[k4 + 5]; var initializers = k4 > 3 && (array[j4 - 1] = []), extraInitializers = array[j4] || (array[j4] = []); var desc = k4 && (!p4 && !s5 && (target = target.prototype), k4 < 5 && (k4 > 3 || !p4) && __getOwnPropDesc(k4 < 4 ? target : { get [name]() { return __privateGet(this, extra); }, set [name](x4) { return __privateSet(this, extra, x4); } }, name)); k4 ? p4 && k4 < 4 && __name(extra, (k4 > 2 ? "set " : k4 > 1 ? "get " : "") + name) : __name(target, name); for (var i6 = decorators.length - 1; i6 >= 0; i6--) { ctx = __decoratorContext(k4, name, done = {}, array[3], extraInitializers); if (k4) { ctx.static = s5, ctx.private = p4, access = ctx.access = { has: p4 ? (x4) => __privateIn(target, x4) : (x4) => name in x4 }; if (k4 ^ 3) access.get = p4 ? (x4) => (k4 ^ 1 ? __privateGet : __privateMethod)(x4, target, k4 ^ 4 ? extra : desc.get) : (x4) => x4[name]; if (k4 > 2) access.set = p4 ? (x4, y4) => __privateSet(x4, target, y4, k4 ^ 4 ? extra : desc.set) : (x4, y4) => x4[name] = y4; } it = (0, decorators[i6])(k4 ? k4 < 4 ? p4 ? extra : desc[key] : k4 > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1; if (k4 ^ 4 || it === void 0) __expectFn(it) && (k4 > 4 ? initializers.unshift(it) : k4 ? p4 ? extra = it : desc[key] = it : target = it); else if (typeof it !== "object" || it === null) __typeError("Object expected"); else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn); } return k4 || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p4 ? k4 ^ 4 ? extra : desc : target; }; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var __accessCheck = (obj, member, msg2) => member.has(obj) || __typeError("Cannot " + msg2); var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj); var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); // node_modules/blockly/blockly_compressed.js var require_blockly_compressed = __commonJS({ "node_modules/blockly/blockly_compressed.js"(exports, module) { (function(root, factory) { if (typeof define === "function" && define.amd) { define([], factory); } else if (typeof exports === "object") { module.exports = factory(); } else { root.Blockly = factory(); } })(exports, function() { var $4 = {}; var register$$module$build$src$core$registry, validate$$module$build$src$core$registry, unregister$$module$build$src$core$registry, getItem$$module$build$src$core$registry, hasItem$$module$build$src$core$registry, getClass$$module$build$src$core$registry, getObject$$module$build$src$core$registry, getAllItems$$module$build$src$core$registry, getClassFromOptions$$module$build$src$core$registry, getNextUniqueId$$module$build$src$core$utils$idgenerator, genUid$$module$build$src$core$utils$idgenerator, getRecordUndo$$module$build$src$core$events$utils, fire$$module$build$src$core$events$utils, fireInternal$$module$build$src$core$events$utils, fireNow$$module$build$src$core$events$utils, filter$$module$build$src$core$events$utils, clearPendingUndo$$module$build$src$core$events$utils, isEnabled$$module$build$src$core$events$utils, setGroupInternal$$module$build$src$core$events$utils, getDescendantIds$$module$build$src$core$events$utils, fromJson$$module$build$src$core$events$utils, get$$module$build$src$core$events$utils, disableOrphans$$module$build$src$core$events$utils, getWorkspaceById$$module$build$src$core$common, getAllWorkspaces$$module$build$src$core$common, registerWorkspace$$module$build$src$core$common, unregisterWorkpace$$module$build$src$core$common, getMainWorkspace$$module$build$src$core$common, setMainWorkspace$$module$build$src$core$common, getSelected$$module$build$src$core$common, getParentContainer$$module$build$src$core$common, setParentContainer$$module$build$src$core$common, svgResize$$module$build$src$core$common, getBlockTypeCounts$$module$build$src$core$common, jsonInitFactory$$module$build$src$core$common, defineBlocksWithJsonArray$$module$build$src$core$common, defineBlocksWithJsonArrayInternal$$module$build$src$core$common, longStart$$module$build$src$core$touch, longStop$$module$build$src$core$touch, clearTouchIdentifier$$module$build$src$core$touch, shouldHandleEvent$$module$build$src$core$touch, getTouchIdentifierFromEvent$$module$build$src$core$touch, checkTouchIdentifier$$module$build$src$core$touch, conditionalBind$$module$build$src$core$browser_events, bind$$module$build$src$core$browser_events, unbind$$module$build$src$core$browser_events, isTargetInput$$module$build$src$core$browser_events, isRightButton$$module$build$src$core$browser_events, mouseToSvg$$module$build$src$core$browser_events, getScrollDeltaPixels$$module$build$src$core$browser_events, removeElem$$module$build$src$core$utils$array, register$$module$build$src$core$css, inject$$module$build$src$core$css, createSvgElement$$module$build$src$core$utils$dom, addClass$$module$build$src$core$utils$dom, removeClasses$$module$build$src$core$utils$dom, removeClass$$module$build$src$core$utils$dom, hasClass$$module$build$src$core$utils$dom, removeNode$$module$build$src$core$utils$dom, insertAfter$$module$build$src$core$utils$dom, setCssTransform$$module$build$src$core$utils$dom, startTextWidthCache$$module$build$src$core$utils$dom, stopTextWidthCache$$module$build$src$core$utils$dom, getTextWidth$$module$build$src$core$utils$dom, getFastTextWidth$$module$build$src$core$utils$dom, getFastTextWidthWithSizeString$$module$build$src$core$utils$dom, measureFontMetrics$$module$build$src$core$utils$dom, getSize$$module$build$src$core$utils$style, getSizeInternal$$module$build$src$core$utils$style, getSizeWithDisplay$$module$build$src$core$utils$style, getComputedStyle$$module$build$src$core$utils$style, getPageOffset$$module$build$src$core$utils$style, getViewportPageOffset$$module$build$src$core$utils$style, getBorderBox$$module$build$src$core$utils$style, scrollIntoContainerView$$module$build$src$core$utils$style, getContainerOffsetToScrollInto$$module$build$src$core$utils$style, getRelativeXY$$module$build$src$core$utils$svg_math, getInjectionDivXY$$module$build$src$core$utils$svg_math, getViewportBBox$$module$build$src$core$utils$svg_math, getDocumentScroll$$module$build$src$core$utils$svg_math, screenToWsCoordinates$$module$build$src$core$utils$svg_math, wsToScreenCoordinates$$module$build$src$core$utils$svg_math, injectDependencies$$module$build$src$core$utils$xml, domToText$$module$build$src$core$utils$xml, sanitizeText$$module$build$src$core$utils$xml, convertToolboxDefToJson$$module$build$src$core$utils$toolbox, validateToolbox$$module$build$src$core$utils$toolbox, convertFlyoutDefToJsonArray$$module$build$src$core$utils$toolbox, hasCategories$$module$build$src$core$utils$toolbox, hasCategoriesInternal$$module$build$src$core$utils$toolbox, isCategoryCollapsible$$module$build$src$core$utils$toolbox, convertToToolboxJson$$module$build$src$core$utils$toolbox, xmlToJsonArray$$module$build$src$core$utils$toolbox, addAttributes$$module$build$src$core$utils$toolbox, parseToolboxTree$$module$build$src$core$utils$toolbox, getStartPositionRect$$module$build$src$core$positionable_helpers, getCornerOppositeToolbox$$module$build$src$core$positionable_helpers, bumpPositionRect$$module$build$src$core$positionable_helpers, alert$$module$build$src$core$dialog, setAlert$$module$build$src$core$dialog, confirm$$module$build$src$core$dialog, confirmInternal$$module$build$src$core$dialog, setConfirm$$module$build$src$core$dialog, prompt$$module$build$src$core$dialog, setPrompt$$module$build$src$core$dialog, isVariableBackedParameterModel$$module$build$src$core$interfaces$i_variable_backed_parameter_model, isLegacyProcedureDefBlock$$module$build$src$core$interfaces$i_legacy_procedure_blocks, isLegacyProcedureCallBlock$$module$build$src$core$interfaces$i_legacy_procedure_blocks, flyoutCategory$$module$build$src$core$variables, flyoutCategoryBlocks$$module$build$src$core$variables, generateUniqueName$$module$build$src$core$variables, generateUniqueNameInternal$$module$build$src$core$variables, generateUniqueNameFromOptions$$module$build$src$core$variables, createVariableButtonHandler$$module$build$src$core$variables, promptName$$module$build$src$core$variables, nameUsedWithOtherType$$module$build$src$core$variables, nameUsedWithAnyType$$module$build$src$core$variables, nameUsedWithConflictingParam$$module$build$src$core$variables, checkForConflictingParamWithProcedureModels$$module$build$src$core$variables, checkForConflictingParamWithLegacyProcedures$$module$build$src$core$variables, generateVariableFieldDom$$module$build$src$core$variables, createVariable$$module$build$src$core$variables, getAddedVariables$$module$build$src$core$variables, queueRender$$module$build$src$core$render_management, finishQueuedRenders$$module$build$src$core$render_management, triggerQueuedRenders$$module$build$src$core$render_management, alwaysImmediatelyRender$$module$build$src$core$render_management, queueBlock$$module$build$src$core$render_management, doRenders$$module$build$src$core$render_management, dequeueBlock$$module$build$src$core$render_management, shouldRenderRootBlock$$module$build$src$core$render_management, renderBlock$$module$build$src$core$render_management, register$$module$build$src$core$serialization$registry, unregister$$module$build$src$core$serialization$registry, save$$module$build$src$core$serialization$workspace_comments, append$$module$build$src$core$serialization$workspace_comments, register$$module$build$src$core$clipboard$registry, unregister$$module$build$src$core$clipboard$registry, moveCommentToNotConflict$$module$build$src$core$clipboard$workspace_comment_paster, commentOverlapsOtherExactly$$module$build$src$core$clipboard$workspace_comment_paster, setRole$$module$build$src$core$utils$aria, setState$$module$build$src$core$utils$aria, isSerializable$$module$build$src$core$interfaces$i_serializable, save$$module$build$src$core$serialization$blocks, saveAttributes$$module$build$src$core$serialization$blocks, saveCoords$$module$build$src$core$serialization$blocks, saveExtraState$$module$build$src$core$serialization$blocks, saveIcons$$module$build$src$core$serialization$blocks, saveFields$$module$build$src$core$serialization$blocks, saveInputBlocks$$module$build$src$core$serialization$blocks, saveNextBlocks$$module$build$src$core$serialization$blocks, saveConnection$$module$build$src$core$serialization$blocks, append$$module$build$src$core$serialization$blocks, appendInternal$$module$build$src$core$serialization$blocks, appendPrivate$$module$build$src$core$serialization$blocks, checkNewVariables$$module$build$src$core$serialization$blocks, loadCoords$$module$build$src$core$serialization$blocks, loadAttributes$$module$build$src$core$serialization$blocks, loadExtraState$$module$build$src$core$serialization$blocks, tryToConnectParent$$module$build$src$core$serialization$blocks, loadIcons$$module$build$src$core$serialization$blocks, loadFields$$module$build$src$core$serialization$blocks, loadInputBlocks$$module$build$src$core$serialization$blocks, loadNextBlocks$$module$build$src$core$serialization$blocks, loadConnection$$module$build$src$core$serialization$blocks, initBlock$$module$build$src$core$serialization$blocks, hasBubble$$module$build$src$core$interfaces$i_has_bubble, toRadians$$module$build$src$core$utils$math, toDegrees$$module$build$src$core$utils$math, clamp$$module$build$src$core$utils$math, createDom$$module$build$src$core$dropdowndiv, setBoundsElement$$module$build$src$core$dropdowndiv, getOwner$$module$build$src$core$dropdowndiv, getContentDiv$$module$build$src$core$dropdowndiv, clearContent$$module$build$src$core$dropdowndiv, setColour$$module$build$src$core$dropdowndiv, showPositionedByBlock$$module$build$src$core$dropdowndiv, showPositionedByField$$module$build$src$core$dropdowndiv, getScaledBboxOfBlock$$module$build$src$core$dropdowndiv, getScaledBboxOfField$$module$build$src$core$dropdowndiv, showPositionedByRect$$module$build$src$core$dropdowndiv, show$$module$build$src$core$dropdowndiv, getPositionBelowMetrics$$module$build$src$core$dropdowndiv, getPositionAboveMetrics$$module$build$src$core$dropdowndiv, getPositionTopOfPageMetrics$$module$build$src$core$dropdowndiv, getPositionX$$module$build$src$core$dropdowndiv, isVisible$$module$build$src$core$dropdowndiv, hideIfOwner$$module$build$src$core$dropdowndiv, hide$$module$build$src$core$dropdowndiv, hideWithoutAnimation$$module$build$src$core$dropdowndiv, positionInternal$$module$build$src$core$dropdowndiv, repositionForWindowResize$$module$build$src$core$dropdowndiv, shortestStringLength$$module$build$src$core$utils$string, commonWordPrefix$$module$build$src$core$utils$string, commonWordSuffix$$module$build$src$core$utils$string, wrapLine$$module$build$src$core$utils$string, wrapScore$$module$build$src$core$utils$string, wrapMutate$$module$build$src$core$utils$string, wrapToText$$module$build$src$core$utils$string, setCustomTooltip$$module$build$src$core$tooltip, getCustomTooltip$$module$build$src$core$tooltip, isVisible$$module$build$src$core$tooltip, getDiv$$module$build$src$core$tooltip, getTooltipOfObject$$module$build$src$core$tooltip, getTargetObject$$module$build$src$core$tooltip, createDom$$module$build$src$core$tooltip, bindMouseEvents$$module$build$src$core$tooltip, unbindMouseEvents$$module$build$src$core$tooltip, onMouseOver$$module$build$src$core$tooltip, onMouseOut$$module$build$src$core$tooltip, onMouseMove$$module$build$src$core$tooltip, dispose$$module$build$src$core$tooltip, hide$$module$build$src$core$tooltip, block$$module$build$src$core$tooltip, unblock$$module$build$src$core$tooltip, renderContent$$module$build$src$core$tooltip, renderDefaultContent$$module$build$src$core$tooltip, getPosition$$module$build$src$core$tooltip, show$$module$build$src$core$tooltip, getHsvSaturation$$module$build$src$core$utils$colour, setHsvSaturation$$module$build$src$core$utils$colour, getHsvValue$$module$build$src$core$utils$colour, setHsvValue$$module$build$src$core$utils$colour, parse$$module$build$src$core$utils$colour, rgbToHex$$module$build$src$core$utils$colour, hexToRgb$$module$build$src$core$utils$colour, hsvToHex$$module$build$src$core$utils$colour, blend$$module$build$src$core$utils$colour, hueToHex$$module$build$src$core$utils$colour, tokenizeInterpolationInternal$$module$build$src$core$utils$parsing, tokenizeInterpolation$$module$build$src$core$utils$parsing, replaceMessageReferences$$module$build$src$core$utils$parsing, checkMessageReferences$$module$build$src$core$utils$parsing, parseBlockColour$$module$build$src$core$utils$parsing, getDiv$$module$build$src$core$widgetdiv, testOnly_setDiv$$module$build$src$core$widgetdiv, createDom$$module$build$src$core$widgetdiv, show$$module$build$src$core$widgetdiv, hide$$module$build$src$core$widgetdiv, isVisible$$module$build$src$core$widgetdiv, hideIfOwner$$module$build$src$core$widgetdiv, hideIfOwnerIsInWorkspace$$module$build$src$core$widgetdiv, positionInternal$$module$build$src$core$widgetdiv, positionWithAnchor$$module$build$src$core$widgetdiv, calculateX$$module$build$src$core$widgetdiv, calculateY$$module$build$src$core$widgetdiv, isRepositionable$$module$build$src$core$widgetdiv, repositionForWindowResize$$module$build$src$core$widgetdiv, getCurrentBlock$$module$build$src$core$contextmenu, setCurrentBlock$$module$build$src$core$contextmenu, 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, workspaceToDom$$module$build$src$core$xml, saveWorkspaceComment$$module$build$src$core$xml, variablesToDom$$module$build$src$core$xml, blockToDomWithXY$$module$build$src$core$xml, fieldToDom$$module$build$src$core$xml, allFieldsToDom$$module$build$src$core$xml, blockToDom$$module$build$src$core$xml, cloneShadow$$module$build$src$core$xml, domToText$$module$build$src$core$xml, domToPrettyText$$module$build$src$core$xml, clearWorkspaceAndLoadFromXml$$module$build$src$core$xml, loadWorkspaceComment$$module$build$src$core$xml, appendDomToWorkspace$$module$build$src$core$xml, domToBlockInternal$$module$build$src$core$xml, domToVariables$$module$build$src$core$xml, mapSupportedXmlTags$$module$build$src$core$xml, applyMutationTagNodes$$module$build$src$core$xml, applyCommentTagNodes$$module$build$src$core$xml, applyDataTagNodes$$module$build$src$core$xml, applyFieldTagNodes$$module$build$src$core$xml, findChildBlocks$$module$build$src$core$xml, applyInputTagNodes$$module$build$src$core$xml, applyNextTagNodes$$module$build$src$core$xml, domToBlockHeadless$$module$build$src$core$xml, domToField$$module$build$src$core$xml, deleteNext$$module$build$src$core$xml, isElement$$module$build$src$core$xml, disposeUiEffect$$module$build$src$core$block_animations, disposeUiStep$$module$build$src$core$block_animations, connectionUiEffect$$module$build$src$core$block_animations, disconnectUiEffect$$module$build$src$core$block_animations, disconnectUiStep$$module$build$src$core$block_animations, disconnectUiStop$$module$build$src$core$block_animations, isDraggable$$module$build$src$core$interfaces$i_draggable, deepMerge$$module$build$src$core$utils$object, isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block, isObservable$$module$build$src$core$interfaces$i_observable, register$$module$build$src$core$field_registry, unregister$$module$build$src$core$field_registry, fromJsonInternal$$module$build$src$core$field_registry, trimOptions$$module$build$src$core$field_dropdown, applyTrim$$module$build$src$core$field_dropdown, validateOptions$$module$build$src$core$field_dropdown, unregister$$module$build$src$core$extensions, isRegistered$$module$build$src$core$extensions, apply$$module$build$src$core$extensions, checkNoMutatorProperties$$module$build$src$core$extensions, checkXmlHooks$$module$build$src$core$extensions, checkJsonHooks$$module$build$src$core$extensions, checkMutatorDialog$$module$build$src$core$extensions, checkHasFunctionPair$$module$build$src$core$extensions, checkHasMutatorProperties$$module$build$src$core$extensions, getMutatorProperties$$module$build$src$core$extensions, mutatorPropertiesMatch$$module$build$src$core$extensions, runAfterPageLoad$$module$build$src$core$extensions, checkDropdownOptionsInTable$$module$build$src$core$extensions, extensionParentTooltip$$module$build$src$core$extensions, warn$$module$build$src$core$utils$deprecation, 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, register$$module$build$src$core$icons$registry, unregister$$module$build$src$core$icons$registry, allProcedures$$module$build$src$core$procedures, procTupleComparator$$module$build$src$core$procedures, isLegalName$$module$build$src$core$procedures, isNameUsed$$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, isDynamicShape$$module$build$src$core$renderers$common$constants, isPuzzleTab$$module$build$src$core$renderers$common$constants, isNotch$$module$build$src$core$renderers$common$constants, connectReciprocally$$module$build$src$core$connection, getSingleConnection$$module$build$src$core$connection, getConnectionForOrphanedOutput$$module$build$src$core$connection, isIcon$$module$build$src$core$interfaces$i_icon, isCommentIcon$$module$build$src$core$interfaces$i_comment_icon, getParentConnection$$module$build$src$core$keyboard_nav$ast_node, register$$module$build$src$core$renderers$common$block_rendering, unregister$$module$build$src$core$renderers$common$block_rendering, 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, resizeSvgContents$$module$build$src$core$workspace_svg, moveBlockToNotConflict$$module$build$src$core$clipboard$block_paster, blockOverlapsOtherExactly$$module$build$src$core$clipboard$block_paster, blockIsInSnapRadius$$module$build$src$core$clipboard$block_paster, bumpObjectIntoBounds$$module$build$src$core$bump_objects, bumpIntoBoundsHandler$$module$build$src$core$bump_objects, extractObjectFromEvent$$module$build$src$core$bump_objects, bumpTopObjectsIntoBounds$$module$build$src$core$bump_objects, isDeletable$$module$build$src$core$interfaces$i_deletable, copyInternal$$module$build$src$core$clipboard, paste$$module$build$src$core$clipboard, pasteFromData$$module$build$src$core$clipboard, duplicateInternal$$module$build$src$core$clipboard, isCopyable$$module$build$src$core$interfaces$i_copyable, 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, registerDefaultShortcuts$$module$build$src$core$shortcut_items, saveProcedure$$module$build$src$core$serialization$procedures, loadProcedure$$module$build$src$core$serialization$procedures, save$$module$build$src$core$serialization$workspaces, load$$module$build$src$core$serialization$workspaces, 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, 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, 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, registerDisable$$module$build$src$core$contextmenu_items, registerDelete$$module$build$src$core$contextmenu_items, registerHelp$$module$build$src$core$contextmenu_items, registerCommentDelete$$module$build$src$core$contextmenu_items, registerCommentDuplicate$$module$build$src$core$contextmenu_items, registerCommentCreate$$module$build$src$core$contextmenu_items, pixelsToWorkspaceCoords$$module$build$src$core$contextmenu_items, registerBlockOptions_$$module$build$src$core$contextmenu_items, registerCommentOptions$$module$build$src$core$contextmenu_items, registerDefaultOptions$$module$build$src$core$contextmenu_items, isPaster$$module$build$src$core$interfaces$i_paster, isRenderedElement$$module$build$src$core$interfaces$i_rendered_element, isSelectable$$module$build$src$core$interfaces$i_selectable, isSelectableToolboxItem$$module$build$src$core$interfaces$i_selectable_toolbox_item, hideChaff$$module$build$src$core$blockly, $jscomp; register$$module$build$src$core$registry = function(a4, b4, c6, d4) { if (!(a4 instanceof Type$$module$build$src$core$registry) && "string" !== typeof a4 || "" === `${a4}`.trim()) throw Error('Invalid type "' + a4 + '". The type must be a non-empty string or a Blockly.registry.Type.'); a4 = `${a4}`.toLowerCase(); if ("string" !== typeof b4 || "" === b4.trim()) throw Error('Invalid name "' + b4 + '". The name must be a non-empty string.'); const e8 = b4.toLowerCase(); if (!c6) throw Error("Can not register a null value"); let f6 = typeMap$$module$build$src$core$registry[a4], g4 = nameMap$$module$build$src$core$registry[a4]; f6 || (f6 = typeMap$$module$build$src$core$registry[a4] = /* @__PURE__ */ Object.create(null), g4 = nameMap$$module$build$src$core$registry[a4] = /* @__PURE__ */ Object.create(null)); validate$$module$build$src$core$registry(a4, c6); if (!d4 && f6[e8] && f6[e8] !== c6) throw Error('Name "' + e8 + '" with type "' + a4 + '" already registered.'); f6[e8] = c6; g4[e8] = b4; }; validate$$module$build$src$core$registry = function(a4, b4) { switch (a4) { case String(Type$$module$build$src$core$registry.FIELD): if ("function" !== typeof b4.fromJson) throw Error('Type "' + a4 + '" must have a fromJson function'); } }; unregister$$module$build$src$core$registry = function(a4, b4) { a4 = `${a4}`.toLowerCase(); b4 = b4.toLowerCase(); const c6 = typeMap$$module$build$src$core$registry[a4]; c6 && c6[b4] ? (delete typeMap$$module$build$src$core$registry[a4][b4], delete nameMap$$module$build$src$core$registry[a4][b4]) : console.warn("Unable to unregister [" + b4 + "][" + a4 + "] from the registry."); }; getItem$$module$build$src$core$registry = function(a4, b4, c6) { a4 = `${a4}`.toLowerCase(); b4 = b4.toLowerCase(); const d4 = typeMap$$module$build$src$core$registry[a4]; if (!d4 || !d4[b4]) { b4 = "Unable to find [" + b4 + "][" + a4 + "] in the registry."; if (c6) throw Error(b4 + " You must require or register a " + a4 + " plugin."); console.warn(b4); return null; } return d4[b4]; }; hasItem$$module$build$src$core$registry = function(a4, b4) { a4 = `${a4}`.toLowerCase(); b4 = b4.toLowerCase(); return (a4 = typeMap$$module$build$src$core$registry[a4]) ? !!a4[b4] : false; }; getClass$$module$build$src$core$registry = function(a4, b4, c6) { return getItem$$module$build$src$core$registry(a4, b4, c6); }; getObject$$module$build$src$core$registry = function(a4, b4, c6) { return getItem$$module$build$src$core$registry(a4, b4, c6); }; getAllItems$$module$build$src$core$registry = function(a4, b4, c6) { a4 = `${a4}`.toLowerCase(); var d4 = typeMap$$module$build$src$core$registry[a4]; if (!d4) { d4 = `Unable to find [${a4}] in the registry.`; if (c6) throw Error(`${d4} You must require or register a ${a4} plugin.`); console.warn(d4); return null; } if (!b4) return d4; a4 = nameMap$$module$build$src$core$registry[a4]; c6 = /* @__PURE__ */ Object.create(null); for (const e8 of Object.keys(d4)) c6[a4[e8]] = d4[e8]; return c6; }; getClassFromOptions$$module$build$src$core$registry = function(a4, b4, c6) { b4 = b4.plugins[String(a4)] || DEFAULT$$module$build$src$core$registry; return "function" === typeof b4 ? b4 : getClass$$module$build$src$core$registry(a4, b4, c6); }; getNextUniqueId$$module$build$src$core$utils$idgenerator = function() { return "blockly-" + (nextId$$module$build$src$core$utils$idgenerator++).toString(36); }; genUid$$module$build$src$core$utils$idgenerator = function() { return internal$$module$build$src$core$utils$idgenerator.genUid(); }; $4.setRecordUndo$$module$build$src$core$events$utils = function(a4) { recordUndo$$module$build$src$core$events$utils = a4; }; getRecordUndo$$module$build$src$core$events$utils = function() { return recordUndo$$module$build$src$core$events$utils; }; fire$$module$build$src$core$events$utils = function(a4) { TEST_ONLY$$module$build$src$core$events$utils.fireInternal(a4); }; fireInternal$$module$build$src$core$events$utils = function(a4) { if (isEnabled$$module$build$src$core$events$utils()) { if (!FIRE_QUEUE$$module$build$src$core$events$utils.length) try { requestAnimationFrame(() => { setTimeout(fireNow$$module$build$src$core$events$utils, 0); }); } catch (b4) { setTimeout(fireNow$$module$build$src$core$events$utils, 0); } FIRE_QUEUE$$module$build$src$core$events$utils.push(a4); } }; fireNow$$module$build$src$core$events$utils = function() { var a4 = filter$$module$build$src$core$events$utils(FIRE_QUEUE$$module$build$src$core$events$utils, true); FIRE_QUEUE$$module$build$src$core$events$utils.length = 0; for (let c6 = 0, d4; d4 = a4[c6]; c6++) if (d4.workspaceId) { var b4 = getWorkspaceById$$module$build$src$core$common(d4.workspaceId); b4 && b4.fireChangeListener(d4); } a4 = new Set(a4.map((c6) => c6.workspaceId)); for (const c6 of a4) { if (!c6) continue; a4 = getWorkspaceById$$module$build$src$core$common(c6); if (!a4) continue; a4 = a4.getUndoStack(); let d4 = void 0; for (b4 = a4.length; 0 < b4; b4--) { const e8 = a4[b4 - 1]; if ("" === e8.group) break; else if (void 0 === d4) d4 = e8.group; else if (e8.group !== d4) break; } d4 && b4 != a4.length - 1 && (b4 = a4.splice(b4, a4.length - b4), b4 = filter$$module$build$src$core$events$utils(b4, true), a4.push(...b4)); } }; filter$$module$build$src$core$events$utils = function(a4, b4) { a4 = a4.slice(); b4 || a4.reverse(); const c6 = [], d4 = /* @__PURE__ */ Object.create(null); for (let g4 = 0, h7; h7 = a4[g4]; g4++) if (!h7.isNull()) { var e8 = [h7.isUiEvent ? UI$$module$build$src$core$events$utils : h7.type, h7.blockId, h7.workspaceId].join(" "), f6 = d4[e8]; const k4 = f6 ? f6.event : null; if (!f6) d4[e8] = { event: h7, index: g4 }, c6.push(h7); else if (h7.type === $4.MOVE$$module$build$src$core$events$utils && f6.index === g4 - 1) e8 = h7, k4.newParentId = e8.newParentId, k4.newInputName = e8.newInputName, k4.newCoordinate = e8.newCoordinate, e8.reason && (k4.reason ? (e8 = new Set(e8.reason.concat(k4.reason)), k4.reason = Array.from(e8)) : k4.reason = e8.reason), f6.index = g4; else if (h7.type === $4.CHANGE$$module$build$src$core$events$utils && h7.element === k4.element && h7.name === k4.name) k4.newValue = h7.newValue; else if (h7.type === VIEWPORT_CHANGE$$module$build$src$core$events$utils) f6 = h7, k4.viewTop = f6.viewTop, k4.viewLeft = f6.viewLeft, k4.scale = f6.scale, k4.oldScale = f6.oldScale; else if (h7.type !== CLICK$$module$build$src$core$events$utils || k4.type !== BUBBLE_OPEN$$module$build$src$core$events$utils) d4[e8] = { event: h7, index: g4 }, c6.push(h7); } a4 = c6.filter(function(g4) { return !g4.isNull(); }); b4 || a4.reverse(); for (let g4 = 1, h7; h7 = a4[g4]; g4++) h7.type === $4.CHANGE$$module$build$src$core$events$utils && "mutation" === h7.element && a4.unshift(a4.splice(g4, 1)[0]); return a4; }; clearPendingUndo$$module$build$src$core$events$utils = function() { for (let a4 = 0, b4; b4 = FIRE_QUEUE$$module$build$src$core$events$utils[a4]; a4++) b4.recordUndo = false; }; $4.disable$$module$build$src$core$events$utils = function() { disabled$$module$build$src$core$events$utils++; }; $4.enable$$module$build$src$core$events$utils = function() { disabled$$module$build$src$core$events$utils--; }; isEnabled$$module$build$src$core$events$utils = function() { return 0 === disabled$$module$build$src$core$events$utils; }; $4.getGroup$$module$build$src$core$events$utils = function() { return group$$module$build$src$core$events$utils; }; $4.setGroup$$module$build$src$core$events$utils = function(a4) { TEST_ONLY$$module$build$src$core$events$utils.setGroupInternal(a4); }; setGroupInternal$$module$build$src$core$events$utils = function(a4) { group$$module$build$src$core$events$utils = "boolean" === typeof a4 ? a4 ? genUid$$module$build$src$core$utils$idgenerator() : "" : a4; }; getDescendantIds$$module$build$src$core$events$utils = function(a4) { const b4 = []; a4 = a4.getDescendants(false); for (let c6 = 0, d4; d4 = a4[c6]; c6++) b4[c6] = d4.id; return b4; }; fromJson$$module$build$src$core$events$utils = function(a4, b4) { const c6 = get$$module$build$src$core$events$utils(a4.type); if (!c6) throw Error("Unknown event type."); return c6.fromJson(a4, b4); }; get$$module$build$src$core$events$utils = function(a4) { const b4 = getClass$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT, a4); if (!b4) throw Error(`Event type ${a4} not found in registry.`); return b4; }; disableOrphans$$module$build$src$core$events$utils = function(a4) { if ((a4.type === $4.MOVE$$module$build$src$core$events$utils || a4.type === $4.CREATE$$module$build$src$core$events$utils) && a4.workspaceId) { var b4 = getWorkspaceById$$module$build$src$core$common(a4.workspaceId); if (!a4.blockId) throw Error("Encountered a blockEvent without a proper blockId"); if (a4 = b4.getBlockById(a4.blockId)) { const c6 = recordUndo$$module$build$src$core$events$utils; try { recordUndo$$module$build$src$core$events$utils = false; const d4 = a4.getParent(); if (d4 && !d4.hasDisabledReason(ORPHANED_BLOCK_DISABLED_REASON$$module$build$src$core$events$utils)) { const e8 = a4.getDescendants(false); for (let f6 = 0, g4; g4 = e8[f6]; f6++) g4.setDisabledReason(false, ORPHANED_BLOCK_DISABLED_REASON$$module$build$src$core$events$utils); } else if ((a4.outputConnection || a4.previousConnection) && !b4.isDragging()) { do a4.setDisabledReason(true, ORPHANED_BLOCK_DISABLED_REASON$$module$build$src$core$events$utils), a4 = a4.getNextBlock(); while (a4); } } finally { recordUndo$$module$build$src$core$events$utils = c6; } } } }; getWorkspaceById$$module$build$src$core$common = function(a4) { return WorkspaceDB_$$module$build$src$core$common[a4] || null; }; getAllWorkspaces$$module$build$src$core$common = function() { const a4 = []; for (const b4 in WorkspaceDB_$$module$build$src$core$common) a4.push(WorkspaceDB_$$module$build$src$core$common[b4]); return a4; }; registerWorkspace$$module$build$src$core$common = function(a4) { WorkspaceDB_$$module$build$src$core$common[a4.id] = a4; }; unregisterWorkpace$$module$build$src$core$common = function(a4) { delete WorkspaceDB_$$module$build$src$core$common[a4.id]; }; getMainWorkspace$$module$build$src$core$common = function() { return mainWorkspace$$module$build$src$core$common; }; setMainWorkspace$$module$build$src$core$common = function(a4) { mainWorkspace$$module$build$src$core$common = a4; }; getSelected$$module$build$src$core$common = function() { return selected$$module$build$src$core$common; }; $4.setSelected$$module$build$src$core$common = function(a4) { if (selected$$module$build$src$core$common !== a4) { var b4, c6, d4, e8, f6, g4, h7 = new (get$$module$build$src$core$events$utils(SELECTED$$module$build$src$core$events$utils))(null != (d4 = null == (b4 = selected$$module$build$src$core$common) ? void 0 : b4.id) ? d4 : null, null != (e8 = null == a4 ? void 0 : a4.id) ? e8 : null, null != (g4 = null != (f6 = null == a4 ? void 0 : a4.workspace.id) ? f6 : null == (c6 = selected$$module$build$src$core$common) ? void 0 : c6.workspace.id) ? g4 : ""); fire$$module$build$src$core$events$utils(h7); var k4; null == (k4 = selected$$module$build$src$core$common) || k4.unselect(); selected$$module$build$src$core$common = a4; var l4; null == (l4 = selected$$module$build$src$core$common) || l4.select(); } }; getParentContainer$$module$build$src$core$common = function() { return parentContainer$$module$build$src$core$common; }; setParentContainer$$module$build$src$core$common = function(a4) { parentContainer$$module$build$src$core$common = a4; }; svgResize$$module$build$src$core$common = function(a4) { for (; a4.options.parentWorkspace; ) a4 = a4.options.parentWorkspace; const b4 = a4.getParentSvg(), c6 = a4.getCachedParentSvgSize(); var d4 = b4.parentElement; if (d4 instanceof HTMLElement) { var e8 = d4.offsetWidth; d4 = d4.offsetHeight; c6.width !== e8 && (b4.setAttribute("width", e8 + "px"), a4.setCachedParentSvgSize(e8, null)); c6.height !== d4 && (b4.setAttribute("height", d4 + "px"), a4.setCachedParentSvgSize(null, d4)); a4.resize(); } }; getBlockTypeCounts$$module$build$src$core$common = function(a4, b4) { const c6 = /* @__PURE__ */ Object.create(null), d4 = a4.getDescendants(true); b4 && (a4 = a4.getNextBlock()) && (a4 = d4.indexOf(a4), d4.splice(a4, d4.length - a4)); for (let e8 = 0, f6; f6 = d4[e8]; e8++) c6[f6.type] ? c6[f6.type]++ : c6[f6.type] = 1; return c6; }; jsonInitFactory$$module$build$src$core$common = function(a4) { return function() { this.jsonInit(a4); }; }; defineBlocksWithJsonArray$$module$build$src$core$common = function(a4) { TEST_ONLY$$module$build$src$core$common.defineBlocksWithJsonArrayInternal(a4); }; defineBlocksWithJsonArrayInternal$$module$build$src$core$common = function(a4) { $4.defineBlocks$$module$build$src$core$common($4.createBlockDefinitionsFromJsonArray$$module$build$src$core$common(a4)); }; $4.createBlockDefinitionsFromJsonArray$$module$build$src$core$common = function(a4) { const b4 = {}; for (let c6 = 0; c6 < a4.length; c6++) { const d4 = a4[c6]; if (!d4) { console.warn(`Block definition #${c6} in JSON array is ${d4}. Skipping`); continue; } const e8 = d4.type; e8 ? b4[e8] = { init: jsonInitFactory$$module$build$src$core$common(d4) } : console.warn(`Block definition #${c6} in JSON array is missing a type attribute. Skipping.`); } return b4; }; $4.defineBlocks$$module$build$src$core$common = function(a4) { for (const b4 of Object.keys(a4)) { const c6 = a4[b4]; b4 in Blocks$$module$build$src$core$blocks && console.warn(`Block definition "${b4}" overwrites previous definition.`); Blocks$$module$build$src$core$blocks[b4] = c6; } }; longStart$$module$build$src$core$touch = function(a4, b4) { longStop$$module$build$src$core$touch(); longPid_$$module$build$src$core$touch = setTimeout(function() { b4 && b4.handleRightClick(a4); }, LONGPRESS$$module$build$src$core$touch); }; longStop$$module$build$src$core$touch = function() { longPid_$$module$build$src$core$touch && (clearTimeout(longPid_$$module$build$src$core$touch), longPid_$$module$build$src$core$touch = 0); }; clearTouchIdentifier$$module$build$src$core$touch = function() { touchIdentifier_$$module$build$src$core$touch = null; }; shouldHandleEvent$$module$build$src$core$touch = function(a4) { return !a4.type.startsWith("pointer") || a4 instanceof PointerEvent && checkTouchIdentifier$$module$build$src$core$touch(a4); }; getTouchIdentifierFromEvent$$module$build$src$core$touch = function(a4) { return `${a4.pointerId}`; }; checkTouchIdentifier$$module$build$src$core$touch = function(a4) { const b4 = getTouchIdentifierFromEvent$$module$build$src$core$touch(a4); return touchIdentifier_$$module$build$src$core$touch ? touchIdentifier_$$module$build$src$core$touch === b4 : "pointerdown" === a4.type ? (touchIdentifier_$$module$build$src$core$touch = b4, true) : false; }; conditionalBind$$module$build$src$core$browser_events = function(a4, b4, c6, d4, e8) { function f6(h7) { if (e8 || shouldHandleEvent$$module$build$src$core$touch(h7)) c6 ? d4.call(c6, h7) : d4(h7); } const g4 = []; if (b4 in TOUCH_MAP$$module$build$src$core$touch) for (let h7 = 0; h7 < TOUCH_MAP$$module$build$src$core$touch[b4].length; h7++) { const k4 = TOUCH_MAP$$module$build$src$core$touch[b4][h7]; a4.addEventListener(k4, f6, false); g4.push([a4, k4, f6]); } else a4.addEventListener(b4, f6, false), g4.push([a4, b4, f6]); return g4; }; bind$$module$build$src$core$browser_events = function(a4, b4, c6, d4) { function e8(g4) { c6 ? d4.call(c6, g4) : d4(g4); } const f6 = []; if (b4 in TOUCH_MAP$$module$build$src$core$touch) for (let g4 = 0; g4 < TOUCH_MAP$$module$build$src$core$touch[b4].length; g4++) { const h7 = TOUCH_MAP$$module$build$src$core$touch[b4][g4]; a4.addEventListener(h7, e8, false); f6.push([a4, h7, e8]); } else a4.addEventListener(b4, e8, false), f6.push([a4, b4, e8]); return f6; }; unbind$$module$build$src$core$browser_events = function(a4) { const b4 = a4[a4.length - 1][2]; for (; a4.length; ) { const [c6, d4, e8] = a4.pop(); c6.removeEventListener(d4, e8, false); } return b4; }; isTargetInput$$module$build$src$core$browser_events = function(a4) { if (a4.target instanceof HTMLElement) { if (a4.target.isContentEditable || "true" === a4.target.getAttribute("data-is-text-input")) return true; if (a4.target instanceof HTMLInputElement) return a4 = a4.target, "text" === a4.type || "number" === a4.type || "email" === a4.type || "password" === a4.type || "search" === a4.type || "tel" === a4.type || "url" === a4.type; if (a4.target instanceof HTMLTextAreaElement) return true; } return false; }; isRightButton$$module$build$src$core$browser_events = function(a4) { return a4.ctrlKey && MAC$$module$build$src$core$utils$useragent ? true : 2 === a4.button; }; mouseToSvg$$module$build$src$core$browser_events = function(a4, b4, c6) { const d4 = b4.createSVGPoint(); d4.x = a4.clientX; d4.y = a4.clientY; c6 || (c6 = b4.getScreenCTM().inverse()); return d4.matrixTransform(c6); }; getScrollDeltaPixels$$module$build$src$core$browser_events = function(a4) { switch (a4.deltaMode) { default: return { x: a4.deltaX, y: a4.deltaY }; case 1: return { x: a4.deltaX * LINE_MODE_MULTIPLIER$$module$build$src$core$browser_events, y: a4.deltaY * LINE_MODE_MULTIPLIER$$module$build$src$core$browser_events }; case 2: return { x: a4.deltaX * PAGE_MODE_MULTIPLIER$$module$build$src$core$browser_events, y: a4.deltaY * PAGE_MODE_MULTIPLIER$$module$build$src$core$browser_events }; } }; removeElem$$module$build$src$core$utils$array = function(a4, b4) { b4 = a4.indexOf(b4); if (-1 === b4) return false; a4.splice(b4, 1); return true; }; register$$module$build$src$core$css = function(a4) { if (injected$$module$build$src$core$css) throw Error("CSS already injected"); content$$module$build$src$core$css += "\n" + a4; }; inject$$module$build$src$core$css = function(a4, b4) { injected$$module$build$src$core$css || (injected$$module$build$src$core$css = true, a4 && (a4 = b4.replace(/[\\/]$/, ""), b4 = content$$module$build$src$core$css.replace(/<<<PATH>>>/g, a4), content$$module$build$src$core$css = "", a4 = document.createElement("style"), a4.id = "blockly-common-style", b4 = document.createTextNode(b4), a4.appendChild(b4), document.head.insertBefore(a4, document.head.firstChild))); }; createSvgElement$$module$build$src$core$utils$dom = function(a4, b4, c6) { a4 = document.createElementNS(SVG_NS$$module$build$src$core$utils$dom, `${a4}`); for (const d4 in b4) a4.setAttribute(d4, `${b4[d4]}`); c6 && c6.appendChild(a4); return a4; }; addClass$$module$build$src$core$utils$dom = function(a4, b4) { b4 = b4.split(" "); if (b4.every((c6) => a4.classList.contains(c6))) return fal