@webwriter/block-based-code
Version:
Write block-based code (e.g. Scratch) and run it.
443 lines (442 loc) • 4.52 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 = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
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 i11 = 0, fns = array[flags >> 1], n10 = fns && fns.length; i11 < n10; i11++) flags & 1 ? fns[i11].call(self2) : value = fns[i11].call(self2, value);
return value;
};
var __decorateElement = (array, flags, name, decorators, target, extra) => {
var fn, it, done, ctx, access, k4 = flags & 7, s7 = !!(flags & 8), p6 = !!(flags & 16);
var j4 = k4 > 3 ? array.length + 1 : k4 ? s7 ? 1 : 2 : 0, key = __decoratorStrings[k4 + 5];
var initializers = k4 > 3 && (array[j4 - 1] = []), extraInitializers = array[j4] || (array[j4] = []);
var desc = k4 && (!p6 && !s7 && (target = target.prototype), k4 < 5 && (k4 > 3 || !p6) && __getOwnPropDesc(k4 < 4 ? target : { get [name]() {
return __privateGet(this, extra);
}, set [name](x4) {
return __privateSet(this, extra, x4);
} }, name));
k4 ? p6 && k4 < 4 && __name(extra, (k4 > 2 ? "set " : k4 > 1 ? "get " : "") + name) : __name(target, name);
for (var i11 = decorators.length - 1; i11 >= 0; i11--) {
ctx = __decoratorContext(k4, name, done = {}, array[3], extraInitializers);
if (k4) {
ctx.static = s7, ctx.private = p6, access = ctx.access = { has: p6 ? (x4) => __privateIn(target, x4) : (x4) => name in x4 };
if (k4 ^ 3) access.get = p6 ? (x4) => (k4 ^ 1 ? __privateGet : __privateMethod)(x4, target, k4 ^ 4 ? extra : desc.get) : (x4) => x4[name];
if (k4 > 2) access.set = p6 ? (x4, y5) => __privateSet(x4, target, y5, k4 ^ 4 ? extra : desc.set) : (x4, y5) => x4[name] = y5;
}
it = (0, decorators[i11])(k4 ? k4 < 4 ? p6 ? 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 ? p6 ? 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), p6 ? 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 $5 = {};
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, warn$$module$build$src$core$utils$deprecation, getNextUniqueId$$module$build$src$core$utils$idgenerator, genUid$$module$build$src$core$utils$idgenerator, isBlockCreate$$module$build$src$core$events$predicates, isBlockDelete$$module$build$src$core$events$predicates, isBlockChange$$module$build$src$core$events$predicates, isBlockFieldIntermediateChange$$module$build$src$core$events$predicates, isBlockMove$$module$build$src$core$events$predicates, isVarCreate$$module$build$src$core$events$predicates, isVarDelete$$module$build$src$core$events$predicates, isVarRename$$module$build$src$core$events$predicates, isBlockDrag$$module$build$src$core$events$predicates, isSelected$$module$build$src$core$events$predicates, isClick$$module$build$src$core$events$predicates, isMarkerMove$$module$build$src$core$events$predicates, isBubbleOpen$$module$build$src$core$events$predicates, isTrashcanOpen$$module$build$src$core$events$predicates, isToolboxItemSelect$$module$build$src$core$events$predicates, isThemeChange$$module$build$src$core$events$predicates, isViewportChange$$module$build$src$core$events$predicates, isCommentCreate$$module$build$src$core$events$predicates, isCommentDelete$$module$build$src$core$events$predicates, isCommentChange$$module$build$src$core$events$predicates, isCommentMove$$module$build$src$core$events$predicates, isCommentResize$$module$build$src$core$events$predicates, isCommentDrag$$module$build$src$core$events$predicates, isCommentCollapse$$module$build$src$core$events$predicates, isFinishedLoading$$module$build$src$core$events$predicates, 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, enqueueEvent$$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, 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, 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, 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, isLegacyProcedureDefBlock$$module$build$src$core$interfaces$i_legacy_procedure_blocks, isLegacyProcedureCallBlock$$module$build$src$core$interfaces$i_legacy_procedure_blocks, isVariableBackedParameterModel$$module$build$src$core$interfaces$i_variable_backed_parameter_model, 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, 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, mouseToWorkspacePoint$$module$build$src$core$utils$drag, start$$module$build$src$core$utils$drag, move$$module$build$src$core$utils$drag, 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, register$$module$build$src$core$field_registry, unregister$$module$build$src$core$field_registry, fromJsonInternal$$module$build$src$core$field_registry, 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, 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, isProcedureBlock$$module$build$src$core$interfaces$i_procedure_block, isObservable$$module$build$src$core$interfaces$i_observable, allProcedures$$module$build$src$core$procedures, procTupleComparator$$module$build$src$core$procedures, 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(a6, b5, c7, d5) {
if (!(a6 instanceof Type$$module$build$src$core$registry) && "string" !== typeof a6 || "" === `${a6}`.trim()) throw Error('Invalid type "' + a6 + '". The type must be a non-empty string or a Blockly.registry.Type.');
a6 = `${a6}`.toLowerCase();
if ("string" !== typeof b5 || "" === b5.trim()) throw Error('Invalid name "' + b5 + '". The name must be a non-empty string.');
const e12 = b5.toLowerCase();
if (!c7) throw Error("Can not register a null value");
let f5 = typeMap$$module$build$src$core$registry[a6], g4 = nameMap$$module$build$src$core$registry[a6];
f5 || (f5 = typeMap$$module$build$src$core$registry[a6] = /* @__PURE__ */ Object.create(null), g4 = nameMap$$module$build$src$core$registry[a6] = /* @__PURE__ */ Object.create(null));
validate$$module$build$src$core$registry(a6, c7);
if (!d5 && f5[e12] && f5[e12] !== c7) throw Error('Name "' + e12 + '" with type "' + a6 + '" already registered.');
f5[e12] = c7;
g4[e12] = b5;
};
validate$$module$build$src$core$registry = function(a6, b5) {
switch (a6) {
case String(Type$$module$build$src$core$registry.FIELD):
if ("function" !== typeof b5.fromJson) throw Error('Type "' + a6 + '" must have a fromJson function');
}
};
unregister$$module$build$src$core$registry = function(a6, b5) {
a6 = `${a6}`.toLowerCase();
b5 = b5.toLowerCase();
const c7 = typeMap$$module$build$src$core$registry[a6];
c7 && c7[b5] ? (delete typeMap$$module$build$src$core$registry[a6][b5], delete nameMap$$module$build$src$core$registry[a6][b5]) : console.warn("Unable to unregister [" + b5 + "][" + a6 + "] from the registry.");
};
getItem$$module$build$src$core$registry = function(a6, b5, c7) {
a6 = `${a6}`.toLowerCase();
b5 = b5.toLowerCase();
const d5 = typeMap$$module$build$src$core$registry[a6];
if (!d5 || !d5[b5]) {
b5 = "Unable to find [" + b5 + "][" + a6 + "] in the registry.";
if (c7) throw Error(b5 + " You must require or register a " + a6 + " plugin.");
console.warn(b5);
return null;
}
return d5[b5];
};
hasItem$$module$build$src$core$registry = function(a6, b5) {
a6 = `${a6}`.toLowerCase();
b5 = b5.toLowerCase();
return (a6 = typeMap$$module$build$src$core$registry[a6]) ? !!a6[b5] : false;
};
getClass$$module$build$src$core$registry = function(a6, b5, c7) {
return getItem$$module$build$src$core$registry(a6, b5, c7);
};
getObject$$module$build$src$core$registry = function(a6, b5, c7) {
return getItem$$module$build$src$core$registry(a6, b5, c7);
};
getAllItems$$module$build$src$core$registry = function(a6, b5, c7) {
a6 = `${a6}`.toLowerCase();
var d5 = typeMap$$module$build$src$core$registry[a6];
if (!d5) {
d5 = `Unable to find [${a6}] in the registry.`;
if (c7) throw Error(`${d5} You must require or register a ${a6} plugin.`);
console.warn(d5);
return null;
}
if (!b5) return d5;
a6 = nameMap$$module$build$src$core$registry[a6];
c7 = /* @__PURE__ */ Object.create(null);
for (const e12 of Object.keys(d5)) c7[a6[e12]] = d5[e12];
return c7;
};
getClassFromOptions$$module$build$src$core$registry = function(a6, b5, c7) {
b5 = b5.plugins[String(a6)] || DEFAULT$$module$build$src$core$registry;
return "function" === typeof b5 ? b5 : getClass$$module$build$src$core$registry(a6, b5, c7);
};
warn$$module$build$src$core$utils$deprecation = function(a6, b5, c7, d5) {
a6 = a6 + " was deprecated in " + b5 + " and will be deleted in " + c7 + ".";
d5 && (a6 += "\nUse " + d5 + " instead.");
previousWarnings$$module$build$src$core$utils$deprecation.has(a6) || (previousWarnings$$module$build$src$core$utils$deprecation.add(a6), console.warn(a6));
};
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();
};
isBlockCreate$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BLOCK_CREATE;
};
isBlockDelete$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BLOCK_DELETE;
};
isBlockChange$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BLOCK_CHANGE;
};
isBlockFieldIntermediateChange$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BLOCK_FIELD_INTERMEDIATE_CHANGE;
};
isBlockMove$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BLOCK_MOVE;
};
isVarCreate$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.VAR_CREATE;
};
isVarDelete$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.VAR_DELETE;
};
isVarRename$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.VAR_RENAME;
};
isBlockDrag$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BLOCK_DRAG;
};
isSelected$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.SELECTED;
};
isClick$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.CLICK;
};
isMarkerMove$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.MARKER_MOVE;
};
isBubbleOpen$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.BUBBLE_OPEN;
};
isTrashcanOpen$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.TRASHCAN_OPEN;
};
isToolboxItemSelect$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.TOOLBOX_ITEM_SELECT;
};
isThemeChange$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.THEME_CHANGE;
};
isViewportChange$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.VIEWPORT_CHANGE;
};
isCommentCreate$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_CREATE;
};
isCommentDelete$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_DELETE;
};
isCommentChange$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_CHANGE;
};
isCommentMove$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_MOVE;
};
isCommentResize$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_RESIZE;
};
isCommentDrag$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_DRAG;
};
isCommentCollapse$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.COMMENT_COLLAPSE;
};
isFinishedLoading$$module$build$src$core$events$predicates = function(a6) {
return a6.type === EventType$$module$build$src$core$events$type.FINISHED_LOADING;
};
$5.setRecordUndo$$module$build$src$core$events$utils = function(a6) {
recordUndo$$module$build$src$core$events$utils = a6;
};
getRecordUndo$$module$build$src$core$events$utils = function() {
return recordUndo$$module$build$src$core$events$utils;
};
fire$$module$build$src$core$events$utils = function(a6) {
TEST_ONLY$$module$build$src$core$events$utils.fireInternal(a6);
};
fireInternal$$module$build$src$core$events$utils = function(a6) {
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 (b5) {
setTimeout(fireNow$$module$build$src$core$events$utils, 0);
}
enqueueEvent$$module$build$src$core$events$utils(a6);
}
};
fireNow$$module$build$src$core$events$utils = function() {
const a6 = 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 (const b5 of a6) {
if (!b5.workspaceId) continue;
let c7;
null == (c7 = getWorkspaceById$$module$build$src$core$common(b5.workspaceId)) || c7.fireChangeListener(b5);
}
};
enqueueEvent$$module$build$src$core$events$utils = function(a6) {
if (isBlockChange$$module$build$src$core$events$predicates(a6) && "mutation" === a6.element) {
let b5;
for (b5 = FIRE_QUEUE$$module$build$src$core$events$utils.length; 0 < b5; b5--) {
const c7 = FIRE_QUEUE$$module$build$src$core$events$utils[b5 - 1];
if (c7.group !== a6.group || c7.workspaceId !== a6.workspaceId || !isBlockMove$$module$build$src$core$events$predicates(c7) || c7.newParentId !== a6.blockId) break;
}
FIRE_QUEUE$$module$build$src$core$events$utils.splice(b5, 0, a6);
} else FIRE_QUEUE$$module$build$src$core$events$utils.push(a6);
};
filter$$module$build$src$core$events$utils = function(a6, b5 = true) {
b5 || (warn$$module$build$src$core$utils$deprecation("filter(queue, /*forward=*/false)", "v11.2", "v12"), a6 = a6.slice().reverse());
const c7 = [];
for (const d5 of a6) if (a6 = c7[c7.length - 1], !d5.isNull()) if (a6 && a6.workspaceId === d5.workspaceId && a6.group === d5.group) if (isBlockMove$$module$build$src$core$events$predicates(d5) && isBlockMove$$module$build$src$core$events$predicates(a6) && d5.blockId === a6.blockId) {
if (a6.newParentId = d5.newParentId, a6.newInputName = d5.newInputName, a6.newCoordinate = d5.newCoordinate, a6.reason || d5.reason) {
let e12, f5;
a6.reason = Array.from(new Set((null != (e12 = a6.reason) ? e12 : []).concat(null != (f5 = d5.reason) ? f5 : [])));
}
} else isBlockChange$$module$build$src$core$events$predicates(d5) && isBlockChange$$module$build$src$core$events$predicates(a6) && d5.blockId === a6.blockId && d5.element === a6.element && d5.name === a6.name ? a6.newValue = d5.newValue : isViewportChange$$module$build$src$core$events$predicates(d5) && isViewportChange$$module$build$src$core$events$predicates(a6) ? (a6.viewTop = d5.viewTop, a6.viewLeft = d5.viewLeft, a6.scale = d5.scale, a6.oldScale = d5.oldScale) : isClick$$module$build$src$core$events$predicates(d5) && isBubbleOpen$$module$build$src$core$events$predicates(a6) || c7.push(d5);
else c7.push(d5);
a6 = c7.filter((d5) => !d5.isNull());
b5 || a6.reverse();
return a6;
};
clearPendingUndo$$module$build$src$core$events$utils = function() {
for (let a6 = 0, b5; b5 = FIRE_QUEUE$$module$build$src$core$events$utils[a6]; a6++) b5.recordUndo = false;
};
$5.disable$$module$build$src$core$events$utils = function() {
disabled$$module$build$src$core$events$utils++;
};
$5.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;
};
$5.getGroup$$module$build$src$core$events$utils = function() {
return group$$module$build$src$core$events$utils;
};
$5.setGroup$$module$build$src$core$events$utils = function(a6) {
TEST_ONLY$$module$build$src$core$events$utils.setGroupInternal(a6);
};
setGroupInternal$$module$build$src$core$events$utils = function(a6) {
group$$module$build$src$core$events$utils = "boolean" === typeof a6 ? a6 ? genUid$$module$build$src$core$utils$idgenerator() : "" : a6;
};
getDescendantIds$$module$build$src$core$events$utils = function(a6) {
const b5 = [];
a6 = a6.getDescendants(false);
for (let c7 = 0, d5; d5 = a6[c7]; c7++) b5[c7] = d5.id;
return b5;
};
fromJson$$module$build$src$core$events$utils = function(a6, b5) {
const c7 = get$$module$build$src$core$events$utils(a6.type);
if (!c7) throw Error("Unknown event type.");
return c7.fromJson(a6, b5);
};
get$$module$build$src$core$events$utils = function(a6) {
const b5 = getClass$$module$build$src$core$registry(Type$$module$build$src$core$registry.EVENT, a6);
if (!b5) throw Error(`Event type ${a6} not found in registry.`);
return b5;
};
disableOrphans$$module$build$src$core$events$utils = function(a6) {
if ((isBlockMove$$module$build$src$core$events$predicates(a6) || isBlockCreate$$module$build$src$core$events$predicates(a6)) && a6.workspaceId) {
var b5 = getWorkspaceById$$module$build$src$core$common(a6.workspaceId);
if (!a6.blockId) throw Error("Encountered a blockEvent without a proper blockId");
if (a6 = b5.getBlockById(a6.blockId)) {
const c7 = recordUndo$$module$build$src$core$events$utils;
try {
recordUndo$$module$build$src$core$events$utils = false;
const d5 = a6.getParent();
if (d5 && !d5.hasDisabledReason(ORPHANED_BLOCK_DISABLED_REASON$$module$build$src$core$events$utils)) {
const e12 = a6.getDescendants(false);
for (let f5 = 0, g4; g4 = e12[f5]; f5++) g4.setDisabledReason(false, ORPHANED_BLOCK_DISABLED_REASON$$module$build$src$core$events$utils);
} else if ((a6.outputConnection || a6.previousConnection) && !b5.isDragging()) {
do
a6.setDisabledReason(true, ORPHANED_BLOCK_DISABLED_REASON$$module$build$src$core$events$utils), a6 = a6.getNextBlock();
while (a6);
}
} finally {
recordUndo$$module$build$src$core$events$utils = c7;
}
}
}
};
getWorkspaceById$$module$build$src$core$common = function(a6) {
return WorkspaceDB_$$module$build$src$core$common[a6] || null;
};
getAllWorkspaces$$module$build$src$core$common = function() {
const a6 = [];
for (const b5 in WorkspaceDB_$$module$build$src$core$common) a6.push(WorkspaceDB_$$module$build$src$core$common[b5]);
return a6;
};
registerWorkspace$$module$build$src$core$common = function(a6) {
WorkspaceDB_$$module$build$src$core$common[a6.id] = a6;
};
unregisterWorkpace$$module$build$src$core$common = function(a6) {
delete WorkspaceDB_$$module$build$src$core$common[a6.id];
};
getMainWorkspace$$module$build$src$core$common = function() {
return mainWorkspace$$module$build$src$core$common;
};
setMainWorkspace$$module$build$src$core$common = function(a6) {
mainWorkspace$$module$build$src$core$common = a6;
};
getSelected$$module$build$src$core$common = function() {
return selected$$module$build$src$core$common;
};
$5.setSelected$$module$build$src$core$common = function(a6) {
if (selected$$module$build$src$core$common !== a6) {
var b5, c7, d5, e12, f5, g4, h6 = new (get$$module$build$src$core$events$utils(EventType$$module$build$src$core$events$type.SELECTED))(null != (d5 = null == (b5 = selected$$module$build$src$core$common) ? void 0 : b5.id) ? d5 : null, null != (e12 = null == a6 ? void 0 : a6.id) ? e12 : null, null != (g4 = null != (f5 = null == a6 ? void 0 : a6.workspace.id) ? f5 : null == (c7 = selected$$module$build$src$core$common) ? void 0 : c7.workspace.id) ? g4 : "");
fire$$module$build$src$core$events$utils(h6);
var k4;
null == (k4 = selected$$module$build$src$core$common) || k4.unselect();
selected$$module$build$src$core$common = a6;
var l8;
null == (l8 = selected$$module$build$src$core$common) || l8.select();
}
};
getParentContainer$$module$build$src$core$common = function() {
return parentContainer$$module$build$src$core$common;
};
setParentContainer$$module$build$src$core$common = function(a6) {
parentContainer$$module$build$src$core$common = a6;
};
svgResize$$module$build$src$core$common = function(a6) {
for (; a6.options.parentWorkspace; ) a6 = a6.options.parentWorkspace;
const b5 = a6.getParentSvg(), c7 = a6.getCachedParentSvgSize();
var d5 = b5.parentElement;
if (d5 instanceof HTMLElement) {
var e12 = d5.offsetWidth;
d5 = d5.offsetHeight;
c7.width !== e12 && (b5.setAttribute("width", e12 + "px"), a6.setCachedParentSvgSize(e12, null));
c7.height !== d5 && (b5.setAttribute("height", d5 + "px"), a6.setCachedParentSvgSize(null, d5));
a6.resize();
}
};
getBlockTypeCounts$$module$build$src$core$common = function(a6, b5) {
const c7 = /* @__PURE__ */ Object.create(null), d5 = a6.getDescendants(true);
b5 && (a6 = a6.getNextBlock()) && (a6 = d5.indexOf(a6), d5.splice(a6, d5.length - a6));
for (let e12 = 0, f5; f5 = d5[e12]; e12++) c7[f5.type] ? c7[f5.type]++ : c7[f5.type] = 1;
return c7;
};
jsonInitFactory$$module$build$src$core$common = function(a6) {
return function() {
this.jsonInit(a6);
};
};
defineBlocksWithJsonArray$$module$build$src$core$common = function(a6) {
TEST_ONLY$$module$build$src$core$common.defineBlocksWithJsonArrayInternal(a6);
};
defineBlocksWithJsonArrayInternal$$module$build$src$core$common = function(a6) {
$5.defineBlocks$$module$build$src$core$common($5.createBlockDefinitionsFromJsonArray$$module$build$src$core$common(a6));
};
$5.createBlockDefinitionsFromJsonArray$$module$build$src$core$common = function(a6) {
const b5 = {};
for (let c7 = 0; c7 < a6.length; c7++) {
const d5 = a6[c7];
if (!d5) {
console.warn(`Block definition #${c7} in JSON array is ${d5}. Skipping`);
continue;
}
const e12 = d5.type;
e12 ? b5[e12] = { init: jsonInitFactory$$module$build$src$core$common(d5) } : console.warn(`Block definition #${c7} in JSON array is missing a type attribute. Skipping.`);
}
return b5;
};
$5.defineBlocks$$mo