blockly 7.20211209.2 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.d.ts +18963 -18432
- package/blockly.min.js +852 -844
- package/blockly_compressed.js +669 -664
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +47 -0
- package/blocks/colour.js +13 -3
- package/blocks/lists.js +22 -13
- package/blocks/logic.js +13 -3
- package/blocks/loops.js +24 -11
- package/blocks/math.js +12 -3
- package/blocks/procedures.js +41 -27
- package/blocks/text.js +22 -13
- package/blocks/variables.js +14 -3
- package/blocks/variables_dynamic.js +13 -3
- package/blocks_compressed.js +146 -141
- package/blocks_compressed.js.map +1 -1
- package/core/block.js +1869 -1814
- package/core/block_drag_surface.js +201 -200
- package/core/block_dragger.js +377 -373
- package/core/block_svg.js +1593 -1479
- package/core/blockly.js +8 -22
- package/core/blocks.js +9 -2
- package/core/browser_events.js +22 -5
- package/core/bubble.js +841 -797
- package/core/bubble_dragger.js +213 -206
- package/core/bump_objects.js +2 -2
- package/core/clipboard.js +9 -9
- package/core/comment.js +353 -332
- package/core/common.js +46 -17
- package/core/component_manager.js +181 -174
- package/core/config.js +87 -0
- package/core/connection.js +595 -584
- package/core/connection_checker.js +242 -244
- package/core/connection_db.js +235 -230
- package/core/contextmenu.js +9 -6
- package/core/contextmenu_items.js +1 -2
- package/core/contextmenu_registry.js +93 -89
- package/core/css.js +474 -474
- package/core/delete_area.js +45 -42
- package/core/drag_target.js +57 -56
- package/core/dropdowndiv.js +153 -163
- package/core/events/events.js +2 -2
- package/core/events/events_abstract.js +89 -77
- package/core/events/events_block_base.js +37 -36
- package/core/events/events_block_change.js +130 -124
- package/core/events/events_block_create.js +73 -71
- package/core/events/events_block_delete.js +84 -82
- package/core/events/events_block_drag.js +50 -49
- package/core/events/events_block_move.js +147 -140
- package/core/events/events_bubble_open.js +51 -50
- package/core/events/events_click.js +48 -44
- package/core/events/events_comment_base.js +72 -69
- package/core/events/events_comment_change.js +63 -61
- package/core/events/events_comment_create.js +44 -42
- package/core/events/events_comment_delete.js +42 -40
- package/core/events/events_comment_move.js +106 -104
- package/core/events/events_marker_move.js +65 -64
- package/core/events/events_selected.js +46 -45
- package/core/events/events_theme_change.js +36 -35
- package/core/events/events_toolbox_item_select.js +46 -45
- package/core/events/events_trashcan_open.js +37 -36
- package/core/events/events_ui.js +47 -46
- package/core/events/events_ui_base.js +30 -29
- package/core/events/events_var_base.js +37 -36
- package/core/events/events_var_create.js +50 -48
- package/core/events/events_var_delete.js +50 -48
- package/core/events/events_var_rename.js +51 -49
- package/core/events/events_viewport.js +66 -65
- package/core/events/utils.js +29 -14
- package/core/events/workspace_events.js +49 -55
- package/core/extensions.js +4 -3
- package/core/field.js +1061 -997
- package/core/field_angle.js +462 -442
- package/core/field_checkbox.js +194 -182
- package/core/field_colour.js +519 -505
- package/core/field_dropdown.js +617 -598
- package/core/field_image.js +229 -220
- package/core/field_label.js +102 -91
- package/core/field_label_serializable.js +42 -41
- package/core/field_multilineinput.js +372 -358
- package/core/field_number.js +272 -253
- package/core/field_textinput.js +499 -467
- package/core/field_variable.js +458 -420
- package/core/flyout_base.js +1005 -952
- package/core/flyout_button.js +277 -260
- package/core/flyout_horizontal.js +304 -302
- package/core/flyout_metrics_manager.js +64 -64
- package/core/flyout_vertical.js +306 -300
- package/core/generator.js +459 -446
- package/core/gesture.js +829 -813
- package/core/grid.js +166 -163
- package/core/icon.js +168 -159
- package/core/inject.js +7 -5
- package/core/input.js +257 -248
- package/core/insertion_marker_manager.js +655 -624
- package/core/internal_constants.js +0 -129
- package/core/keyboard_nav/ast_node.js +605 -596
- package/core/keyboard_nav/basic_cursor.js +166 -165
- package/core/keyboard_nav/cursor.js +99 -97
- package/core/keyboard_nav/marker.js +83 -79
- package/core/keyboard_nav/tab_navigate_cursor.js +18 -23
- package/core/marker_manager.js +153 -141
- package/core/menu.js +377 -372
- package/core/menuitem.js +223 -217
- package/core/metrics_manager.js +403 -390
- package/core/mutator.js +468 -437
- package/core/names.js +229 -188
- package/core/options.js +290 -284
- package/core/procedures.js +29 -17
- package/core/registry.js +19 -16
- package/core/rendered_connection.js +482 -463
- package/core/renderers/common/block_rendering.js +9 -3
- package/core/renderers/common/constants.js +1119 -1112
- package/core/renderers/common/debug.js +14 -0
- package/core/renderers/common/debugger.js +338 -316
- package/core/renderers/common/drawer.js +380 -370
- package/core/renderers/common/i_path_object.js +2 -2
- package/core/renderers/common/info.js +626 -618
- package/core/renderers/common/marker_svg.js +579 -541
- package/core/renderers/common/path_object.js +203 -200
- package/core/renderers/common/renderer.js +220 -218
- package/core/renderers/geras/constants.js +36 -36
- package/core/renderers/geras/drawer.js +155 -147
- package/core/renderers/geras/highlight_constants.js +244 -238
- package/core/renderers/geras/highlighter.js +231 -179
- package/core/renderers/geras/info.js +392 -369
- package/core/renderers/geras/measurables/inline_input.js +25 -19
- package/core/renderers/geras/measurables/statement_input.js +23 -17
- package/core/renderers/geras/path_object.js +106 -121
- package/core/renderers/geras/renderer.js +96 -98
- package/core/renderers/measurables/base.js +30 -18
- package/core/renderers/measurables/bottom_row.js +83 -80
- package/core/renderers/measurables/connection.js +22 -15
- package/core/renderers/measurables/external_value_input.js +35 -22
- package/core/renderers/measurables/field.js +35 -20
- package/core/renderers/measurables/hat.js +18 -13
- package/core/renderers/measurables/icon.js +24 -17
- package/core/renderers/measurables/in_row_spacer.js +15 -13
- package/core/renderers/measurables/inline_input.js +43 -33
- package/core/renderers/measurables/input_connection.js +41 -28
- package/core/renderers/measurables/input_row.js +50 -44
- package/core/renderers/measurables/jagged_edge.js +14 -12
- package/core/renderers/measurables/next_connection.js +16 -14
- package/core/renderers/measurables/output_connection.js +26 -20
- package/core/renderers/measurables/previous_connection.js +16 -15
- package/core/renderers/measurables/round_corner.js +20 -18
- package/core/renderers/measurables/row.js +184 -168
- package/core/renderers/measurables/spacer_row.js +38 -23
- package/core/renderers/measurables/square_corner.js +18 -16
- package/core/renderers/measurables/statement_input.js +23 -20
- package/core/renderers/measurables/top_row.js +88 -85
- package/core/renderers/minimalist/constants.js +8 -7
- package/core/renderers/minimalist/drawer.js +11 -10
- package/core/renderers/minimalist/info.js +18 -18
- package/core/renderers/minimalist/renderer.js +40 -39
- package/core/renderers/thrasos/info.js +258 -248
- package/core/renderers/thrasos/renderer.js +20 -20
- package/core/renderers/zelos/constants.js +898 -873
- package/core/renderers/zelos/drawer.js +186 -169
- package/core/renderers/zelos/info.js +502 -479
- package/core/renderers/zelos/marker_svg.js +129 -115
- package/core/renderers/zelos/measurables/bottom_row.js +31 -30
- package/core/renderers/zelos/measurables/inputs.js +22 -21
- package/core/renderers/zelos/measurables/row_elements.js +14 -13
- package/core/renderers/zelos/measurables/top_row.js +34 -33
- package/core/renderers/zelos/path_object.js +181 -180
- package/core/renderers/zelos/renderer.js +91 -92
- package/core/scrollbar.js +759 -713
- package/core/scrollbar_pair.js +250 -245
- package/core/serialization/blocks.js +19 -9
- package/core/serialization/workspaces.js +3 -2
- package/core/shortcut_registry.js +286 -277
- package/core/sprites.js +31 -0
- package/core/theme.js +135 -141
- package/core/theme_manager.js +147 -143
- package/core/toolbox/category.js +602 -576
- package/core/toolbox/collapsible_category.js +226 -227
- package/core/toolbox/separator.js +70 -61
- package/core/toolbox/toolbox.js +934 -927
- package/core/toolbox/toolbox_item.js +115 -99
- package/core/tooltip.js +108 -35
- package/core/touch.js +8 -3
- package/core/touch_gesture.js +254 -251
- package/core/trashcan.js +606 -595
- package/core/utils/coordinate.js +97 -95
- package/core/utils/dom.js +2 -2
- package/core/utils/global.js +2 -0
- package/core/utils/rect.js +41 -37
- package/core/utils/sentinel.js +25 -0
- package/core/utils/size.js +30 -27
- package/core/utils/svg.js +18 -16
- package/core/variable_map.js +325 -341
- package/core/variable_model.js +55 -54
- package/core/variables.js +9 -2
- package/core/variables_dynamic.js +3 -1
- package/core/warning.js +126 -120
- package/core/widgetdiv.js +4 -4
- package/core/workspace.js +685 -664
- package/core/workspace_audio.js +124 -118
- package/core/workspace_comment.js +308 -298
- package/core/workspace_comment_svg.js +1029 -951
- package/core/workspace_drag_surface_svg.js +147 -140
- package/core/workspace_dragger.js +70 -71
- package/core/workspace_svg.js +2322 -2297
- package/core/xml.js +30 -20
- package/core/zoom_controls.js +431 -439
- package/dart_compressed.js +40 -43
- package/dart_compressed.js.map +1 -1
- package/generators/dart/colour.js +56 -64
- package/generators/dart/lists.js +61 -50
- package/generators/dart/math.js +160 -148
- package/generators/dart/text.js +83 -61
- package/generators/javascript/colour.js +37 -34
- package/generators/javascript/lists.js +50 -43
- package/generators/javascript/math.js +123 -139
- package/generators/javascript/text.js +67 -81
- package/generators/lua/colour.js +25 -23
- package/generators/lua/lists.js +97 -69
- package/generators/lua/logic.js +1 -2
- package/generators/lua/math.js +182 -144
- package/generators/lua/text.js +116 -99
- package/generators/php/colour.js +38 -32
- package/generators/php/lists.js +109 -89
- package/generators/php/math.js +90 -81
- package/generators/php/text.js +63 -61
- package/generators/python/colour.js +18 -18
- package/generators/python/lists.js +38 -30
- package/generators/python/loops.js +12 -8
- package/generators/python/math.js +104 -106
- package/generators/python/text.js +34 -30
- package/javascript_compressed.js +37 -39
- package/javascript_compressed.js.map +1 -1
- package/lua_compressed.js +39 -42
- package/lua_compressed.js.map +1 -1
- package/msg/az.js +2 -2
- package/msg/be.js +4 -4
- package/msg/cs.js +15 -15
- package/msg/de.js +1 -1
- package/msg/diq.js +1 -1
- package/msg/eo.js +1 -1
- package/msg/es.js +1 -1
- package/msg/fa.js +1 -1
- package/msg/fr.js +4 -4
- package/msg/he.js +1 -1
- package/msg/hr.js +2 -2
- package/msg/hy.js +2 -2
- package/msg/id.js +12 -12
- package/msg/inh.js +14 -14
- package/msg/ja.js +7 -7
- package/msg/lv.js +29 -29
- package/msg/pa.js +3 -3
- package/msg/smn.js +436 -0
- package/msg/te.js +1 -1
- package/msg/yue.js +1 -1
- package/msg/zh-hans.js +3 -3
- package/msg/zh-hant.js +3 -3
- package/package.json +7 -6
- package/php_compressed.js +38 -42
- package/php_compressed.js.map +1 -1
- package/python_compressed.js +26 -25
- package/python_compressed.js.map +1 -1
- package/blocks/all.js +0 -23
|
@@ -25,21 +25,102 @@ const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
|
|
|
25
25
|
* Class for the registry of context menu items. This is intended to be a
|
|
26
26
|
* singleton. You should not create a new instance, and only access this class
|
|
27
27
|
* from ContextMenuRegistry.registry.
|
|
28
|
-
* @constructor
|
|
29
|
-
* @private
|
|
30
28
|
* @alias Blockly.ContextMenuRegistry
|
|
31
29
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
class ContextMenuRegistry {
|
|
31
|
+
/**
|
|
32
|
+
* Resets the existing singleton instance of ContextMenuRegistry.
|
|
33
|
+
*/
|
|
34
|
+
constructor() {
|
|
35
|
+
this.reset();
|
|
36
|
+
}
|
|
35
37
|
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
38
|
-
* @type {!Object<string, !ContextMenuRegistry.RegistryItem>}
|
|
39
|
-
* @private
|
|
39
|
+
* Clear and recreate the registry.
|
|
40
40
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
reset() {
|
|
42
|
+
/**
|
|
43
|
+
* Registry of all registered RegistryItems, keyed by ID.
|
|
44
|
+
* @type {!Object<string, !ContextMenuRegistry.RegistryItem>}
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
this.registry_ = Object.create(null);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Registers a RegistryItem.
|
|
52
|
+
* @param {!ContextMenuRegistry.RegistryItem} item Context menu item to
|
|
53
|
+
* register.
|
|
54
|
+
* @throws {Error} if an item with the given ID already exists.
|
|
55
|
+
*/
|
|
56
|
+
register(item) {
|
|
57
|
+
if (this.registry_[item.id]) {
|
|
58
|
+
throw Error('Menu item with ID "' + item.id + '" is already registered.');
|
|
59
|
+
}
|
|
60
|
+
this.registry_[item.id] = item;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Unregisters a RegistryItem with the given ID.
|
|
65
|
+
* @param {string} id The ID of the RegistryItem to remove.
|
|
66
|
+
* @throws {Error} if an item with the given ID does not exist.
|
|
67
|
+
*/
|
|
68
|
+
unregister(id) {
|
|
69
|
+
if (!this.registry_[id]) {
|
|
70
|
+
throw new Error('Menu item with ID "' + id + '" not found.');
|
|
71
|
+
}
|
|
72
|
+
delete this.registry_[id];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @param {string} id The ID of the RegistryItem to get.
|
|
77
|
+
* @return {?ContextMenuRegistry.RegistryItem} RegistryItem or null if not
|
|
78
|
+
* found
|
|
79
|
+
*/
|
|
80
|
+
getItem(id) {
|
|
81
|
+
return this.registry_[id] || null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Gets the valid context menu options for the given scope type (e.g. block or
|
|
86
|
+
* workspace) and scope. Blocks are only shown if the preconditionFn shows
|
|
87
|
+
* they should not be hidden.
|
|
88
|
+
* @param {!ContextMenuRegistry.ScopeType} scopeType Type of scope where menu
|
|
89
|
+
* should be shown (e.g. on a block or on a workspace)
|
|
90
|
+
* @param {!ContextMenuRegistry.Scope} scope Current scope of context menu
|
|
91
|
+
* (i.e., the exact workspace or block being clicked on)
|
|
92
|
+
* @return {!Array<!ContextMenuRegistry.ContextMenuOption>} the list of
|
|
93
|
+
* ContextMenuOptions
|
|
94
|
+
*/
|
|
95
|
+
getContextMenuOptions(scopeType, scope) {
|
|
96
|
+
const menuOptions = [];
|
|
97
|
+
const registry = this.registry_;
|
|
98
|
+
Object.keys(registry).forEach(function(id) {
|
|
99
|
+
const item = registry[id];
|
|
100
|
+
if (scopeType === item.scopeType) {
|
|
101
|
+
const precondition = item.preconditionFn(scope);
|
|
102
|
+
if (precondition !== 'hidden') {
|
|
103
|
+
const displayText = typeof item.displayText === 'function' ?
|
|
104
|
+
item.displayText(scope) :
|
|
105
|
+
item.displayText;
|
|
106
|
+
/** @type {!ContextMenuRegistry.ContextMenuOption} */
|
|
107
|
+
const menuOption = {
|
|
108
|
+
text: displayText,
|
|
109
|
+
enabled: (precondition === 'enabled'),
|
|
110
|
+
callback: item.callback,
|
|
111
|
+
scope: scope,
|
|
112
|
+
weight: item.weight,
|
|
113
|
+
};
|
|
114
|
+
menuOptions.push(menuOption);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
menuOptions.sort(function(a, b) {
|
|
119
|
+
return a.weight - b.weight;
|
|
120
|
+
});
|
|
121
|
+
return menuOptions;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
43
124
|
|
|
44
125
|
/**
|
|
45
126
|
* Where this menu item should be rendered. If the menu item should be rendered
|
|
@@ -90,85 +171,8 @@ ContextMenuRegistry.ContextMenuOption;
|
|
|
90
171
|
/**
|
|
91
172
|
* Singleton instance of this class. All interactions with this class should be
|
|
92
173
|
* done on this object.
|
|
93
|
-
* @type {
|
|
94
|
-
*/
|
|
95
|
-
ContextMenuRegistry.registry = null;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Registers a RegistryItem.
|
|
99
|
-
* @param {!ContextMenuRegistry.RegistryItem} item Context menu item to
|
|
100
|
-
* register.
|
|
101
|
-
* @throws {Error} if an item with the given ID already exists.
|
|
102
|
-
*/
|
|
103
|
-
ContextMenuRegistry.prototype.register = function(item) {
|
|
104
|
-
if (this.registry_[item.id]) {
|
|
105
|
-
throw Error('Menu item with ID "' + item.id + '" is already registered.');
|
|
106
|
-
}
|
|
107
|
-
this.registry_[item.id] = item;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Unregisters a RegistryItem with the given ID.
|
|
112
|
-
* @param {string} id The ID of the RegistryItem to remove.
|
|
113
|
-
* @throws {Error} if an item with the given ID does not exist.
|
|
114
|
-
*/
|
|
115
|
-
ContextMenuRegistry.prototype.unregister = function(id) {
|
|
116
|
-
if (!this.registry_[id]) {
|
|
117
|
-
throw new Error('Menu item with ID "' + id + '" not found.');
|
|
118
|
-
}
|
|
119
|
-
delete this.registry_[id];
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* @param {string} id The ID of the RegistryItem to get.
|
|
124
|
-
* @return {?ContextMenuRegistry.RegistryItem} RegistryItem or null if not found
|
|
174
|
+
* @type {!ContextMenuRegistry}
|
|
125
175
|
*/
|
|
126
|
-
ContextMenuRegistry.
|
|
127
|
-
return this.registry_[id] || null;
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Gets the valid context menu options for the given scope type (e.g. block or
|
|
132
|
-
* workspace) and scope. Blocks are only shown if the preconditionFn shows they
|
|
133
|
-
* should not be hidden.
|
|
134
|
-
* @param {!ContextMenuRegistry.ScopeType} scopeType Type of scope where menu
|
|
135
|
-
* should be shown (e.g. on a block or on a workspace)
|
|
136
|
-
* @param {!ContextMenuRegistry.Scope} scope Current scope of context menu
|
|
137
|
-
* (i.e., the exact workspace or block being clicked on)
|
|
138
|
-
* @return {!Array<!ContextMenuRegistry.ContextMenuOption>} the list of
|
|
139
|
-
* ContextMenuOptions
|
|
140
|
-
*/
|
|
141
|
-
ContextMenuRegistry.prototype.getContextMenuOptions = function(
|
|
142
|
-
scopeType, scope) {
|
|
143
|
-
const menuOptions = [];
|
|
144
|
-
const registry = this.registry_;
|
|
145
|
-
Object.keys(registry).forEach(function(id) {
|
|
146
|
-
const item = registry[id];
|
|
147
|
-
if (scopeType === item.scopeType) {
|
|
148
|
-
const precondition = item.preconditionFn(scope);
|
|
149
|
-
if (precondition !== 'hidden') {
|
|
150
|
-
const displayText = typeof item.displayText === 'function' ?
|
|
151
|
-
item.displayText(scope) :
|
|
152
|
-
item.displayText;
|
|
153
|
-
/** @type {!ContextMenuRegistry.ContextMenuOption} */
|
|
154
|
-
const menuOption = {
|
|
155
|
-
text: displayText,
|
|
156
|
-
enabled: (precondition === 'enabled'),
|
|
157
|
-
callback: item.callback,
|
|
158
|
-
scope: scope,
|
|
159
|
-
weight: item.weight,
|
|
160
|
-
};
|
|
161
|
-
menuOptions.push(menuOption);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
menuOptions.sort(function(a, b) {
|
|
166
|
-
return a.weight - b.weight;
|
|
167
|
-
});
|
|
168
|
-
return menuOptions;
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
// Creates and assigns the singleton instance.
|
|
172
|
-
new ContextMenuRegistry();
|
|
176
|
+
ContextMenuRegistry.registry = new ContextMenuRegistry();
|
|
173
177
|
|
|
174
178
|
exports.ContextMenuRegistry = ContextMenuRegistry;
|