@webwriter/block-based-code
Version:
Write block-based code (e.g. Scratch) and run it.
488 lines (487 loc) • 3.64 MB
JavaScript
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