blockly 7.20211209.4 → 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
|
@@ -16,66 +16,67 @@
|
|
|
16
16
|
goog.module('Blockly.Events.ToolboxItemSelect');
|
|
17
17
|
|
|
18
18
|
const eventUtils = goog.require('Blockly.Events.utils');
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
const registry = goog.require('Blockly.registry');
|
|
21
20
|
const {UiBase} = goog.require('Blockly.Events.UiBase');
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
/**
|
|
25
24
|
* Class for a toolbox item select event.
|
|
26
|
-
* @param {?string=} opt_oldItem The previously selected toolbox item. Undefined
|
|
27
|
-
* for a blank event.
|
|
28
|
-
* @param {?string=} opt_newItem The newly selected toolbox item. Undefined for
|
|
29
|
-
* a blank event.
|
|
30
|
-
* @param {string=} opt_workspaceId The workspace identifier for this event.
|
|
31
|
-
* Undefined for a blank event.
|
|
32
25
|
* @extends {UiBase}
|
|
33
|
-
* @constructor
|
|
34
26
|
* @alias Blockly.Events.ToolboxItemSelect
|
|
35
27
|
*/
|
|
36
|
-
|
|
37
|
-
ToolboxItemSelect.superClass_.constructor.call(this, opt_workspaceId);
|
|
38
|
-
|
|
28
|
+
class ToolboxItemSelect extends UiBase {
|
|
39
29
|
/**
|
|
40
|
-
* The previously selected toolbox item.
|
|
41
|
-
*
|
|
30
|
+
* @param {?string=} opt_oldItem The previously selected toolbox item.
|
|
31
|
+
* Undefined for a blank event.
|
|
32
|
+
* @param {?string=} opt_newItem The newly selected toolbox item. Undefined
|
|
33
|
+
* for a blank event.
|
|
34
|
+
* @param {string=} opt_workspaceId The workspace identifier for this event.
|
|
35
|
+
* Undefined for a blank event.
|
|
42
36
|
*/
|
|
43
|
-
|
|
37
|
+
constructor(opt_oldItem, opt_newItem, opt_workspaceId) {
|
|
38
|
+
super(opt_workspaceId);
|
|
44
39
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
};
|
|
51
|
-
object.inherits(ToolboxItemSelect, UiBase);
|
|
40
|
+
/**
|
|
41
|
+
* The previously selected toolbox item.
|
|
42
|
+
* @type {?string|undefined}
|
|
43
|
+
*/
|
|
44
|
+
this.oldItem = opt_oldItem;
|
|
52
45
|
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
/**
|
|
47
|
+
* The newly selected toolbox item.
|
|
48
|
+
* @type {?string|undefined}
|
|
49
|
+
*/
|
|
50
|
+
this.newItem = opt_newItem;
|
|
58
51
|
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
json['oldItem'] = this.oldItem;
|
|
66
|
-
json['newItem'] = this.newItem;
|
|
67
|
-
return json;
|
|
68
|
-
};
|
|
52
|
+
/**
|
|
53
|
+
* Type of this event.
|
|
54
|
+
* @type {string}
|
|
55
|
+
*/
|
|
56
|
+
this.type = eventUtils.TOOLBOX_ITEM_SELECT;
|
|
57
|
+
}
|
|
69
58
|
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Encode the event as JSON.
|
|
61
|
+
* @return {!Object} JSON representation.
|
|
62
|
+
*/
|
|
63
|
+
toJson() {
|
|
64
|
+
const json = super.toJson();
|
|
65
|
+
json['oldItem'] = this.oldItem;
|
|
66
|
+
json['newItem'] = this.newItem;
|
|
67
|
+
return json;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Decode the JSON event.
|
|
72
|
+
* @param {!Object} json JSON representation.
|
|
73
|
+
*/
|
|
74
|
+
fromJson(json) {
|
|
75
|
+
super.fromJson(json);
|
|
76
|
+
this.oldItem = json['oldItem'];
|
|
77
|
+
this.newItem = json['newItem'];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
79
80
|
|
|
80
81
|
registry.register(
|
|
81
82
|
registry.Type.EVENT, eventUtils.TOOLBOX_ITEM_SELECT, ToolboxItemSelect);
|
|
@@ -16,56 +16,57 @@
|
|
|
16
16
|
goog.module('Blockly.Events.TrashcanOpen');
|
|
17
17
|
|
|
18
18
|
const eventUtils = goog.require('Blockly.Events.utils');
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
const registry = goog.require('Blockly.registry');
|
|
21
20
|
const {UiBase} = goog.require('Blockly.Events.UiBase');
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
/**
|
|
25
24
|
* Class for a trashcan open event.
|
|
26
|
-
* @param {boolean=} opt_isOpen Whether the trashcan flyout is opening (false if
|
|
27
|
-
* opening). Undefined for a blank event.
|
|
28
|
-
* @param {string=} opt_workspaceId The workspace identifier for this event.
|
|
29
|
-
* Undefined for a blank event.
|
|
30
25
|
* @extends {UiBase}
|
|
31
|
-
* @constructor
|
|
32
26
|
* @alias Blockly.Events.TrashcanOpen
|
|
33
27
|
*/
|
|
34
|
-
|
|
35
|
-
TrashcanOpen.superClass_.constructor.call(this, opt_workspaceId);
|
|
36
|
-
|
|
28
|
+
class TrashcanOpen extends UiBase {
|
|
37
29
|
/**
|
|
38
|
-
* Whether the trashcan flyout is opening (false
|
|
39
|
-
*
|
|
30
|
+
* @param {boolean=} opt_isOpen Whether the trashcan flyout is opening (false
|
|
31
|
+
* if opening). Undefined for a blank event.
|
|
32
|
+
* @param {string=} opt_workspaceId The workspace identifier for this event.
|
|
33
|
+
* Undefined for a blank event.
|
|
40
34
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
object.inherits(TrashcanOpen, UiBase);
|
|
35
|
+
constructor(opt_isOpen, opt_workspaceId) {
|
|
36
|
+
super(opt_workspaceId);
|
|
44
37
|
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Whether the trashcan flyout is opening (false if closing).
|
|
40
|
+
* @type {boolean|undefined}
|
|
41
|
+
*/
|
|
42
|
+
this.isOpen = opt_isOpen;
|
|
50
43
|
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
json['isOpen'] = this.isOpen;
|
|
58
|
-
return json;
|
|
59
|
-
};
|
|
44
|
+
/**
|
|
45
|
+
* Type of this event.
|
|
46
|
+
* @type {string}
|
|
47
|
+
*/
|
|
48
|
+
this.type = eventUtils.TRASHCAN_OPEN;
|
|
49
|
+
}
|
|
60
50
|
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Encode the event as JSON.
|
|
53
|
+
* @return {!Object} JSON representation.
|
|
54
|
+
*/
|
|
55
|
+
toJson() {
|
|
56
|
+
const json = super.toJson();
|
|
57
|
+
json['isOpen'] = this.isOpen;
|
|
58
|
+
return json;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Decode the JSON event.
|
|
63
|
+
* @param {!Object} json JSON representation.
|
|
64
|
+
*/
|
|
65
|
+
fromJson(json) {
|
|
66
|
+
super.fromJson(json);
|
|
67
|
+
this.isOpen = json['isOpen'];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
69
70
|
|
|
70
71
|
registry.register(registry.Type.EVENT, eventUtils.TRASHCAN_OPEN, TrashcanOpen);
|
|
71
72
|
|
package/core/events/events_ui.js
CHANGED
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
goog.module('Blockly.Events.Ui');
|
|
19
19
|
|
|
20
20
|
const eventUtils = goog.require('Blockly.Events.utils');
|
|
21
|
-
const object = goog.require('Blockly.utils.object');
|
|
22
21
|
const registry = goog.require('Blockly.registry');
|
|
23
22
|
/* eslint-disable-next-line no-unused-vars */
|
|
24
23
|
const {Block} = goog.requireType('Blockly.Block');
|
|
@@ -27,60 +26,62 @@ const {UiBase} = goog.require('Blockly.Events.UiBase');
|
|
|
27
26
|
|
|
28
27
|
/**
|
|
29
28
|
* Class for a UI event.
|
|
30
|
-
* @param {?Block=} opt_block The affected block. Null for UI events
|
|
31
|
-
* that do not have an associated block. Undefined for a blank event.
|
|
32
|
-
* @param {string=} opt_element One of 'selected', 'comment', 'mutatorOpen',
|
|
33
|
-
* etc.
|
|
34
|
-
* @param {*=} opt_oldValue Previous value of element.
|
|
35
|
-
* @param {*=} opt_newValue New value of element.
|
|
36
29
|
* @extends {UiBase}
|
|
37
30
|
* @deprecated December 2020. Instead use a more specific UI event.
|
|
38
|
-
* @constructor
|
|
39
31
|
* @alias Blockly.Events.Ui
|
|
40
32
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
class Ui extends UiBase {
|
|
34
|
+
/**
|
|
35
|
+
* @param {?Block=} opt_block The affected block. Null for UI events
|
|
36
|
+
* that do not have an associated block. Undefined for a blank event.
|
|
37
|
+
* @param {string=} opt_element One of 'selected', 'comment', 'mutatorOpen',
|
|
38
|
+
* etc.
|
|
39
|
+
* @param {*=} opt_oldValue Previous value of element.
|
|
40
|
+
* @param {*=} opt_newValue New value of element.
|
|
41
|
+
*/
|
|
42
|
+
constructor(opt_block, opt_element, opt_oldValue, opt_newValue) {
|
|
43
|
+
const workspaceId = opt_block ? opt_block.workspace.id : undefined;
|
|
44
|
+
super(workspaceId);
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
object.inherits(Ui, UiBase);
|
|
46
|
+
this.blockId = opt_block ? opt_block.id : null;
|
|
47
|
+
this.element = typeof opt_element === 'undefined' ? '' : opt_element;
|
|
48
|
+
this.oldValue = typeof opt_oldValue === 'undefined' ? '' : opt_oldValue;
|
|
49
|
+
this.newValue = typeof opt_newValue === 'undefined' ? '' : opt_newValue;
|
|
51
50
|
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Encode the event as JSON.
|
|
60
|
-
* @return {!Object} JSON representation.
|
|
61
|
-
*/
|
|
62
|
-
Ui.prototype.toJson = function() {
|
|
63
|
-
const json = Ui.superClass_.toJson.call(this);
|
|
64
|
-
json['element'] = this.element;
|
|
65
|
-
if (this.newValue !== undefined) {
|
|
66
|
-
json['newValue'] = this.newValue;
|
|
51
|
+
/**
|
|
52
|
+
* Type of this event.
|
|
53
|
+
* @type {string}
|
|
54
|
+
*/
|
|
55
|
+
this.type = eventUtils.UI;
|
|
67
56
|
}
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Encode the event as JSON.
|
|
60
|
+
* @return {!Object} JSON representation.
|
|
61
|
+
*/
|
|
62
|
+
toJson() {
|
|
63
|
+
const json = super.toJson();
|
|
64
|
+
json['element'] = this.element;
|
|
65
|
+
if (this.newValue !== undefined) {
|
|
66
|
+
json['newValue'] = this.newValue;
|
|
67
|
+
}
|
|
68
|
+
if (this.blockId) {
|
|
69
|
+
json['blockId'] = this.blockId;
|
|
70
|
+
}
|
|
71
|
+
return json;
|
|
70
72
|
}
|
|
71
|
-
return json;
|
|
72
|
-
};
|
|
73
73
|
|
|
74
|
-
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
74
|
+
/**
|
|
75
|
+
* Decode the JSON event.
|
|
76
|
+
* @param {!Object} json JSON representation.
|
|
77
|
+
*/
|
|
78
|
+
fromJson(json) {
|
|
79
|
+
super.fromJson(json);
|
|
80
|
+
this.element = json['element'];
|
|
81
|
+
this.newValue = json['newValue'];
|
|
82
|
+
this.blockId = json['blockId'];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
84
85
|
|
|
85
86
|
registry.register(registry.Type.EVENT, eventUtils.UI, Ui);
|
|
86
87
|
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
goog.module('Blockly.Events.UiBase');
|
|
19
19
|
|
|
20
|
-
const Abstract = goog.require('Blockly.Events.Abstract');
|
|
21
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
|
+
const {Abstract: AbstractEvent} = goog.require('Blockly.Events.Abstract');
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
/**
|
|
@@ -27,36 +26,38 @@ const object = goog.require('Blockly.utils.object');
|
|
|
27
26
|
* editing to work (e.g. scrolling the workspace, zooming, opening toolbox
|
|
28
27
|
* categories).
|
|
29
28
|
* UI events do not undo or redo.
|
|
30
|
-
* @
|
|
31
|
-
* Undefined for a blank event.
|
|
32
|
-
* @extends {Abstract}
|
|
33
|
-
* @constructor
|
|
29
|
+
* @extends {AbstractEvent}
|
|
34
30
|
* @alias Blockly.Events.UiBase
|
|
35
31
|
*/
|
|
36
|
-
|
|
37
|
-
UiBase.superClass_.constructor.call(this);
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Whether or not the event is blank (to be populated by fromJson).
|
|
41
|
-
* @type {boolean}
|
|
42
|
-
*/
|
|
43
|
-
this.isBlank = typeof opt_workspaceId === 'undefined';
|
|
44
|
-
|
|
32
|
+
class UiBase extends AbstractEvent {
|
|
45
33
|
/**
|
|
46
|
-
* The workspace identifier for this event.
|
|
47
|
-
*
|
|
34
|
+
* @param {string=} opt_workspaceId The workspace identifier for this event.
|
|
35
|
+
* Undefined for a blank event.
|
|
48
36
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
37
|
+
constructor(opt_workspaceId) {
|
|
38
|
+
super();
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Whether or not the event is blank (to be populated by fromJson).
|
|
42
|
+
* @type {boolean}
|
|
43
|
+
*/
|
|
44
|
+
this.isBlank = typeof opt_workspaceId === 'undefined';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The workspace identifier for this event.
|
|
48
|
+
* @type {string}
|
|
49
|
+
*/
|
|
50
|
+
this.workspaceId = opt_workspaceId ? opt_workspaceId : '';
|
|
51
|
+
|
|
52
|
+
// UI events do not undo or redo.
|
|
53
|
+
this.recordUndo = false;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Whether or not the event is a UI event.
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
*/
|
|
59
|
+
this.isUiEvent = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
61
62
|
|
|
62
63
|
exports.UiBase = UiBase;
|
|
@@ -15,55 +15,56 @@
|
|
|
15
15
|
*/
|
|
16
16
|
goog.module('Blockly.Events.VarBase');
|
|
17
17
|
|
|
18
|
-
const Abstract = goog.require('Blockly.Events.Abstract');
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
18
|
+
const {Abstract: AbstractEvent} = goog.require('Blockly.Events.Abstract');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {VariableModel} = goog.requireType('Blockly.VariableModel');
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
/**
|
|
25
24
|
* Abstract class for a variable event.
|
|
26
|
-
* @
|
|
27
|
-
* corresponds to. Undefined for a blank event.
|
|
28
|
-
* @extends {Abstract}
|
|
29
|
-
* @constructor
|
|
25
|
+
* @extends {AbstractEvent}
|
|
30
26
|
* @alias Blockly.Events.VarBase
|
|
31
27
|
*/
|
|
32
|
-
|
|
33
|
-
VarBase.superClass_.constructor.call(this);
|
|
34
|
-
this.isBlank = typeof opt_variable === 'undefined';
|
|
35
|
-
|
|
28
|
+
class VarBase extends AbstractEvent {
|
|
36
29
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
30
|
+
* @param {!VariableModel=} opt_variable The variable this event
|
|
31
|
+
* corresponds to. Undefined for a blank event.
|
|
39
32
|
*/
|
|
40
|
-
|
|
33
|
+
constructor(opt_variable) {
|
|
34
|
+
super();
|
|
35
|
+
this.isBlank = typeof opt_variable === 'undefined';
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The variable id for the variable this event pertains to.
|
|
39
|
+
* @type {string}
|
|
40
|
+
*/
|
|
41
|
+
this.varId = this.isBlank ? '' : opt_variable.getId();
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The workspace identifier for this event.
|
|
45
|
+
* @type {string}
|
|
46
|
+
*/
|
|
47
|
+
this.workspaceId = this.isBlank ? '' : opt_variable.workspace.id;
|
|
48
|
+
}
|
|
41
49
|
|
|
42
50
|
/**
|
|
43
|
-
*
|
|
44
|
-
* @
|
|
51
|
+
* Encode the event as JSON.
|
|
52
|
+
* @return {!Object} JSON representation.
|
|
45
53
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
* Encode the event as JSON.
|
|
52
|
-
* @return {!Object} JSON representation.
|
|
53
|
-
*/
|
|
54
|
-
VarBase.prototype.toJson = function() {
|
|
55
|
-
const json = VarBase.superClass_.toJson.call(this);
|
|
56
|
-
json['varId'] = this.varId;
|
|
57
|
-
return json;
|
|
58
|
-
};
|
|
54
|
+
toJson() {
|
|
55
|
+
const json = super.toJson();
|
|
56
|
+
json['varId'] = this.varId;
|
|
57
|
+
return json;
|
|
58
|
+
}
|
|
59
59
|
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
60
|
+
/**
|
|
61
|
+
* Decode the JSON event.
|
|
62
|
+
* @param {!Object} json JSON representation.
|
|
63
|
+
*/
|
|
64
|
+
fromJson(json) {
|
|
65
|
+
super.fromJson(json);
|
|
66
|
+
this.varId = json['varId'];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
68
69
|
|
|
69
70
|
exports.VarBase = VarBase;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
goog.module('Blockly.Events.VarCreate');
|
|
17
17
|
|
|
18
18
|
const eventUtils = goog.require('Blockly.Events.utils');
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
const registry = goog.require('Blockly.registry');
|
|
21
20
|
const {VarBase} = goog.require('Blockly.Events.VarBase');
|
|
22
21
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -25,62 +24,65 @@ const {VariableModel} = goog.requireType('Blockly.VariableModel');
|
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
26
|
* Class for a variable creation event.
|
|
28
|
-
* @param {!VariableModel=} opt_variable The created variable. Undefined
|
|
29
|
-
* for a blank event.
|
|
30
27
|
* @extends {VarBase}
|
|
31
|
-
* @constructor
|
|
32
28
|
* @alias Blockly.Events.VarCreate
|
|
33
29
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
class VarCreate extends VarBase {
|
|
31
|
+
/**
|
|
32
|
+
* @param {!VariableModel=} opt_variable The created variable. Undefined
|
|
33
|
+
* for a blank event.
|
|
34
|
+
*/
|
|
35
|
+
constructor(opt_variable) {
|
|
36
|
+
super(opt_variable);
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Type of this event.
|
|
40
|
+
* @type {string}
|
|
41
|
+
*/
|
|
42
|
+
this.type = eventUtils.VAR_CREATE;
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*/
|
|
49
|
-
VarCreate.prototype.type = eventUtils.VAR_CREATE;
|
|
44
|
+
if (!opt_variable) {
|
|
45
|
+
return; // Blank event to be populated by fromJson.
|
|
46
|
+
}
|
|
50
47
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*/
|
|
55
|
-
VarCreate.prototype.toJson = function() {
|
|
56
|
-
const json = VarCreate.superClass_.toJson.call(this);
|
|
57
|
-
json['varType'] = this.varType;
|
|
58
|
-
json['varName'] = this.varName;
|
|
59
|
-
return json;
|
|
60
|
-
};
|
|
48
|
+
this.varType = opt_variable.type;
|
|
49
|
+
this.varName = opt_variable.name;
|
|
50
|
+
}
|
|
61
51
|
|
|
62
|
-
/**
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Encode the event as JSON.
|
|
54
|
+
* @return {!Object} JSON representation.
|
|
55
|
+
*/
|
|
56
|
+
toJson() {
|
|
57
|
+
const json = super.toJson();
|
|
58
|
+
json['varType'] = this.varType;
|
|
59
|
+
json['varName'] = this.varName;
|
|
60
|
+
return json;
|
|
61
|
+
}
|
|
71
62
|
|
|
72
|
-
/**
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Decode the JSON event.
|
|
65
|
+
* @param {!Object} json JSON representation.
|
|
66
|
+
*/
|
|
67
|
+
fromJson(json) {
|
|
68
|
+
super.fromJson(json);
|
|
69
|
+
this.varType = json['varType'];
|
|
70
|
+
this.varName = json['varName'];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Run a variable creation event.
|
|
75
|
+
* @param {boolean} forward True if run forward, false if run backward (undo).
|
|
76
|
+
*/
|
|
77
|
+
run(forward) {
|
|
78
|
+
const workspace = this.getEventWorkspace_();
|
|
79
|
+
if (forward) {
|
|
80
|
+
workspace.createVariable(this.varName, this.varType, this.varId);
|
|
81
|
+
} else {
|
|
82
|
+
workspace.deleteVariableById(this.varId);
|
|
83
|
+
}
|
|
82
84
|
}
|
|
83
|
-
}
|
|
85
|
+
}
|
|
84
86
|
|
|
85
87
|
registry.register(registry.Type.EVENT, eventUtils.VAR_CREATE, VarCreate);
|
|
86
88
|
|