diff --git a/core/blockly.js b/core/blockly.js index e393ebc4686..da363625790 100644 --- a/core/blockly.js +++ b/core/blockly.js @@ -40,6 +40,7 @@ const common = goog.require('Blockly.common'); const constants = goog.require('Blockly.constants'); const deprecation = goog.require('Blockly.utils.deprecation'); const dialog = goog.require('Blockly.dialog'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const fieldRegistry = goog.require('Blockly.fieldRegistry'); const geras = goog.require('Blockly.geras'); const internalConstants = goog.require('Blockly.internalConstants'); @@ -80,7 +81,6 @@ const {ContextMenuRegistry} = goog.require('Blockly.ContextMenuRegistry'); const {Cursor} = goog.require('Blockly.Cursor'); const {DeleteArea} = goog.require('Blockly.DeleteArea'); const {DragTarget} = goog.require('Blockly.DragTarget'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {FieldAngle} = goog.require('Blockly.FieldAngle'); const {FieldCheckbox} = goog.require('Blockly.FieldCheckbox'); const {FieldColour} = goog.require('Blockly.FieldColour'); @@ -332,7 +332,7 @@ exports.defineBlocksWithJsonArray = common.defineBlocksWithJsonArray; /** * Set the parent container. This is the container element that the WidgetDiv, - * DropDownDiv, and Tooltip are rendered into the first time `Blockly.inject` + * dropDownDiv, and Tooltip are rendered into the first time `Blockly.inject` * is called. * This method is a NOP if called after the first ``Blockly.inject``. * @param {!Element} container The container element. @@ -715,7 +715,7 @@ exports.Css = Css; exports.Cursor = Cursor; exports.DeleteArea = DeleteArea; exports.DragTarget = DragTarget; -exports.DropDownDiv = DropDownDiv; +exports.DropDownDiv = dropDownDiv; exports.Events = Events; exports.Extensions = Extensions; exports.Field = Field; diff --git a/core/dropdowndiv.js b/core/dropdowndiv.js index a22baa944dc..9c4661bae21 100644 --- a/core/dropdowndiv.js +++ b/core/dropdowndiv.js @@ -16,7 +16,7 @@ * A div that floats on top of the workspace, for drop-down menus. * @class */ -goog.module('Blockly.DropDownDiv'); +goog.module('Blockly.dropDownDiv'); const common = goog.require('Blockly.common'); const dom = goog.require('Blockly.utils.dom'); @@ -33,21 +33,14 @@ const {Size} = goog.requireType('Blockly.utils.Size'); const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg'); -/** - * Class for drop-down div. - * @constructor - * @package - * @alias Blockly.DropDownDiv - */ -const DropDownDiv = function() {}; - /** * Arrow size in px. Should match the value in CSS * (need to position pre-render). * @type {number} * @const */ -DropDownDiv.ARROW_SIZE = 16; +const ARROW_SIZE = 16; +exports.ARROW_SIZE = ARROW_SIZE; /** * Drop-down border size in px. Should match the value in CSS (need to position @@ -55,7 +48,8 @@ DropDownDiv.ARROW_SIZE = 16; * @type {number} * @const */ -DropDownDiv.BORDER_SIZE = 1; +const BORDER_SIZE = 1; +exports.BORDER_SIZE = BORDER_SIZE; /** * Amount the arrow must be kept away from the edges of the main drop-down div, @@ -63,93 +57,86 @@ DropDownDiv.BORDER_SIZE = 1; * @type {number} * @const */ -DropDownDiv.ARROW_HORIZONTAL_PADDING = 12; +const ARROW_HORIZONTAL_PADDING = 12; +exports.ARROW_HORIZONTAL_PADDING = ARROW_HORIZONTAL_PADDING; /** * Amount drop-downs should be padded away from the source, in px. * @type {number} * @const */ -DropDownDiv.PADDING_Y = 16; +const PADDING_Y = 16; +exports.PADDING_Y = PADDING_Y; /** * Length of animations in seconds. * @type {number} * @const */ -DropDownDiv.ANIMATION_TIME = 0.25; +const ANIMATION_TIME = 0.25; +exports.ANIMATION_TIME = ANIMATION_TIME; /** * Timer for animation out, to be cleared if we need to immediately hide * without disrupting new shows. * @type {?number} - * @private */ -DropDownDiv.animateOutTimer_ = null; +let animateOutTimer = null; /** * Callback for when the drop-down is hidden. * @type {?Function} - * @private */ -DropDownDiv.onHide_ = null; +let onHide = null; /** * A class name representing the current owner's workspace renderer. * @type {string} - * @private */ -DropDownDiv.rendererClassName_ = ''; +let renderedClassName = ''; /** * A class name representing the current owner's workspace theme. * @type {string} - * @private */ -DropDownDiv.themeClassName_ = ''; +let themeClassName = ''; /** * The content element. * @type {!Element} - * @private */ -DropDownDiv.DIV_; +let div; /** * The content element. * @type {!Element} - * @private */ -DropDownDiv.content_; +let content; /** * The arrow element. * @type {!Element} - * @private */ -DropDownDiv.arrow_; +let arrow; /** * Drop-downs will appear within the bounds of this element if possible. - * Set in DropDownDiv.setBoundsElement. + * Set in setBoundsElement. * @type {?Element} - * @private */ -DropDownDiv.boundsElement_ = null; +let boundsElement = null; /** * The object currently using the drop-down. * @type {?Object} - * @private */ -DropDownDiv.owner_ = null; +let owner = null; /** * Whether the dropdown was positioned to a field or the source block. * @type {?boolean} - * @private */ -DropDownDiv.positionToField_ = null; +let positionToField = null; /** * Dropdown bounds info object used to encapsulate sizing information about a @@ -163,7 +150,8 @@ DropDownDiv.positionToField_ = null; * height:number * }} */ -DropDownDiv.BoundsInfo; +let BoundsInfo; +exports.BoundsInfo = BoundsInfo; /** * Dropdown position metrics. @@ -178,84 +166,85 @@ DropDownDiv.BoundsInfo; * arrowVisible:boolean * }} */ -DropDownDiv.PositionMetrics; +let PositionMetrics; +exports.PositionMetrics = PositionMetrics; /** * Create and insert the DOM element for this div. * @package */ -DropDownDiv.createDom = function() { - if (DropDownDiv.DIV_) { +const createDom = function() { + if (div) { return; // Already created. } - const containerDiv = document.createElement('div'); - containerDiv.className = 'blocklyDropDownDiv'; + div = document.createElement('div'); + div.className = 'blocklyDropDownDiv'; const parentDiv = common.getParentContainer() || document.body; - parentDiv.appendChild(containerDiv); - - DropDownDiv.DIV_ = containerDiv; + parentDiv.appendChild(div); - const content = document.createElement('div'); + content = document.createElement('div'); content.className = 'blocklyDropDownContent'; - DropDownDiv.DIV_.appendChild(content); - DropDownDiv.content_ = content; + div.appendChild(content); - const arrow = document.createElement('div'); + arrow = document.createElement('div'); arrow.className = 'blocklyDropDownArrow'; - DropDownDiv.DIV_.appendChild(arrow); - DropDownDiv.arrow_ = arrow; + div.appendChild(arrow); - DropDownDiv.DIV_.style.opacity = 0; + div.style.opacity = 0; // Transition animation for transform: translate() and opacity. - DropDownDiv.DIV_.style.transition = 'transform ' + - DropDownDiv.ANIMATION_TIME + 's, ' + - 'opacity ' + DropDownDiv.ANIMATION_TIME + 's'; + div.style.transition = 'transform ' + ANIMATION_TIME + 's, ' + + 'opacity ' + ANIMATION_TIME + 's'; // Handle focusin/out events to add a visual indicator when // a child is focused or blurred. - DropDownDiv.DIV_.addEventListener('focusin', function() { - dom.addClass(DropDownDiv.DIV_, 'blocklyFocused'); + div.addEventListener('focusin', function() { + dom.addClass(div, 'blocklyFocused'); }); - DropDownDiv.DIV_.addEventListener('focusout', function() { - dom.removeClass(DropDownDiv.DIV_, 'blocklyFocused'); + div.addEventListener('focusout', function() { + dom.removeClass(div, 'blocklyFocused'); }); }; +exports.createDom = createDom; /** * Set an element to maintain bounds within. Drop-downs will appear * within the box of this element if possible. - * @param {?Element} boundsElement Element to bind drop-down to. + * @param {?Element} boundsElem Element to bind drop-down to. */ -DropDownDiv.setBoundsElement = function(boundsElement) { - DropDownDiv.boundsElement_ = boundsElement; +const setBoundsElement = function(boundsElem) { + boundsElement = boundsElem; }; +exports.setBoundsElement = setBoundsElement; /** * Provide the div for inserting content into the drop-down. * @return {!Element} Div to populate with content. */ -DropDownDiv.getContentDiv = function() { - return DropDownDiv.content_; +const getContentDiv = function() { + return content; }; +exports.getContentDiv = getContentDiv; /** * Clear the content of the drop-down. */ -DropDownDiv.clearContent = function() { - DropDownDiv.content_.textContent = ''; - DropDownDiv.content_.style.width = ''; +const clearContent = function() { + content.textContent = ''; + content.style.width = ''; }; +exports.clearContent = clearContent; /** * Set the colour for the drop-down. * @param {string} backgroundColour Any CSS colour for the background. * @param {string} borderColour Any CSS colour for the border. */ -DropDownDiv.setColour = function(backgroundColour, borderColour) { - DropDownDiv.DIV_.style.backgroundColor = backgroundColour; - DropDownDiv.DIV_.style.borderColor = borderColour; +const setColour = function(backgroundColour, borderColour) { + div.style.backgroundColor = backgroundColour; + div.style.borderColor = borderColour; }; +exports.setColour = setColour; /** * Shortcut to show and place the drop-down with positioning determined @@ -270,11 +259,12 @@ DropDownDiv.setColour = function(backgroundColour, borderColour) { * positioning. * @return {boolean} True if the menu rendered below block; false if above. */ -DropDownDiv.showPositionedByBlock = function( +const showPositionedByBlock = function( field, block, opt_onHide, opt_secondaryYOffset) { return showPositionedByRect( getScaledBboxOfBlock(block), field, opt_onHide, opt_secondaryYOffset); }; +exports.showPositionedByBlock = showPositionedByBlock; /** * Shortcut to show and place the drop-down with positioning determined @@ -288,14 +278,13 @@ DropDownDiv.showPositionedByBlock = function( * positioning. * @return {boolean} True if the menu rendered below block; false if above. */ -DropDownDiv.showPositionedByField = function( +const showPositionedByField = function( field, opt_onHide, opt_secondaryYOffset) { - DropDownDiv.positionToField_ = true; + positionToField = true; return showPositionedByRect( getScaledBboxOfField(field), field, opt_onHide, opt_secondaryYOffset); }; - -const internal = {}; +exports.showPositionedByField = showPositionedByField; /** * Get the scaled bounding box of a block. @@ -353,9 +342,9 @@ const showPositionedByRect = function( workspace = /** @type {!WorkspaceSvg} */ (workspace.options.parentWorkspace); } - DropDownDiv.setBoundsElement( + setBoundsElement( /** @type {?Element} */ (workspace.getParentSvg().parentNode)); - return DropDownDiv.show( + return show( field, sourceBlock.RTL, primaryX, primaryY, secondaryX, secondaryY, opt_onHide); }; @@ -368,7 +357,7 @@ const showPositionedByRect = function( * will point there, and the container will be positioned below it. * If we can't maintain the container bounds at the primary point, fall-back to * the secondary point and position above. - * @param {?Object} owner The object showing the drop-down + * @param {?Object} newOwner The object showing the drop-down * @param {boolean} rtl Right-to-left (true) or left-to-right (false). * @param {number} primaryX Desired origin point x, in absolute px. * @param {number} primaryY Desired origin point y, in absolute px. @@ -381,20 +370,19 @@ const showPositionedByRect = function( * @return {boolean} True if the menu rendered at the primary origin point. * @package */ -DropDownDiv.show = function( - owner, rtl, primaryX, primaryY, secondaryX, secondaryY, opt_onHide) { - DropDownDiv.owner_ = owner; - DropDownDiv.onHide_ = opt_onHide || null; +const show = function( + newOwner, rtl, primaryX, primaryY, secondaryX, secondaryY, opt_onHide) { + owner = newOwner; + onHide = opt_onHide || null; // Set direction. - const div = DropDownDiv.DIV_; div.style.direction = rtl ? 'rtl' : 'ltr'; const mainWorkspace = /** @type {!WorkspaceSvg} */ (common.getMainWorkspace()); - DropDownDiv.rendererClassName_ = mainWorkspace.getRenderer().getClassName(); - DropDownDiv.themeClassName_ = mainWorkspace.getTheme().getClassName(); - dom.addClass(div, DropDownDiv.rendererClassName_); - dom.addClass(div, DropDownDiv.themeClassName_); + renderedClassName = mainWorkspace.getRenderer().getClassName(); + themeClassName = mainWorkspace.getTheme().getClassName(); + dom.addClass(div, renderedClassName); + dom.addClass(div, themeClassName); // When we change `translate` multiple times in close succession, // Chrome may choose to wait and apply them all at once. @@ -407,17 +395,20 @@ DropDownDiv.show = function( return positionInternal(primaryX, primaryY, secondaryX, secondaryY); }; +exports.show = show; + +const internal = {}; /** * Get sizing info about the bounding element. - * @return {!DropDownDiv.BoundsInfo} An object containing size + * @return {!BoundsInfo} An object containing size * information about the bounding element (bounding box and width/height). */ internal.getBoundsInfo = function() { const boundPosition = style.getPageOffset( - /** @type {!Element} */ (DropDownDiv.boundsElement_)); + /** @type {!Element} */ (boundsElement)); const boundSize = style.getSize( - /** @type {!Element} */ (DropDownDiv.boundsElement_)); + /** @type {!Element} */ (boundsElement)); return { left: boundPosition.x, @@ -431,21 +422,21 @@ internal.getBoundsInfo = function() { /** * Helper to position the drop-down and the arrow, maintaining bounds. - * See explanation of origin points in DropDownDiv.show. + * See explanation of origin points in show. * @param {number} primaryX Desired origin point x, in absolute px. * @param {number} primaryY Desired origin point y, in absolute px. * @param {number} secondaryX Secondary/alternative origin point x, * in absolute px. * @param {number} secondaryY Secondary/alternative origin point y, * in absolute px. - * @return {!DropDownDiv.PositionMetrics} Various final metrics, + * @return {!PositionMetrics} Various final metrics, * including rendered positions for drop-down and arrow. */ internal.getPositionMetrics = function( primaryX, primaryY, secondaryX, secondaryY) { const boundsInfo = internal.getBoundsInfo(); const divSize = style.getSize( - /** @type {!Element} */ (DropDownDiv.DIV_)); + /** @type {!Element} */ (div)); // Can we fit in-bounds below the target? if (primaryY + divSize.height < boundsInfo.bottom) { @@ -472,20 +463,20 @@ internal.getPositionMetrics = function( * Get the metrics for positioning the div below the source. * @param {number} primaryX Desired origin point x, in absolute px. * @param {number} primaryY Desired origin point y, in absolute px. - * @param {!DropDownDiv.BoundsInfo} boundsInfo An object containing size + * @param {!BoundsInfo} boundsInfo An object containing size * information about the bounding element (bounding box and width/height). * @param {!Size} divSize An object containing information about * the size of the DropDownDiv (width & height). - * @return {!DropDownDiv.PositionMetrics} Various final metrics, + * @return {!PositionMetrics} Various final metrics, * including rendered positions for drop-down and arrow. */ const getPositionBelowMetrics = function( primaryX, primaryY, boundsInfo, divSize) { - const xCoords = DropDownDiv.getPositionX( - primaryX, boundsInfo.left, boundsInfo.right, divSize.width); + const xCoords = + getPositionX(primaryX, boundsInfo.left, boundsInfo.right, divSize.width); - const arrowY = -(DropDownDiv.ARROW_SIZE / 2 + DropDownDiv.BORDER_SIZE); - const finalY = primaryY + DropDownDiv.PADDING_Y; + const arrowY = -(ARROW_SIZE / 2 + BORDER_SIZE); + const finalY = primaryY + PADDING_Y; return { initialX: xCoords.divX, @@ -505,21 +496,20 @@ const getPositionBelowMetrics = function( * in absolute px. * @param {number} secondaryY Secondary/alternative origin point y, * in absolute px. - * @param {!DropDownDiv.BoundsInfo} boundsInfo An object containing size + * @param {!BoundsInfo} boundsInfo An object containing size * information about the bounding element (bounding box and width/height). * @param {!Size} divSize An object containing information about * the size of the DropDownDiv (width & height). - * @return {!DropDownDiv.PositionMetrics} Various final metrics, + * @return {!PositionMetrics} Various final metrics, * including rendered positions for drop-down and arrow. */ const getPositionAboveMetrics = function( secondaryX, secondaryY, boundsInfo, divSize) { - const xCoords = DropDownDiv.getPositionX( + const xCoords = getPositionX( secondaryX, boundsInfo.left, boundsInfo.right, divSize.width); - const arrowY = divSize.height - (DropDownDiv.BORDER_SIZE * 2) - - (DropDownDiv.ARROW_SIZE / 2); - const finalY = secondaryY - divSize.height - DropDownDiv.PADDING_Y; + const arrowY = divSize.height - (BORDER_SIZE * 2) - (ARROW_SIZE / 2); + const finalY = secondaryY - divSize.height - PADDING_Y; const initialY = secondaryY - divSize.height; // No padding on Y. return { @@ -537,16 +527,16 @@ const getPositionAboveMetrics = function( /** * Get the metrics for positioning the div at the top of the page. * @param {number} sourceX Desired origin point x, in absolute px. - * @param {!DropDownDiv.BoundsInfo} boundsInfo An object containing size + * @param {!BoundsInfo} boundsInfo An object containing size * information about the bounding element (bounding box and width/height). * @param {!Size} divSize An object containing information about * the size of the DropDownDiv (width & height). - * @return {!DropDownDiv.PositionMetrics} Various final metrics, + * @return {!PositionMetrics} Various final metrics, * including rendered positions for drop-down and arrow. */ const getPositionTopOfPageMetrics = function(sourceX, boundsInfo, divSize) { - const xCoords = DropDownDiv.getPositionX( - sourceX, boundsInfo.left, boundsInfo.right, divSize.width); + const xCoords = + getPositionX(sourceX, boundsInfo.left, boundsInfo.right, divSize.width); // No need to provide arrow-specific information because it won't be visible. return { @@ -574,8 +564,7 @@ const getPositionTopOfPageMetrics = function(sourceX, boundsInfo, divSize) { * the x positions of the left side of the DropDownDiv and the arrow. * @package */ -DropDownDiv.getPositionX = function( - sourceX, boundsLeft, boundsRight, divWidth) { +const getPositionX = function(sourceX, boundsLeft, boundsRight, divWidth) { let divX = sourceX; // Offset the topLeft coord so that the dropdowndiv is centered. divX -= divWidth / 2; @@ -584,77 +573,79 @@ DropDownDiv.getPositionX = function( let arrowX = sourceX; // Offset the arrow coord so that the arrow is centered. - arrowX -= DropDownDiv.ARROW_SIZE / 2; + arrowX -= ARROW_SIZE / 2; // Convert the arrow position to be relative to the top left of the div. let relativeArrowX = arrowX - divX; - const horizPadding = DropDownDiv.ARROW_HORIZONTAL_PADDING; + const horizPadding = ARROW_HORIZONTAL_PADDING; // Clamp the arrow position so that it stays attached to the dropdowndiv. relativeArrowX = math.clamp( - horizPadding, relativeArrowX, - divWidth - horizPadding - DropDownDiv.ARROW_SIZE); + horizPadding, relativeArrowX, divWidth - horizPadding - ARROW_SIZE); return {arrowX: relativeArrowX, divX: divX}; }; +exports.getPositionX = getPositionX; /** * Is the container visible? * @return {boolean} True if visible. */ -DropDownDiv.isVisible = function() { - return !!DropDownDiv.owner_; +const isVisible = function() { + return !!owner; }; +exports.isVisible = isVisible; /** * Hide the menu only if it is owned by the provided object. - * @param {?Object} owner Object which must be owning the drop-down to hide. + * @param {?Object} divOwner Object which must be owning the drop-down to hide. * @param {boolean=} opt_withoutAnimation True if we should hide the dropdown * without animating. * @return {boolean} True if hidden. */ -DropDownDiv.hideIfOwner = function(owner, opt_withoutAnimation) { - if (DropDownDiv.owner_ === owner) { +const hideIfOwner = function(divOwner, opt_withoutAnimation) { + if (owner === divOwner) { if (opt_withoutAnimation) { - DropDownDiv.hideWithoutAnimation(); + hideWithoutAnimation(); } else { - DropDownDiv.hide(); + hide(); } return true; } return false; }; +exports.hideIfOwner = hideIfOwner; /** * Hide the menu, triggering animation. */ -DropDownDiv.hide = function() { +const hide = function() { // Start the animation by setting the translation and fading out. // Reset to (initialX, initialY) - i.e., no translation. - DropDownDiv.DIV_.style.transform = 'translate(0, 0)'; - DropDownDiv.DIV_.style.opacity = 0; + div.style.transform = 'translate(0, 0)'; + div.style.opacity = 0; // Finish animation - reset all values to default. - DropDownDiv.animateOutTimer_ = setTimeout(function() { - DropDownDiv.hideWithoutAnimation(); - }, DropDownDiv.ANIMATION_TIME * 1000); - if (DropDownDiv.onHide_) { - DropDownDiv.onHide_(); - DropDownDiv.onHide_ = null; + animateOutTimer = setTimeout(function() { + hideWithoutAnimation(); + }, ANIMATION_TIME * 1000); + if (onHide) { + onHide(); + onHide = null; } }; +exports.hide = hide; /** * Hide the menu, without animation. */ -DropDownDiv.hideWithoutAnimation = function() { - if (!DropDownDiv.isVisible()) { +const hideWithoutAnimation = function() { + if (!isVisible()) { return; } - if (DropDownDiv.animateOutTimer_) { - clearTimeout(DropDownDiv.animateOutTimer_); + if (animateOutTimer) { + clearTimeout(animateOutTimer); } // Reset style properties in case this gets called directly // instead of hide() - see discussion on #2551. - const div = DropDownDiv.DIV_; div.style.transform = ''; div.style.left = ''; div.style.top = ''; @@ -663,23 +654,24 @@ DropDownDiv.hideWithoutAnimation = function() { div.style.backgroundColor = ''; div.style.borderColor = ''; - if (DropDownDiv.onHide_) { - DropDownDiv.onHide_(); - DropDownDiv.onHide_ = null; + if (onHide) { + onHide(); + onHide = null; } - DropDownDiv.clearContent(); - DropDownDiv.owner_ = null; + clearContent(); + owner = null; - if (DropDownDiv.rendererClassName_) { - dom.removeClass(div, DropDownDiv.rendererClassName_); - DropDownDiv.rendererClassName_ = ''; + if (renderedClassName) { + dom.removeClass(div, renderedClassName); + renderedClassName = ''; } - if (DropDownDiv.themeClassName_) { - dom.removeClass(div, DropDownDiv.themeClassName_); - DropDownDiv.themeClassName_ = ''; + if (themeClassName) { + dom.removeClass(div, themeClassName); + themeClassName = ''; } (/** @type {!WorkspaceSvg} */ (common.getMainWorkspace())).markFocused(); }; +exports.hideWithoutAnimation = hideWithoutAnimation; /** * Set the dropdown div's position. @@ -697,15 +689,15 @@ const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) { // Update arrow CSS. if (metrics.arrowVisible) { - DropDownDiv.arrow_.style.display = ''; - DropDownDiv.arrow_.style.transform = 'translate(' + metrics.arrowX + 'px,' + + arrow.style.display = ''; + arrow.style.transform = 'translate(' + metrics.arrowX + 'px,' + metrics.arrowY + 'px) rotate(45deg)'; - DropDownDiv.arrow_.setAttribute( + arrow.setAttribute( 'class', metrics.arrowAtTop ? 'blocklyDropDownArrow blocklyArrowTop' : 'blocklyDropDownArrow blocklyArrowBottom'); } else { - DropDownDiv.arrow_.style.display = 'none'; + arrow.style.display = 'none'; } const initialX = Math.floor(metrics.initialX); @@ -713,7 +705,6 @@ const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) { const finalX = Math.floor(metrics.finalX); const finalY = Math.floor(metrics.finalY); - const div = DropDownDiv.DIV_; // First apply initial translation. div.style.left = initialX + 'px'; div.style.top = initialY + 'px'; @@ -736,17 +727,17 @@ const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) { * calculate the new position, it will just hide it instead. * @package */ -DropDownDiv.repositionForWindowResize = function() { +const repositionForWindowResize = function() { // This condition mainly catches the dropdown div when it is being used as a // dropdown. It is important not to close it in this case because on Android, // when a field is focused, the soft keyboard opens triggering a window resize // event and we want the dropdown div to stick around so users can type into // it. - if (DropDownDiv.owner_) { - const field = /** @type {!Field} */ (DropDownDiv.owner_); + if (owner) { + const field = /** @type {!Field} */ (owner); const block = /** @type {!BlockSvg} */ (field.getSourceBlock()); - const bBox = DropDownDiv.positionToField_ ? getScaledBboxOfField(field) : - getScaledBboxOfBlock(block); + const bBox = positionToField ? getScaledBboxOfField(field) : + getScaledBboxOfBlock(block); // If we can fit it, render below the block. const primaryX = bBox.left + (bBox.right - bBox.left) / 2; const primaryY = bBox.bottom; @@ -755,10 +746,9 @@ DropDownDiv.repositionForWindowResize = function() { const secondaryY = bBox.top; positionInternal(primaryX, primaryY, secondaryX, secondaryY); } else { - DropDownDiv.hide(); + hide(); } }; +exports.repositionForWindowResize = repositionForWindowResize; -DropDownDiv.TEST_ONLY = internal; - -exports.DropDownDiv = DropDownDiv; +exports.TEST_ONLY = internal; diff --git a/core/field.js b/core/field.js index 7b8daf0dea0..9fafeba3927 100644 --- a/core/field.js +++ b/core/field.js @@ -24,6 +24,7 @@ const WidgetDiv = goog.require('Blockly.WidgetDiv'); const Xml = goog.require('Blockly.Xml'); const browserEvents = goog.require('Blockly.browserEvents'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const eventUtils = goog.require('Blockly.Events.utils'); const parsing = goog.require('Blockly.utils.parsing'); const style = goog.require('Blockly.utils.style'); @@ -37,7 +38,6 @@ const {Block} = goog.requireType('Blockly.Block'); const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider'); /* eslint-disable-next-line no-unused-vars */ const {Coordinate} = goog.requireType('Blockly.utils.Coordinate'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); /* eslint-disable-next-line no-unused-vars */ const {IASTNodeLocationSvg} = goog.require('Blockly.IASTNodeLocationSvg'); /* eslint-disable-next-line no-unused-vars */ @@ -513,7 +513,7 @@ class Field { * @package */ dispose() { - DropDownDiv.hideIfOwner(this); + dropDownDiv.hideIfOwner(this); WidgetDiv.hideIfOwner(this); Tooltip.unbindMouseEvents(this.getClickTarget_()); diff --git a/core/field_angle.js b/core/field_angle.js index ea498fcad2e..63c31fa4722 100644 --- a/core/field_angle.js +++ b/core/field_angle.js @@ -19,10 +19,10 @@ const Css = goog.require('Blockly.Css'); const WidgetDiv = goog.require('Blockly.WidgetDiv'); const browserEvents = goog.require('Blockly.browserEvents'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const fieldRegistry = goog.require('Blockly.fieldRegistry'); const math = goog.require('Blockly.utils.math'); const userAgent = goog.require('Blockly.utils.userAgent'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Field} = goog.require('Blockly.Field'); const {FieldTextInput} = goog.require('Blockly.FieldTextInput'); const {KeyCodes} = goog.require('Blockly.utils.KeyCodes'); @@ -234,13 +234,13 @@ class FieldAngle extends FieldTextInput { super.showEditor_(opt_e, noFocus); this.dropdownCreate_(); - DropDownDiv.getContentDiv().appendChild(this.editor_); + dropDownDiv.getContentDiv().appendChild(this.editor_); - DropDownDiv.setColour( + dropDownDiv.setColour( this.sourceBlock_.style.colourPrimary, this.sourceBlock_.style.colourTertiary); - DropDownDiv.showPositionedByField(this, this.dropdownDispose_.bind(this)); + dropDownDiv.showPositionedByField(this, this.dropdownDispose_.bind(this)); this.updateGraph_(); } @@ -335,7 +335,7 @@ class FieldAngle extends FieldTextInput { * @private */ hide_() { - DropDownDiv.hideIfOwner(this); + dropDownDiv.hideIfOwner(this); WidgetDiv.hide(); } diff --git a/core/field_colour.js b/core/field_colour.js index a2d11c3f2f5..48608ca7c94 100644 --- a/core/field_colour.js +++ b/core/field_colour.js @@ -20,9 +20,9 @@ const aria = goog.require('Blockly.utils.aria'); const browserEvents = goog.require('Blockly.browserEvents'); const colour = goog.require('Blockly.utils.colour'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const fieldRegistry = goog.require('Blockly.fieldRegistry'); const idGenerator = goog.require('Blockly.utils.idGenerator'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Field} = goog.require('Blockly.Field'); const {KeyCodes} = goog.require('Blockly.utils.KeyCodes'); /* eslint-disable-next-line no-unused-vars */ @@ -280,9 +280,9 @@ class FieldColour extends Field { */ showEditor_() { this.dropdownCreate_(); - DropDownDiv.getContentDiv().appendChild(this.picker_); + dropDownDiv.getContentDiv().appendChild(this.picker_); - DropDownDiv.showPositionedByField(this, this.dropdownDispose_.bind(this)); + dropDownDiv.showPositionedByField(this, this.dropdownDispose_.bind(this)); // Focus so we can start receiving keyboard events. this.picker_.focus({preventScroll: true}); @@ -298,7 +298,7 @@ class FieldColour extends Field { const colour = cell && cell.label; if (colour !== null) { this.setValue(colour); - DropDownDiv.hideIfOwner(this); + dropDownDiv.hideIfOwner(this); } } @@ -331,7 +331,7 @@ class FieldColour extends Field { this.setValue(colour); } } - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); handled = true; } if (handled) { diff --git a/core/field_dropdown.js b/core/field_dropdown.js index 307578db903..715ca17303a 100644 --- a/core/field_dropdown.js +++ b/core/field_dropdown.js @@ -21,12 +21,12 @@ goog.module('Blockly.FieldDropdown'); const aria = goog.require('Blockly.utils.aria'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const fieldRegistry = goog.require('Blockly.fieldRegistry'); const parsing = goog.require('Blockly.utils.parsing'); const userAgent = goog.require('Blockly.utils.userAgent'); const utilsString = goog.require('Blockly.utils.string'); const {Coordinate} = goog.require('Blockly.utils.Coordinate'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Field} = goog.require('Blockly.Field'); const {MenuItem} = goog.require('Blockly.MenuItem'); const {Menu} = goog.require('Blockly.Menu'); @@ -279,9 +279,9 @@ class FieldDropdown extends Field { } // Remove any pre-existing elements in the dropdown. - DropDownDiv.clearContent(); + dropDownDiv.clearContent(); // Element gets created in render. - this.menu_.render(DropDownDiv.getContentDiv()); + this.menu_.render(dropDownDiv.getContentDiv()); const menuElement = /** @type {!Element} */ (this.menu_.getElement()); dom.addClass(menuElement, 'blocklyDropdownMenu'); @@ -292,10 +292,10 @@ class FieldDropdown extends Field { const borderColour = (this.sourceBlock_.isShadow()) ? this.sourceBlock_.getParent().style.colourTertiary : this.sourceBlock_.style.colourTertiary; - DropDownDiv.setColour(primaryColour, borderColour); + dropDownDiv.setColour(primaryColour, borderColour); } - DropDownDiv.showPositionedByField(this, this.dropdownDispose_.bind(this)); + dropDownDiv.showPositionedByField(this, this.dropdownDispose_.bind(this)); // Focusing needs to be handled after the menu is rendered and positioned. // Otherwise it will cause a page scroll to get the misplaced menu in @@ -362,7 +362,7 @@ class FieldDropdown extends Field { * @private */ handleMenuActionEvent_(menuItem) { - DropDownDiv.hideIfOwner(this, true); + dropDownDiv.hideIfOwner(this, true); this.onItemSelected_(/** @type {!Menu} */ (this.menu_), menuItem); } diff --git a/core/field_textinput.js b/core/field_textinput.js index ddda5e7288e..91ca7749de4 100644 --- a/core/field_textinput.js +++ b/core/field_textinput.js @@ -20,6 +20,7 @@ const aria = goog.require('Blockly.utils.aria'); const browserEvents = goog.require('Blockly.browserEvents'); const dialog = goog.require('Blockly.dialog'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const eventUtils = goog.require('Blockly.Events.utils'); const fieldRegistry = goog.require('Blockly.fieldRegistry'); const parsing = goog.require('Blockly.utils.parsing'); @@ -27,7 +28,6 @@ const userAgent = goog.require('Blockly.utils.userAgent'); /* eslint-disable-next-line no-unused-vars */ const {BlockSvg} = goog.requireType('Blockly.BlockSvg'); const {Coordinate} = goog.require('Blockly.utils.Coordinate'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Field} = goog.require('Blockly.Field'); const {KeyCodes} = goog.require('Blockly.utils.KeyCodes'); const {Msg} = goog.require('Blockly.Msg'); @@ -464,14 +464,14 @@ class FieldTextInput extends Field { onHtmlInputKeyDown_(e) { if (e.keyCode === KeyCodes.ENTER) { WidgetDiv.hide(); - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); } else if (e.keyCode === KeyCodes.ESC) { this.setValue(this.htmlInput_.untypedDefaultValue_); WidgetDiv.hide(); - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); } else if (e.keyCode === KeyCodes.TAB) { WidgetDiv.hide(); - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); this.sourceBlock_.tab(this, !e.shiftKey); e.preventDefault(); } diff --git a/core/flyout_horizontal.js b/core/flyout_horizontal.js index 56c25e9cef9..6d24feaff4d 100644 --- a/core/flyout_horizontal.js +++ b/core/flyout_horizontal.js @@ -17,11 +17,11 @@ goog.module('Blockly.HorizontalFlyout'); const WidgetDiv = goog.require('Blockly.WidgetDiv'); const browserEvents = goog.require('Blockly.browserEvents'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const registry = goog.require('Blockly.registry'); const toolbox = goog.require('Blockly.utils.toolbox'); /* eslint-disable-next-line no-unused-vars */ const {Coordinate} = goog.requireType('Blockly.utils.Coordinate'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Flyout} = goog.require('Blockly.Flyout'); /* eslint-disable-next-line no-unused-vars */ const {Options} = goog.requireType('Blockly.Options'); @@ -224,9 +224,9 @@ class HorizontalFlyout extends Flyout { const pos = (viewMetrics.left - scrollMetrics.left) + delta; this.workspace_.scrollbar.setX(pos); // When the flyout moves from a wheel event, hide WidgetDiv and - // DropDownDiv. + // dropDownDiv. WidgetDiv.hide(); - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); } // Don't scroll the page. diff --git a/core/flyout_vertical.js b/core/flyout_vertical.js index 80a6d61d513..08d8e59e3a7 100644 --- a/core/flyout_vertical.js +++ b/core/flyout_vertical.js @@ -17,11 +17,11 @@ goog.module('Blockly.VerticalFlyout'); const WidgetDiv = goog.require('Blockly.WidgetDiv'); const browserEvents = goog.require('Blockly.browserEvents'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const registry = goog.require('Blockly.registry'); const toolbox = goog.require('Blockly.utils.toolbox'); /* eslint-disable-next-line no-unused-vars */ const {Coordinate} = goog.requireType('Blockly.utils.Coordinate'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Flyout} = goog.require('Blockly.Flyout'); /* eslint-disable-next-line no-unused-vars */ const {Options} = goog.requireType('Blockly.Options'); @@ -209,9 +209,9 @@ class VerticalFlyout extends Flyout { this.workspace_.scrollbar.setY(pos); // When the flyout moves from a wheel event, hide WidgetDiv and - // DropDownDiv. + // dropDownDiv. WidgetDiv.hide(); - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); } // Don't scroll the page. diff --git a/core/inject.js b/core/inject.js index ef6c0ed88b0..6911bf4f8f1 100644 --- a/core/inject.js +++ b/core/inject.js @@ -24,11 +24,11 @@ const browserEvents = goog.require('Blockly.browserEvents'); const bumpObjects = goog.require('Blockly.bumpObjects'); const common = goog.require('Blockly.common'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const userAgent = goog.require('Blockly.utils.userAgent'); const {BlockDragSurfaceSvg} = goog.require('Blockly.BlockDragSurfaceSvg'); /* eslint-disable-next-line no-unused-vars */ const {BlocklyOptions} = goog.requireType('Blockly.BlocklyOptions'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); const {Grid} = goog.require('Blockly.Grid'); const {Msg} = goog.require('Blockly.Msg'); const {Options} = goog.require('Blockly.Options'); @@ -192,7 +192,7 @@ const createMainWorkspace = function( // The SVG is now fully assembled. common.svgResize(mainWorkspace); WidgetDiv.createDom(); - DropDownDiv.createDom(); + dropDownDiv.createDom(); Tooltip.createDom(); return mainWorkspace; }; diff --git a/core/workspace_svg.js b/core/workspace_svg.js index f95e61eb3b6..c38a143e232 100644 --- a/core/workspace_svg.js +++ b/core/workspace_svg.js @@ -31,6 +31,7 @@ const blocks = goog.require('Blockly.serialization.blocks'); const browserEvents = goog.require('Blockly.browserEvents'); const common = goog.require('Blockly.common'); const dom = goog.require('Blockly.utils.dom'); +const dropDownDiv = goog.require('Blockly.dropDownDiv'); const eventUtils = goog.require('Blockly.Events.utils'); const registry = goog.require('Blockly.registry'); const svgMath = goog.require('Blockly.utils.svgMath'); @@ -52,7 +53,6 @@ const {ContextMenuRegistry} = goog.require('Blockly.ContextMenuRegistry'); const {Coordinate} = goog.require('Blockly.utils.Coordinate'); /* eslint-disable-next-line no-unused-vars */ const {Cursor} = goog.requireType('Blockly.Cursor'); -const {DropDownDiv} = goog.require('Blockly.DropDownDiv'); /* eslint-disable-next-line no-unused-vars */ const {FlyoutButton} = goog.requireType('Blockly.FlyoutButton'); const {Gesture} = goog.require('Blockly.Gesture'); @@ -2685,7 +2685,7 @@ class WorkspaceSvg extends Workspace { hideChaff(opt_onlyClosePopups) { Tooltip.hide(); WidgetDiv.hide(); - DropDownDiv.hideWithoutAnimation(); + dropDownDiv.hideWithoutAnimation(); const onlyClosePopups = !!opt_onlyClosePopups; const autoHideables = this.getComponentManager().getComponents( diff --git a/scripts/gulpfiles/chunks.json b/scripts/gulpfiles/chunks.json index 789b9fa3a37..98f71962ce7 100644 --- a/scripts/gulpfiles/chunks.json +++ b/scripts/gulpfiles/chunks.json @@ -79,21 +79,17 @@ "./core/workspace.js", "./core/menu.js", "./core/menuitem.js", - "./core/interfaces/i_registrable_field.js", - "./core/shortcut_registry.js", - "./core/interfaces/i_keyboard_accessible.js", - "./core/events/events_block_drag.js", - "./core/bump_objects.js", - "./core/block_dragger.js", - "./core/workspace_dragger.js", - "./core/interfaces/i_block_dragger.js", - "./core/bubble_dragger.js", "./core/keyboard_nav/basic_cursor.js", "./core/keyboard_nav/tab_navigate_cursor.js", "./core/mutator.js", "./core/warning.js", "./core/comment.js", + "./core/events/events_block_drag.js", "./core/events/events_block_move.js", + "./core/bump_objects.js", + "./core/block_dragger.js", + "./core/workspace_dragger.js", + "./core/interfaces/i_block_dragger.js", "./core/events/events_viewport.js", "./core/events/events_theme_change.js", "./core/events/events_block_create.js", @@ -123,12 +119,10 @@ "./core/theme_manager.js", "./core/scrollbar_pair.js", "./core/options.js", - "./core/marker_manager.js", "./core/interfaces/i_bounded_element.js", "./core/grid.js", "./core/css.js", "./core/flyout_button.js", - "./core/keyboard_nav/cursor.js", "./core/contextmenu_registry.js", "./core/theme/classic.js", "./core/blockly_options.js", @@ -140,8 +134,6 @@ "./core/renderers/zelos/path_object.js", "./core/renderers/zelos/drawer.js", "./core/renderers/zelos/renderer.js", - "./core/utils/keycodes.js", - "./core/dropdowndiv.js", "./core/field_textinput.js", "./core/field_image.js", "./core/renderers/zelos/constants.js", @@ -152,13 +144,6 @@ "./core/renderers/measurables/spacer_row.js", "./core/renderers/measurables/round_corner.js", "./core/renderers/common/path_object.js", - "./core/events/events_marker_move.js", - "./core/keyboard_nav/marker.js", - "./core/interfaces/i_ast_node_location_svg.js", - "./core/interfaces/i_ast_node_location.js", - "./core/interfaces/i_ast_node_location_with_block.js", - "./core/keyboard_nav/ast_node.js", - "./core/renderers/common/marker_svg.js", "./core/interfaces/i_positionable.js", "./core/interfaces/i_drag_target.js", "./core/interfaces/i_delete_area.js", @@ -180,7 +165,6 @@ "./core/interfaces/i_toolbox.js", "./core/utils/metrics.js", "./core/interfaces/i_metrics_manager.js", - "./core/interfaces/i_registrable.js", "./core/interfaces/i_flyout.js", "./core/metrics_manager.js", "./core/interfaces/i_deletable.js", @@ -196,10 +180,6 @@ "./core/renderers/common/info.js", "./core/renderers/measurables/field.js", "./core/renderers/common/debugger.js", - "./core/utils/sentinel.js", - "./core/field_label.js", - "./core/input_types.js", - "./core/input.js", "./core/renderers/measurables/input_connection.js", "./core/renderers/measurables/in_row_spacer.js", "./core/renderers/measurables/row.js", @@ -207,44 +187,64 @@ "./core/renderers/measurables/base.js", "./core/renderers/measurables/connection.js", "./core/renderers/measurables/next_connection.js", - "./core/theme.js", - "./core/interfaces/i_connection_checker.js", - "./core/connection_db.js", - "./core/config.js", - "./core/rendered_connection.js", - "./core/utils/svg_paths.js", - "./core/renderers/common/constants.js", "./core/renderers/measurables/bottom_row.js", "./core/renderers/common/debug.js", "./core/renderers/common/block_rendering.js", "./core/variables_dynamic.js", - "./core/events/events_block_base.js", - "./core/events/events_block_change.js", "./core/events/events_var_rename.js", "./core/events/events_var_delete.js", "./core/variable_map.js", "./core/names.js", + "./core/events/events_block_base.js", + "./core/events/events_block_change.js", + "./core/events/events_marker_move.js", + "./core/renderers/common/marker_svg.js", + "./core/keyboard_nav/marker.js", + "./core/keyboard_nav/ast_node.js", + "./core/keyboard_nav/cursor.js", + "./core/marker_manager.js", + "./core/utils/sentinel.js", + "./core/field_label.js", + "./core/input_types.js", + "./core/interfaces/i_registrable_field.js", + "./core/field_registry.js", + "./core/input.js", + "./core/interfaces/i_registrable.js", + "./core/utils/keycodes.js", + "./core/shortcut_registry.js", + "./core/interfaces/i_keyboard_accessible.js", + "./core/interfaces/i_ast_node_location_with_block.js", + "./core/interfaces/i_ast_node_location.js", + "./core/interfaces/i_ast_node_location_svg.js", + "./core/theme.js", + "./core/constants.js", + "./core/interfaces/i_connection_checker.js", + "./core/connection_db.js", + "./core/config.js", + "./core/rendered_connection.js", + "./core/utils/svg_paths.js", + "./core/renderers/common/constants.js", + "./core/field.js", "./core/events/events_ui_base.js", "./core/events/events_bubble_open.js", "./core/procedures.js", "./core/workspace_svg.js", "./core/utils/rect.js", - "./core/utils/size.js", - "./core/utils/coordinate.js", - "./core/utils/style.js", "./core/utils/deprecation.js", "./core/utils/svg_math.js", + "./core/bubble_dragger.js", "./core/connection_type.js", "./core/internal_constants.js", - "./core/constants.js", - "./core/block_svg.js", "./core/block_animations.js", "./core/gesture.js", "./core/touch.js", "./core/browser_events.js", "./core/tooltip.js", - "./core/field.js", - "./core/field_registry.js", + "./core/block_svg.js", + "./core/utils/size.js", + "./core/utils/coordinate.js", + "./core/utils/style.js", + "./core/dropdowndiv.js", "./core/utils/aria.js", "./core/field_dropdown.js", "./core/msg.js", diff --git a/scripts/migration/renamings.js b/scripts/migration/renamings.js index e148a97ce31..f32c29e12c1 100644 --- a/scripts/migration/renamings.js +++ b/scripts/migration/renamings.js @@ -1073,6 +1073,10 @@ const renamings = { 'Blockly.blocks.variablesDynamic': { module: 'Blockly.libraryBlocks.variablesDynamic', }, + 'Blockly.DropDownDiv': { + module: 'Blockly.dropDownDiv', + path: 'Blockly.DropDownDiv', + }, }, }; diff --git a/tests/deps.js b/tests/deps.js index ef4b6e87f34..f935ff7ea2a 100644 --- a/tests/deps.js +++ b/tests/deps.js @@ -13,7 +13,7 @@ goog.addDependency('../../core/block_animations.js', ['Blockly.blockAnimations'] goog.addDependency('../../core/block_drag_surface.js', ['Blockly.BlockDragSurfaceSvg'], ['Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/block_dragger.js', ['Blockly.BlockDragger'], ['Blockly.Events.BlockDrag', 'Blockly.Events.BlockMove', 'Blockly.Events.utils', 'Blockly.IBlockDragger', 'Blockly.InsertionMarkerManager', 'Blockly.blockAnimations', 'Blockly.bumpObjects', 'Blockly.common', 'Blockly.registry', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/block_svg.js', ['Blockly.BlockSvg'], ['Blockly.ASTNode', 'Blockly.Block', 'Blockly.ConnectionType', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.Events.BlockMove', 'Blockly.Events.Selected', 'Blockly.Events.utils', 'Blockly.FieldLabel', 'Blockly.IASTNodeLocationSvg', 'Blockly.IBoundedElement', 'Blockly.ICopyable', 'Blockly.IDraggable', 'Blockly.MarkerManager', 'Blockly.Msg', 'Blockly.RenderedConnection', 'Blockly.TabNavigateCursor', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.blockAnimations', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.config', 'Blockly.constants', 'Blockly.internalConstants', 'Blockly.serialization.blocks', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/blockly.js', ['Blockly'], ['Blockly.ASTNode', 'Blockly.BasicCursor', 'Blockly.Block', 'Blockly.BlockDragSurfaceSvg', 'Blockly.BlockDragger', 'Blockly.BlockSvg', 'Blockly.BlocklyOptions', 'Blockly.Bubble', 'Blockly.BubbleDragger', 'Blockly.CollapsibleToolboxCategory', 'Blockly.Comment', 'Blockly.ComponentManager', 'Blockly.Connection', 'Blockly.ConnectionChecker', 'Blockly.ConnectionDB', 'Blockly.ConnectionType', 'Blockly.ContextMenu', 'Blockly.ContextMenuItems', 'Blockly.ContextMenuRegistry', 'Blockly.Css', 'Blockly.Cursor', 'Blockly.DeleteArea', 'Blockly.DragTarget', 'Blockly.DropDownDiv', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.FinishedLoading', 'Blockly.Events.Ui', 'Blockly.Events.UiBase', 'Blockly.Events.VarCreate', 'Blockly.Extensions', 'Blockly.Field', 'Blockly.FieldAngle', 'Blockly.FieldCheckbox', 'Blockly.FieldColour', 'Blockly.FieldDropdown', 'Blockly.FieldImage', 'Blockly.FieldLabel', 'Blockly.FieldLabelSerializable', 'Blockly.FieldMultilineInput', 'Blockly.FieldNumber', 'Blockly.FieldTextInput', 'Blockly.FieldVariable', 'Blockly.Flyout', 'Blockly.FlyoutButton', 'Blockly.FlyoutMetricsManager', 'Blockly.Generator', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.HorizontalFlyout', 'Blockly.IASTNodeLocation', 'Blockly.IASTNodeLocationSvg', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.IAutoHideable', 'Blockly.IBlockDragger', 'Blockly.IBoundedElement', 'Blockly.IBubble', 'Blockly.ICollapsibleToolboxItem', 'Blockly.IComponent', 'Blockly.IConnectionChecker', 'Blockly.IContextMenu', 'Blockly.ICopyable', 'Blockly.IDeletable', 'Blockly.IDeleteArea', 'Blockly.IDragTarget', 'Blockly.IDraggable', 'Blockly.IFlyout', 'Blockly.IKeyboardAccessible', 'Blockly.IMetricsManager', 'Blockly.IMovable', 'Blockly.IPositionable', 'Blockly.IRegistrable', 'Blockly.IRegistrableField', 'Blockly.ISelectable', 'Blockly.ISelectableToolboxItem', 'Blockly.IStyleable', 'Blockly.IToolbox', 'Blockly.IToolboxItem', 'Blockly.Icon', 'Blockly.Input', 'Blockly.InsertionMarkerManager', 'Blockly.Marker', 'Blockly.MarkerManager', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.MetricsManager', 'Blockly.Msg', 'Blockly.Mutator', 'Blockly.Names', 'Blockly.Options', 'Blockly.Procedures', 'Blockly.RenderedConnection', 'Blockly.Scrollbar', 'Blockly.ScrollbarPair', 'Blockly.ShortcutItems', 'Blockly.ShortcutRegistry', 'Blockly.TabNavigateCursor', 'Blockly.Theme', 'Blockly.ThemeManager', 'Blockly.Themes', 'Blockly.Toolbox', 'Blockly.ToolboxCategory', 'Blockly.ToolboxItem', 'Blockly.ToolboxSeparator', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.TouchGesture', 'Blockly.Trashcan', 'Blockly.VariableMap', 'Blockly.VariableModel', 'Blockly.Variables', 'Blockly.VariablesDynamic', 'Blockly.VerticalFlyout', 'Blockly.Warning', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.WorkspaceComment', 'Blockly.WorkspaceCommentSvg', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceDragger', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.ZoomControls', 'Blockly.blockAnimations', 'Blockly.blockRendering', 'Blockly.blocks', 'Blockly.browserEvents', 'Blockly.bumpObjects', 'Blockly.clipboard', 'Blockly.common', 'Blockly.config', 'Blockly.constants', 'Blockly.dialog', 'Blockly.fieldRegistry', 'Blockly.geras', 'Blockly.inject', 'Blockly.inputTypes', 'Blockly.internalConstants', 'Blockly.minimalist', 'Blockly.registry', 'Blockly.serialization.ISerializer', 'Blockly.serialization.blocks', 'Blockly.serialization.exceptions', 'Blockly.serialization.priorities', 'Blockly.serialization.registry', 'Blockly.serialization.variables', 'Blockly.serialization.workspaces', 'Blockly.thrasos', 'Blockly.uiPosition', 'Blockly.utils', 'Blockly.utils.colour', 'Blockly.utils.deprecation', 'Blockly.utils.global', 'Blockly.utils.svgMath', 'Blockly.utils.toolbox', 'Blockly.zelos'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/blockly.js', ['Blockly'], ['Blockly.ASTNode', 'Blockly.BasicCursor', 'Blockly.Block', 'Blockly.BlockDragSurfaceSvg', 'Blockly.BlockDragger', 'Blockly.BlockSvg', 'Blockly.BlocklyOptions', 'Blockly.Bubble', 'Blockly.BubbleDragger', 'Blockly.CollapsibleToolboxCategory', 'Blockly.Comment', 'Blockly.ComponentManager', 'Blockly.Connection', 'Blockly.ConnectionChecker', 'Blockly.ConnectionDB', 'Blockly.ConnectionType', 'Blockly.ContextMenu', 'Blockly.ContextMenuItems', 'Blockly.ContextMenuRegistry', 'Blockly.Css', 'Blockly.Cursor', 'Blockly.DeleteArea', 'Blockly.DragTarget', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.FinishedLoading', 'Blockly.Events.Ui', 'Blockly.Events.UiBase', 'Blockly.Events.VarCreate', 'Blockly.Extensions', 'Blockly.Field', 'Blockly.FieldAngle', 'Blockly.FieldCheckbox', 'Blockly.FieldColour', 'Blockly.FieldDropdown', 'Blockly.FieldImage', 'Blockly.FieldLabel', 'Blockly.FieldLabelSerializable', 'Blockly.FieldMultilineInput', 'Blockly.FieldNumber', 'Blockly.FieldTextInput', 'Blockly.FieldVariable', 'Blockly.Flyout', 'Blockly.FlyoutButton', 'Blockly.FlyoutMetricsManager', 'Blockly.Generator', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.HorizontalFlyout', 'Blockly.IASTNodeLocation', 'Blockly.IASTNodeLocationSvg', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.IAutoHideable', 'Blockly.IBlockDragger', 'Blockly.IBoundedElement', 'Blockly.IBubble', 'Blockly.ICollapsibleToolboxItem', 'Blockly.IComponent', 'Blockly.IConnectionChecker', 'Blockly.IContextMenu', 'Blockly.ICopyable', 'Blockly.IDeletable', 'Blockly.IDeleteArea', 'Blockly.IDragTarget', 'Blockly.IDraggable', 'Blockly.IFlyout', 'Blockly.IKeyboardAccessible', 'Blockly.IMetricsManager', 'Blockly.IMovable', 'Blockly.IPositionable', 'Blockly.IRegistrable', 'Blockly.IRegistrableField', 'Blockly.ISelectable', 'Blockly.ISelectableToolboxItem', 'Blockly.IStyleable', 'Blockly.IToolbox', 'Blockly.IToolboxItem', 'Blockly.Icon', 'Blockly.Input', 'Blockly.InsertionMarkerManager', 'Blockly.Marker', 'Blockly.MarkerManager', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.MetricsManager', 'Blockly.Msg', 'Blockly.Mutator', 'Blockly.Names', 'Blockly.Options', 'Blockly.Procedures', 'Blockly.RenderedConnection', 'Blockly.Scrollbar', 'Blockly.ScrollbarPair', 'Blockly.ShortcutItems', 'Blockly.ShortcutRegistry', 'Blockly.TabNavigateCursor', 'Blockly.Theme', 'Blockly.ThemeManager', 'Blockly.Themes', 'Blockly.Toolbox', 'Blockly.ToolboxCategory', 'Blockly.ToolboxItem', 'Blockly.ToolboxSeparator', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.TouchGesture', 'Blockly.Trashcan', 'Blockly.VariableMap', 'Blockly.VariableModel', 'Blockly.Variables', 'Blockly.VariablesDynamic', 'Blockly.VerticalFlyout', 'Blockly.Warning', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.WorkspaceComment', 'Blockly.WorkspaceCommentSvg', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceDragger', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.ZoomControls', 'Blockly.blockAnimations', 'Blockly.blockRendering', 'Blockly.blocks', 'Blockly.browserEvents', 'Blockly.bumpObjects', 'Blockly.clipboard', 'Blockly.common', 'Blockly.config', 'Blockly.constants', 'Blockly.dialog', 'Blockly.dropDownDiv', 'Blockly.fieldRegistry', 'Blockly.geras', 'Blockly.inject', 'Blockly.inputTypes', 'Blockly.internalConstants', 'Blockly.minimalist', 'Blockly.registry', 'Blockly.serialization.ISerializer', 'Blockly.serialization.blocks', 'Blockly.serialization.exceptions', 'Blockly.serialization.priorities', 'Blockly.serialization.registry', 'Blockly.serialization.variables', 'Blockly.serialization.workspaces', 'Blockly.thrasos', 'Blockly.uiPosition', 'Blockly.utils', 'Blockly.utils.colour', 'Blockly.utils.deprecation', 'Blockly.utils.global', 'Blockly.utils.svgMath', 'Blockly.utils.toolbox', 'Blockly.zelos'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/blockly_options.js', ['Blockly.BlocklyOptions'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/blocks.js', ['Blockly.blocks'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/browser_events.js', ['Blockly.browserEvents'], ['Blockly.Touch', 'Blockly.utils.global', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); @@ -37,7 +37,7 @@ goog.addDependency('../../core/css.js', ['Blockly.Css'], ['Blockly.utils.depreca goog.addDependency('../../core/delete_area.js', ['Blockly.DeleteArea'], ['Blockly.BlockSvg', 'Blockly.DragTarget', 'Blockly.IDeleteArea'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/dialog.js', ['Blockly.dialog'], [], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/drag_target.js', ['Blockly.DragTarget'], ['Blockly.IDragTarget'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/dropdowndiv.js', ['Blockly.DropDownDiv'], ['Blockly.common', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.style'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/dropdowndiv.js', ['Blockly.dropDownDiv'], ['Blockly.common', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.style'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/events/events.js', ['Blockly.Events'], ['Blockly.Events.Abstract', 'Blockly.Events.BlockBase', 'Blockly.Events.BlockChange', 'Blockly.Events.BlockCreate', 'Blockly.Events.BlockDelete', 'Blockly.Events.BlockDrag', 'Blockly.Events.BlockMove', 'Blockly.Events.BubbleOpen', 'Blockly.Events.Click', 'Blockly.Events.CommentBase', 'Blockly.Events.CommentChange', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove', 'Blockly.Events.FinishedLoading', 'Blockly.Events.MarkerMove', 'Blockly.Events.Selected', 'Blockly.Events.ThemeChange', 'Blockly.Events.ToolboxItemSelect', 'Blockly.Events.TrashcanOpen', 'Blockly.Events.Ui', 'Blockly.Events.UiBase', 'Blockly.Events.VarBase', 'Blockly.Events.VarCreate', 'Blockly.Events.VarDelete', 'Blockly.Events.VarRename', 'Blockly.Events.ViewportChange', 'Blockly.Events.utils', 'Blockly.utils.deprecation'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/events/events_abstract.js', ['Blockly.Events.Abstract'], ['Blockly.Events.utils'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/events/events_block_base.js', ['Blockly.Events.BlockBase'], ['Blockly.Events.Abstract'], {'lang': 'es6', 'module': 'goog'}); @@ -68,29 +68,29 @@ goog.addDependency('../../core/events/events_viewport.js', ['Blockly.Events.View goog.addDependency('../../core/events/utils.js', ['Blockly.Events.utils'], ['Blockly.registry', 'Blockly.utils.idGenerator'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/events/workspace_events.js', ['Blockly.Events.FinishedLoading'], ['Blockly.Events.Abstract', 'Blockly.Events.utils', 'Blockly.registry'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/extensions.js', ['Blockly.Extensions'], ['Blockly.FieldDropdown', 'Blockly.utils.parsing'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/field.js', ['Blockly.Field'], ['Blockly.DropDownDiv', 'Blockly.Events.BlockChange', 'Blockly.Events.utils', 'Blockly.Gesture', 'Blockly.IASTNodeLocationSvg', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.IKeyboardAccessible', 'Blockly.IRegistrable', 'Blockly.MarkerManager', 'Blockly.Tooltip', 'Blockly.WidgetDiv', 'Blockly.Xml', 'Blockly.browserEvents', 'Blockly.utils.Rect', 'Blockly.utils.Sentinel', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.style', 'Blockly.utils.userAgent', 'Blockly.utils.xml'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/field_angle.js', ['Blockly.FieldAngle'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.Field', 'Blockly.FieldTextInput', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.fieldRegistry', 'Blockly.utils.KeyCodes', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/field.js', ['Blockly.Field'], ['Blockly.Events.BlockChange', 'Blockly.Events.utils', 'Blockly.Gesture', 'Blockly.IASTNodeLocationSvg', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.IKeyboardAccessible', 'Blockly.IRegistrable', 'Blockly.MarkerManager', 'Blockly.Tooltip', 'Blockly.WidgetDiv', 'Blockly.Xml', 'Blockly.browserEvents', 'Blockly.dropDownDiv', 'Blockly.utils.Rect', 'Blockly.utils.Sentinel', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.style', 'Blockly.utils.userAgent', 'Blockly.utils.xml'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/field_angle.js', ['Blockly.FieldAngle'], ['Blockly.Css', 'Blockly.Field', 'Blockly.FieldTextInput', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.dropDownDiv', 'Blockly.fieldRegistry', 'Blockly.utils.KeyCodes', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_checkbox.js', ['Blockly.FieldCheckbox'], ['Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils.dom'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/field_colour.js', ['Blockly.FieldColour'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.browserEvents', 'Blockly.fieldRegistry', 'Blockly.utils.KeyCodes', 'Blockly.utils.Size', 'Blockly.utils.aria', 'Blockly.utils.colour', 'Blockly.utils.dom', 'Blockly.utils.idGenerator'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/field_dropdown.js', ['Blockly.FieldDropdown'], ['Blockly.DropDownDiv', 'Blockly.Field', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.fieldRegistry', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.string', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/field_colour.js', ['Blockly.FieldColour'], ['Blockly.Css', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.browserEvents', 'Blockly.dropDownDiv', 'Blockly.fieldRegistry', 'Blockly.utils.KeyCodes', 'Blockly.utils.Size', 'Blockly.utils.aria', 'Blockly.utils.colour', 'Blockly.utils.dom', 'Blockly.utils.idGenerator'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/field_dropdown.js', ['Blockly.FieldDropdown'], ['Blockly.Field', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.dropDownDiv', 'Blockly.fieldRegistry', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.string', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_image.js', ['Blockly.FieldImage'], ['Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.parsing'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_label.js', ['Blockly.FieldLabel'], ['Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils.dom', 'Blockly.utils.parsing'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_label_serializable.js', ['Blockly.FieldLabelSerializable'], ['Blockly.FieldLabel', 'Blockly.fieldRegistry', 'Blockly.utils.parsing'], {'lang': 'es_2020', 'module': 'goog'}); goog.addDependency('../../core/field_multilineinput.js', ['Blockly.FieldMultilineInput'], ['Blockly.Css', 'Blockly.Field', 'Blockly.FieldTextInput', 'Blockly.WidgetDiv', 'Blockly.fieldRegistry', 'Blockly.utils.KeyCodes', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_number.js', ['Blockly.FieldNumber'], ['Blockly.Field', 'Blockly.FieldTextInput', 'Blockly.fieldRegistry', 'Blockly.utils.aria'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_registry.js', ['Blockly.fieldRegistry'], ['Blockly.registry'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/field_textinput.js', ['Blockly.FieldTextInput'], ['Blockly.DropDownDiv', 'Blockly.Events.BlockChange', 'Blockly.Events.utils', 'Blockly.Field', 'Blockly.Msg', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.dialog', 'Blockly.fieldRegistry', 'Blockly.utils.Coordinate', 'Blockly.utils.KeyCodes', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/field_textinput.js', ['Blockly.FieldTextInput'], ['Blockly.Events.BlockChange', 'Blockly.Events.utils', 'Blockly.Field', 'Blockly.Msg', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.dialog', 'Blockly.dropDownDiv', 'Blockly.fieldRegistry', 'Blockly.utils.Coordinate', 'Blockly.utils.KeyCodes', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/field_variable.js', ['Blockly.FieldVariable'], ['Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.FieldDropdown', 'Blockly.Msg', 'Blockly.VariableModel', 'Blockly.Variables', 'Blockly.Xml', 'Blockly.fieldRegistry', 'Blockly.internalConstants', 'Blockly.utils.Size', 'Blockly.utils.parsing'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/flyout_base.js', ['Blockly.Flyout'], ['Blockly.ComponentManager', 'Blockly.DeleteArea', 'Blockly.Events.BlockCreate', 'Blockly.Events.VarCreate', 'Blockly.Events.utils', 'Blockly.FlyoutMetricsManager', 'Blockly.Gesture', 'Blockly.IFlyout', 'Blockly.ScrollbarPair', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.Variables', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.serialization.blocks', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.idGenerator', 'Blockly.utils.toolbox'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/flyout_button.js', ['Blockly.FlyoutButton'], ['Blockly.Css', 'Blockly.browserEvents', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.parsing', 'Blockly.utils.style'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/flyout_horizontal.js', ['Blockly.HorizontalFlyout'], ['Blockly.DropDownDiv', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.registry', 'Blockly.utils.Rect', 'Blockly.utils.toolbox'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/flyout_horizontal.js', ['Blockly.HorizontalFlyout'], ['Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.dropDownDiv', 'Blockly.registry', 'Blockly.utils.Rect', 'Blockly.utils.toolbox'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/flyout_metrics_manager.js', ['Blockly.FlyoutMetricsManager'], ['Blockly.MetricsManager'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/flyout_vertical.js', ['Blockly.VerticalFlyout'], ['Blockly.Block', 'Blockly.DropDownDiv', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.constants', 'Blockly.registry', 'Blockly.utils.Rect', 'Blockly.utils.toolbox'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/flyout_vertical.js', ['Blockly.VerticalFlyout'], ['Blockly.Block', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.browserEvents', 'Blockly.constants', 'Blockly.dropDownDiv', 'Blockly.registry', 'Blockly.utils.Rect', 'Blockly.utils.toolbox'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/generator.js', ['Blockly.Generator'], ['Blockly.Names', 'Blockly.common', 'Blockly.utils.deprecation'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/gesture.js', ['Blockly.Gesture'], ['Blockly.BlockDragger', 'Blockly.BubbleDragger', 'Blockly.Events.Click', 'Blockly.Events.utils', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.Workspace', 'Blockly.WorkspaceDragger', 'Blockly.blockAnimations', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.config', 'Blockly.internalConstants', 'Blockly.registry', 'Blockly.utils.Coordinate'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/grid.js', ['Blockly.Grid'], ['Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/icon.js', ['Blockly.Icon'], ['Blockly.browserEvents', 'Blockly.utils.Coordinate', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/inject.js', ['Blockly.inject'], ['Blockly.BlockDragSurfaceSvg', 'Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.Grid', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ScrollbarPair', 'Blockly.ShortcutRegistry', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceSvg', 'Blockly.browserEvents', 'Blockly.bumpObjects', 'Blockly.common', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/inject.js', ['Blockly.inject'], ['Blockly.BlockDragSurfaceSvg', 'Blockly.Css', 'Blockly.Grid', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ScrollbarPair', 'Blockly.ShortcutRegistry', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceSvg', 'Blockly.browserEvents', 'Blockly.bumpObjects', 'Blockly.common', 'Blockly.dropDownDiv', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/input.js', ['Blockly.Input'], ['Blockly.FieldLabel', 'Blockly.fieldRegistry', 'Blockly.inputTypes'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/input_types.js', ['Blockly.inputTypes'], ['Blockly.ConnectionType'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/insertion_marker_manager.js', ['Blockly.InsertionMarkerManager'], ['Blockly.ComponentManager', 'Blockly.ConnectionType', 'Blockly.Events.utils', 'Blockly.blockAnimations', 'Blockly.common', 'Blockly.config', 'Blockly.constants'], {'lang': 'es6', 'module': 'goog'}); @@ -264,7 +264,7 @@ goog.addDependency('../../core/workspace_comment.js', ['Blockly.WorkspaceComment goog.addDependency('../../core/workspace_comment_svg.js', ['Blockly.WorkspaceCommentSvg'], ['Blockly.ContextMenu', 'Blockly.Css', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove', 'Blockly.Events.Selected', 'Blockly.Events.utils', 'Blockly.IBoundedElement', 'Blockly.IBubble', 'Blockly.ICopyable', 'Blockly.Touch', 'Blockly.WorkspaceComment', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/workspace_drag_surface_svg.js', ['Blockly.WorkspaceDragSurfaceSvg'], ['Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.svgMath'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/workspace_dragger.js', ['Blockly.WorkspaceDragger'], ['Blockly.common', 'Blockly.utils.Coordinate'], {'lang': 'es6', 'module': 'goog'}); -goog.addDependency('../../core/workspace_svg.js', ['Blockly.WorkspaceSvg'], ['Blockly.BlockSvg', 'Blockly.ComponentManager', 'Blockly.ConnectionDB', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.DropDownDiv', 'Blockly.Events.BlockCreate', 'Blockly.Events.ThemeChange', 'Blockly.Events.ViewportChange', 'Blockly.Events.utils', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.IASTNodeLocationSvg', 'Blockly.MarkerManager', 'Blockly.MetricsManager', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ThemeManager', 'Blockly.Themes.Classic', 'Blockly.Tooltip', 'Blockly.TouchGesture', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.config', 'Blockly.registry', 'Blockly.serialization.blocks', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.array', 'Blockly.utils.dom', 'Blockly.utils.svgMath', 'Blockly.utils.toolbox', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); +goog.addDependency('../../core/workspace_svg.js', ['Blockly.WorkspaceSvg'], ['Blockly.BlockSvg', 'Blockly.ComponentManager', 'Blockly.ConnectionDB', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.Events.BlockCreate', 'Blockly.Events.ThemeChange', 'Blockly.Events.ViewportChange', 'Blockly.Events.utils', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.IASTNodeLocationSvg', 'Blockly.MarkerManager', 'Blockly.MetricsManager', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ThemeManager', 'Blockly.Themes.Classic', 'Blockly.Tooltip', 'Blockly.TouchGesture', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.browserEvents', 'Blockly.common', 'Blockly.config', 'Blockly.dropDownDiv', 'Blockly.registry', 'Blockly.serialization.blocks', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.array', 'Blockly.utils.dom', 'Blockly.utils.svgMath', 'Blockly.utils.toolbox', 'Blockly.utils.userAgent'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/xml.js', ['Blockly.Xml'], ['Blockly.Events.utils', 'Blockly.inputTypes', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.xml'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../core/zoom_controls.js', ['Blockly.ZoomControls'], ['Blockly.ComponentManager', 'Blockly.Css', 'Blockly.Events.Click', 'Blockly.Events.utils', 'Blockly.IPositionable', 'Blockly.Touch', 'Blockly.browserEvents', 'Blockly.sprite', 'Blockly.uiPosition', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es6', 'module': 'goog'}); goog.addDependency('../../generators/dart.js', ['Blockly.Dart'], ['Blockly.Generator', 'Blockly.Names', 'Blockly.Variables', 'Blockly.inputTypes', 'Blockly.utils.string'], {'lang': 'es6', 'module': 'goog'});