mirror of
https://github.com/google/blockly.git
synced 2026-01-04 15:40:08 +01:00
fix!: Export loopTypes from Blockly.blocks.loops (#5900)
* refactor(blocks): Make loopTypes a Set
This is likely to slightly improve performance, especially if there
are many entries.
* refactor(blocks): Re-export individual block modules from Blockly.blocks.all
* fix!(blocks): Have blocks_compressed.js export Blockly.blocks.all
Previously the value obtained by
const blocks = require('blockly/blocks'); // Node.js
or
import blocks from 'blockly/blocks.js'; // ES Modules
would be the block definitions dictionary (Blockly.Blocks).
Change this so that it is instead the export object from
Blockly.blocks.all.
This means you can now access loopTypes via:
import blocks from 'blockly/blocks.js';
blocks.loops.loopTypes.add('my_loop_blocktype');
This is a breaking change for any code which depended on the value
that was exported by blocks_compressed.js.
BREAKING CHANGE: the exports provided by blocks_compressed.js (and
therefore by `import ... from 'blockly/blocks'`) have changed; see above.
This commit is contained in:
committed by
GitHub
parent
9b06fc8853
commit
74ef1cbf52
@@ -11,13 +11,26 @@
|
||||
'use strict';
|
||||
|
||||
goog.module('Blockly.blocks.all');
|
||||
goog.module.declareLegacyNamespace();
|
||||
|
||||
const colour = goog.require('Blockly.blocks.colour');
|
||||
const lists = goog.require('Blockly.blocks.lists');
|
||||
const logic = goog.require('Blockly.blocks.logic');
|
||||
const loops = goog.require('Blockly.blocks.loops');
|
||||
const math = goog.require('Blockly.blocks.math');
|
||||
const procedures = goog.require('Blockly.blocks.procedures');
|
||||
const texts = goog.require('Blockly.blocks.texts');
|
||||
const variables = goog.require('Blockly.blocks.variables');
|
||||
const variablesDynamic = goog.require('Blockly.blocks.variablesDynamic');
|
||||
|
||||
|
||||
exports.colour = colour;
|
||||
exports.lists = lists;
|
||||
exports.logic = logic;
|
||||
exports.loops = loops;
|
||||
exports.math = math;
|
||||
exports.procedures = procedures;
|
||||
exports.texts = texts;
|
||||
exports.variables = variables;
|
||||
exports.variablesDynamic = variablesDynamic;
|
||||
|
||||
goog.require('Blockly.blocks.colour');
|
||||
goog.require('Blockly.blocks.lists');
|
||||
goog.require('Blockly.blocks.logic');
|
||||
goog.require('Blockly.blocks.loops');
|
||||
goog.require('Blockly.blocks.math');
|
||||
goog.require('Blockly.blocks.procedures');
|
||||
goog.require('Blockly.blocks.texts');
|
||||
goog.require('Blockly.blocks.variables');
|
||||
goog.require('Blockly.blocks.variablesDynamic');
|
||||
|
||||
@@ -287,21 +287,21 @@ Extensions.register(
|
||||
*
|
||||
* // If using the Blockly npm package and es6 import syntax:
|
||||
* import {loopTypes} from 'blockly/blocks';
|
||||
* loopTypes.push('custom_loop');
|
||||
* loopTypes.add('custom_loop');
|
||||
*
|
||||
* // Else if using Closure Compiler and goog.modules:
|
||||
* const {loopTypes} = goog.require('Blockly.blocks.loops');
|
||||
* loopTypes.push('custom_loop');
|
||||
* loopTypes.add('custom_loop');
|
||||
*
|
||||
* @type {!Array<string>}
|
||||
* @type {!Set<string>}
|
||||
*/
|
||||
const loopTypes = [
|
||||
const loopTypes = new Set([
|
||||
'controls_repeat',
|
||||
'controls_repeat_ext',
|
||||
'controls_forEach',
|
||||
'controls_for',
|
||||
'controls_whileUntil',
|
||||
];
|
||||
]);
|
||||
exports.loopTypes = loopTypes;
|
||||
|
||||
/**
|
||||
@@ -321,7 +321,7 @@ const CONTROL_FLOW_IN_LOOP_CHECK_MIXIN = {
|
||||
getSurroundLoop: function() {
|
||||
let block = this;
|
||||
do {
|
||||
if (loopTypes.includes(block.type)) {
|
||||
if (loopTypes.has(block.type)) {
|
||||
return block;
|
||||
}
|
||||
block = block.getSurroundParent();
|
||||
|
||||
@@ -108,7 +108,7 @@ const chunks = [
|
||||
{
|
||||
name: 'blocks',
|
||||
entry: 'blocks/all.js',
|
||||
exports: 'Blockly.Blocks',
|
||||
exports: 'Blockly.blocks.all',
|
||||
importAs: 'BlocklyBlocks',
|
||||
},
|
||||
{
|
||||
@@ -321,7 +321,7 @@ function chunkWrapper(chunk) {
|
||||
const cjsDeps = fileNames.map(f => `require(${f})`).join(', ');
|
||||
const browserDeps =
|
||||
chunk.dependencies.map(d => `root.${d.exports}`).join(', ');
|
||||
const imports = chunk.dependencies.map(d => d.importAs).join(', ');
|
||||
const factoryParams = chunk.dependencies.map(d => d.importAs).join(', ');
|
||||
return `// Do not edit this file; automatically generated.
|
||||
|
||||
/* eslint-disable */
|
||||
@@ -333,7 +333,7 @@ function chunkWrapper(chunk) {
|
||||
} else { // Browser
|
||||
root.${chunk.exports} = factory(${browserDeps});
|
||||
}
|
||||
}(this, function(${imports}) {
|
||||
}(this, function(${factoryParams}) {
|
||||
${chunk.factoryPreamble || FACTORY_PREAMBLE}
|
||||
%output%
|
||||
${chunk.factoryPostamble || FACTORY_POSTAMBLE}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
goog.addDependency('../../blocks/all.js', ['Blockly.blocks.all'], ['Blockly.blocks.colour', 'Blockly.blocks.lists', 'Blockly.blocks.logic', 'Blockly.blocks.loops', 'Blockly.blocks.math', 'Blockly.blocks.procedures', 'Blockly.blocks.texts', 'Blockly.blocks.variables', 'Blockly.blocks.variablesDynamic'], {'module': 'goog'});
|
||||
goog.addDependency('../../blocks/all.js', ['Blockly.blocks.all'], ['Blockly.blocks.colour', 'Blockly.blocks.lists', 'Blockly.blocks.logic', 'Blockly.blocks.loops', 'Blockly.blocks.math', 'Blockly.blocks.procedures', 'Blockly.blocks.texts', 'Blockly.blocks.variables', 'Blockly.blocks.variablesDynamic'], {'lang': 'es6', 'module': 'goog'});
|
||||
goog.addDependency('../../blocks/colour.js', ['Blockly.blocks.colour'], ['Blockly.FieldColour', 'Blockly.common'], {'lang': 'es6', 'module': 'goog'});
|
||||
goog.addDependency('../../blocks/lists.js', ['Blockly.blocks.lists'], ['Blockly.ConnectionType', 'Blockly.FieldDropdown', 'Blockly.FieldDropdown', 'Blockly.Input', 'Blockly.Msg', 'Blockly.Mutator', 'Blockly.blocks', 'Blockly.common', 'Blockly.utils.xml'], {'lang': 'es6', 'module': 'goog'});
|
||||
goog.addDependency('../../blocks/logic.js', ['Blockly.blocks.logic'], ['Blockly.Events', 'Blockly.Extensions', 'Blockly.FieldDropdown', 'Blockly.FieldLabel', 'Blockly.Msg', 'Blockly.Mutator', 'Blockly.common', 'Blockly.utils.xml'], {'lang': 'es6', 'module': 'goog'});
|
||||
|
||||
Reference in New Issue
Block a user