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
|
@@ -15,11 +15,10 @@
|
|
|
15
15
|
*/
|
|
16
16
|
goog.module('Blockly.Events.CommentBase');
|
|
17
17
|
|
|
18
|
-
const AbstractEvents = goog.require('Blockly.Events.Abstract');
|
|
19
18
|
const Xml = goog.require('Blockly.Xml');
|
|
20
19
|
const eventUtils = goog.require('Blockly.Events.utils');
|
|
21
|
-
const object = goog.require('Blockly.utils.object');
|
|
22
20
|
const utilsXml = goog.require('Blockly.utils.xml');
|
|
21
|
+
const {Abstract: AbstractEvent} = goog.require('Blockly.Events.Abstract');
|
|
23
22
|
/* eslint-disable-next-line no-unused-vars */
|
|
24
23
|
const {CommentCreate} = goog.requireType('Blockly.Events.CommentCreate');
|
|
25
24
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -30,89 +29,93 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
|
|
|
30
29
|
|
|
31
30
|
/**
|
|
32
31
|
* Abstract class for a comment event.
|
|
33
|
-
* @
|
|
34
|
-
* corresponds to. Undefined for a blank event.
|
|
35
|
-
* @extends {AbstractEvents}
|
|
36
|
-
* @constructor
|
|
32
|
+
* @extends {AbstractEvent}
|
|
37
33
|
* @alias Blockly.Events.CommentBase
|
|
38
34
|
*/
|
|
39
|
-
|
|
35
|
+
class CommentBase extends AbstractEvent {
|
|
40
36
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
37
|
+
* @param {!WorkspaceComment=} opt_comment The comment this event
|
|
38
|
+
* corresponds to. Undefined for a blank event.
|
|
43
39
|
*/
|
|
44
|
-
|
|
40
|
+
constructor(opt_comment) {
|
|
41
|
+
super();
|
|
42
|
+
/**
|
|
43
|
+
* Whether or not an event is blank.
|
|
44
|
+
* @type {boolean}
|
|
45
|
+
*/
|
|
46
|
+
this.isBlank = typeof opt_comment === 'undefined';
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The ID of the comment this event pertains to.
|
|
50
|
+
* @type {string}
|
|
51
|
+
*/
|
|
52
|
+
this.commentId = this.isBlank ? '' : opt_comment.id;
|
|
51
53
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
/**
|
|
55
|
+
* The workspace identifier for this event.
|
|
56
|
+
* @type {string}
|
|
57
|
+
*/
|
|
58
|
+
this.workspaceId = this.isBlank ? '' : opt_comment.workspace.id;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The event group id for the group this event belongs to. Groups define
|
|
62
|
+
* events that should be treated as an single action from the user's
|
|
63
|
+
* perspective, and should be undone together.
|
|
64
|
+
* @type {string}
|
|
65
|
+
*/
|
|
66
|
+
this.group = eventUtils.getGroup();
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Sets whether the event should be added to the undo stack.
|
|
70
|
+
* @type {boolean}
|
|
71
|
+
*/
|
|
72
|
+
this.recordUndo = eventUtils.getRecordUndo();
|
|
73
|
+
}
|
|
57
74
|
|
|
58
75
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* perspective, and should be undone together.
|
|
62
|
-
* @type {string}
|
|
76
|
+
* Encode the event as JSON.
|
|
77
|
+
* @return {!Object} JSON representation.
|
|
63
78
|
*/
|
|
64
|
-
|
|
79
|
+
toJson() {
|
|
80
|
+
const json = super.toJson();
|
|
81
|
+
if (this.commentId) {
|
|
82
|
+
json['commentId'] = this.commentId;
|
|
83
|
+
}
|
|
84
|
+
return json;
|
|
85
|
+
}
|
|
65
86
|
|
|
66
87
|
/**
|
|
67
|
-
*
|
|
68
|
-
* @
|
|
88
|
+
* Decode the JSON event.
|
|
89
|
+
* @param {!Object} json JSON representation.
|
|
69
90
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Encode the event as JSON.
|
|
76
|
-
* @return {!Object} JSON representation.
|
|
77
|
-
*/
|
|
78
|
-
CommentBase.prototype.toJson = function() {
|
|
79
|
-
const json = CommentBase.superClass_.toJson.call(this);
|
|
80
|
-
if (this.commentId) {
|
|
81
|
-
json['commentId'] = this.commentId;
|
|
91
|
+
fromJson(json) {
|
|
92
|
+
super.fromJson(json);
|
|
93
|
+
this.commentId = json['commentId'];
|
|
82
94
|
}
|
|
83
|
-
return json;
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Decode the JSON event.
|
|
88
|
-
* @param {!Object} json JSON representation.
|
|
89
|
-
*/
|
|
90
|
-
CommentBase.prototype.fromJson = function(json) {
|
|
91
|
-
CommentBase.superClass_.fromJson.call(this, json);
|
|
92
|
-
this.commentId = json['commentId'];
|
|
93
|
-
};
|
|
94
95
|
|
|
95
|
-
/**
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
} else {
|
|
108
|
-
const comment = workspace.getCommentById(event.commentId);
|
|
109
|
-
if (comment) {
|
|
110
|
-
comment.dispose();
|
|
96
|
+
/**
|
|
97
|
+
* Helper function for Comment[Create|Delete]
|
|
98
|
+
* @param {!CommentCreate|!CommentDelete} event
|
|
99
|
+
* The event to run.
|
|
100
|
+
* @param {boolean} create if True then Create, if False then Delete
|
|
101
|
+
*/
|
|
102
|
+
static CommentCreateDeleteHelper(event, create) {
|
|
103
|
+
const workspace = event.getEventWorkspace_();
|
|
104
|
+
if (create) {
|
|
105
|
+
const xmlElement = utilsXml.createElement('xml');
|
|
106
|
+
xmlElement.appendChild(event.xml);
|
|
107
|
+
Xml.domToWorkspace(xmlElement, workspace);
|
|
111
108
|
} else {
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
const comment = workspace.getCommentById(event.commentId);
|
|
110
|
+
if (comment) {
|
|
111
|
+
comment.dispose();
|
|
112
|
+
} else {
|
|
113
|
+
// Only complain about root-level block.
|
|
114
|
+
console.warn(
|
|
115
|
+
'Can\'t uncreate non-existent comment: ' + event.commentId);
|
|
116
|
+
}
|
|
114
117
|
}
|
|
115
118
|
}
|
|
116
|
-
}
|
|
119
|
+
}
|
|
117
120
|
|
|
118
121
|
exports.CommentBase = CommentBase;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
goog.module('Blockly.Events.CommentChange');
|
|
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 {CommentBase} = goog.require('Blockly.Events.CommentBase');
|
|
22
21
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -25,77 +24,80 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
|
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
26
|
* Class for a comment change event.
|
|
28
|
-
* @param {!WorkspaceComment=} opt_comment The comment that is being
|
|
29
|
-
* changed. Undefined for a blank event.
|
|
30
|
-
* @param {string=} opt_oldContents Previous contents of the comment.
|
|
31
|
-
* @param {string=} opt_newContents New contents of the comment.
|
|
32
27
|
* @extends {CommentBase}
|
|
33
|
-
* @constructor
|
|
34
28
|
* @alias Blockly.Events.CommentChange
|
|
35
29
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
class CommentChange extends CommentBase {
|
|
31
|
+
/**
|
|
32
|
+
* @param {!WorkspaceComment=} opt_comment The comment that is being
|
|
33
|
+
* changed. Undefined for a blank event.
|
|
34
|
+
* @param {string=} opt_oldContents Previous contents of the comment.
|
|
35
|
+
* @param {string=} opt_newContents New contents of the comment.
|
|
36
|
+
*/
|
|
37
|
+
constructor(opt_comment, opt_oldContents, opt_newContents) {
|
|
38
|
+
super(opt_comment);
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
object.inherits(CommentChange, CommentBase);
|
|
40
|
+
/**
|
|
41
|
+
* Type of this event.
|
|
42
|
+
* @type {string}
|
|
43
|
+
*/
|
|
44
|
+
this.type = eventUtils.COMMENT_CHANGE;
|
|
48
45
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
*/
|
|
53
|
-
CommentChange.prototype.type = eventUtils.COMMENT_CHANGE;
|
|
46
|
+
if (!opt_comment) {
|
|
47
|
+
return; // Blank event to be populated by fromJson.
|
|
48
|
+
}
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const json = CommentChange.superClass_.toJson.call(this);
|
|
61
|
-
json['oldContents'] = this.oldContents_;
|
|
62
|
-
json['newContents'] = this.newContents_;
|
|
63
|
-
return json;
|
|
64
|
-
};
|
|
50
|
+
this.oldContents_ =
|
|
51
|
+
typeof opt_oldContents === 'undefined' ? '' : opt_oldContents;
|
|
52
|
+
this.newContents_ =
|
|
53
|
+
typeof opt_newContents === 'undefined' ? '' : opt_newContents;
|
|
54
|
+
}
|
|
65
55
|
|
|
66
|
-
/**
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Encode the event as JSON.
|
|
58
|
+
* @return {!Object} JSON representation.
|
|
59
|
+
*/
|
|
60
|
+
toJson() {
|
|
61
|
+
const json = super.toJson();
|
|
62
|
+
json['oldContents'] = this.oldContents_;
|
|
63
|
+
json['newContents'] = this.newContents_;
|
|
64
|
+
return json;
|
|
65
|
+
}
|
|
75
66
|
|
|
76
|
-
/**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Decode the JSON event.
|
|
69
|
+
* @param {!Object} json JSON representation.
|
|
70
|
+
*/
|
|
71
|
+
fromJson(json) {
|
|
72
|
+
super.fromJson(json);
|
|
73
|
+
this.oldContents_ = json['oldContents'];
|
|
74
|
+
this.newContents_ = json['newContents'];
|
|
75
|
+
}
|
|
83
76
|
|
|
84
|
-
/**
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const comment = workspace.getCommentById(this.commentId);
|
|
91
|
-
if (!comment) {
|
|
92
|
-
console.warn('Can\'t change non-existent comment: ' + this.commentId);
|
|
93
|
-
return;
|
|
77
|
+
/**
|
|
78
|
+
* Does this event record any change of state?
|
|
79
|
+
* @return {boolean} False if something changed.
|
|
80
|
+
*/
|
|
81
|
+
isNull() {
|
|
82
|
+
return this.oldContents_ === this.newContents_;
|
|
94
83
|
}
|
|
95
|
-
const contents = forward ? this.newContents_ : this.oldContents_;
|
|
96
84
|
|
|
97
|
-
|
|
98
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Run a change event.
|
|
87
|
+
* @param {boolean} forward True if run forward, false if run backward (undo).
|
|
88
|
+
*/
|
|
89
|
+
run(forward) {
|
|
90
|
+
const workspace = this.getEventWorkspace_();
|
|
91
|
+
const comment = workspace.getCommentById(this.commentId);
|
|
92
|
+
if (!comment) {
|
|
93
|
+
console.warn('Can\'t change non-existent comment: ' + this.commentId);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const contents = forward ? this.newContents_ : this.oldContents_;
|
|
97
|
+
|
|
98
|
+
comment.setContent(contents);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
99
101
|
|
|
100
102
|
registry.register(
|
|
101
103
|
registry.Type.EVENT, eventUtils.COMMENT_CHANGE, CommentChange);
|
|
@@ -17,7 +17,6 @@ goog.module('Blockly.Events.CommentCreate');
|
|
|
17
17
|
|
|
18
18
|
const Xml = goog.require('Blockly.Xml');
|
|
19
19
|
const eventUtils = goog.require('Blockly.Events.utils');
|
|
20
|
-
const object = goog.require('Blockly.utils.object');
|
|
21
20
|
const registry = goog.require('Blockly.registry');
|
|
22
21
|
const {CommentBase} = goog.require('Blockly.Events.CommentBase');
|
|
23
22
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -26,55 +25,58 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
|
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* Class for a comment creation event.
|
|
29
|
-
* @param {!WorkspaceComment=} opt_comment The created comment.
|
|
30
|
-
* Undefined for a blank event.
|
|
31
28
|
* @extends {CommentBase}
|
|
32
|
-
* @constructor
|
|
33
29
|
* @alias Blockly.Events.CommentCreate
|
|
34
30
|
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
class CommentCreate extends CommentBase {
|
|
32
|
+
/**
|
|
33
|
+
* @param {!WorkspaceComment=} opt_comment The created comment.
|
|
34
|
+
* Undefined for a blank event.
|
|
35
|
+
*/
|
|
36
|
+
constructor(opt_comment) {
|
|
37
|
+
super(opt_comment);
|
|
40
38
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Type of this event.
|
|
41
|
+
* @type {string}
|
|
42
|
+
*/
|
|
43
|
+
this.type = eventUtils.COMMENT_CREATE;
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*/
|
|
49
|
-
CommentCreate.prototype.type = eventUtils.COMMENT_CREATE;
|
|
45
|
+
if (!opt_comment) {
|
|
46
|
+
return; // Blank event to be populated by fromJson.
|
|
47
|
+
}
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* @return {!Object} JSON representation.
|
|
54
|
-
*/
|
|
55
|
-
// TODO (#1266): "Full" and "minimal" serialization.
|
|
56
|
-
CommentCreate.prototype.toJson = function() {
|
|
57
|
-
const json = CommentCreate.superClass_.toJson.call(this);
|
|
58
|
-
json['xml'] = Xml.domToText(this.xml);
|
|
59
|
-
return json;
|
|
60
|
-
};
|
|
49
|
+
this.xml = opt_comment.toXmlWithXY();
|
|
50
|
+
}
|
|
61
51
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
// TODO (#1266): "Full" and "minimal" serialization.
|
|
53
|
+
/**
|
|
54
|
+
* Encode the event as JSON.
|
|
55
|
+
* @return {!Object} JSON representation.
|
|
56
|
+
*/
|
|
57
|
+
toJson() {
|
|
58
|
+
const json = super.toJson();
|
|
59
|
+
json['xml'] = Xml.domToText(this.xml);
|
|
60
|
+
return json;
|
|
61
|
+
}
|
|
70
62
|
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Decode the JSON event.
|
|
65
|
+
* @param {!Object} json JSON representation.
|
|
66
|
+
*/
|
|
67
|
+
fromJson(json) {
|
|
68
|
+
super.fromJson(json);
|
|
69
|
+
this.xml = Xml.textToDom(json['xml']);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Run a creation event.
|
|
74
|
+
* @param {boolean} forward True if run forward, false if run backward (undo).
|
|
75
|
+
*/
|
|
76
|
+
run(forward) {
|
|
77
|
+
CommentBase.CommentCreateDeleteHelper(this, forward);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
78
80
|
|
|
79
81
|
registry.register(
|
|
80
82
|
registry.Type.EVENT, eventUtils.COMMENT_CREATE, CommentCreate);
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
goog.module('Blockly.Events.CommentDelete');
|
|
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 {CommentBase} = goog.require('Blockly.Events.CommentBase');
|
|
22
21
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -25,53 +24,56 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
|
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
26
|
* Class for a comment deletion event.
|
|
28
|
-
* @param {!WorkspaceComment=} opt_comment The deleted comment.
|
|
29
|
-
* Undefined for a blank event.
|
|
30
27
|
* @extends {CommentBase}
|
|
31
|
-
* @constructor
|
|
32
28
|
* @alias Blockly.Events.CommentDelete
|
|
33
29
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
class CommentDelete extends CommentBase {
|
|
31
|
+
/**
|
|
32
|
+
* @param {!WorkspaceComment=} opt_comment The deleted comment.
|
|
33
|
+
* Undefined for a blank event.
|
|
34
|
+
*/
|
|
35
|
+
constructor(opt_comment) {
|
|
36
|
+
super(opt_comment);
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Type of this event.
|
|
40
|
+
* @type {string}
|
|
41
|
+
*/
|
|
42
|
+
this.type = eventUtils.COMMENT_DELETE;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
*/
|
|
48
|
-
CommentDelete.prototype.type = eventUtils.COMMENT_DELETE;
|
|
44
|
+
if (!opt_comment) {
|
|
45
|
+
return; // Blank event to be populated by fromJson.
|
|
46
|
+
}
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* @return {!Object} JSON representation.
|
|
53
|
-
*/
|
|
54
|
-
// TODO (#1266): "Full" and "minimal" serialization.
|
|
55
|
-
CommentDelete.prototype.toJson = function() {
|
|
56
|
-
const json = CommentDelete.superClass_.toJson.call(this);
|
|
57
|
-
return json;
|
|
58
|
-
};
|
|
48
|
+
this.xml = opt_comment.toXmlWithXY();
|
|
49
|
+
}
|
|
59
50
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
// TODO (#1266): "Full" and "minimal" serialization.
|
|
52
|
+
/**
|
|
53
|
+
* Encode the event as JSON.
|
|
54
|
+
* @return {!Object} JSON representation.
|
|
55
|
+
*/
|
|
56
|
+
toJson() {
|
|
57
|
+
const json = super.toJson();
|
|
58
|
+
return json;
|
|
59
|
+
}
|
|
67
60
|
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
61
|
+
/**
|
|
62
|
+
* Decode the JSON event.
|
|
63
|
+
* @param {!Object} json JSON representation.
|
|
64
|
+
*/
|
|
65
|
+
fromJson(json) {
|
|
66
|
+
super.fromJson(json);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Run a creation event.
|
|
71
|
+
* @param {boolean} forward True if run forward, false if run backward (undo).
|
|
72
|
+
*/
|
|
73
|
+
run(forward) {
|
|
74
|
+
CommentBase.CommentCreateDeleteHelper(this, !forward);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
75
77
|
|
|
76
78
|
registry.register(
|
|
77
79
|
registry.Type.EVENT, eventUtils.COMMENT_DELETE, CommentDelete);
|