scratch-blocks 2.0.2 → 2.0.4
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/.nvmrc +1 -1
- package/commitlint.config.js +2 -2
- package/dist/main.mjs +1 -2
- package/dist/types/msg/scratch_msgs.d.ts.map +1 -1
- package/dist/types/src/block_reporting.d.ts.map +1 -1
- package/dist/types/src/blocks/colour.d.ts +0 -19
- package/dist/types/src/blocks/colour.d.ts.map +1 -1
- package/dist/types/src/blocks/control.d.ts +0 -19
- package/dist/types/src/blocks/control.d.ts.map +1 -1
- package/dist/types/src/blocks/data.d.ts +0 -19
- package/dist/types/src/blocks/data.d.ts.map +1 -1
- package/dist/types/src/blocks/event.d.ts +0 -19
- package/dist/types/src/blocks/event.d.ts.map +1 -1
- package/dist/types/src/blocks/looks.d.ts +0 -19
- package/dist/types/src/blocks/looks.d.ts.map +1 -1
- package/dist/types/src/blocks/math.d.ts +0 -19
- package/dist/types/src/blocks/math.d.ts.map +1 -1
- package/dist/types/src/blocks/matrix.d.ts +0 -19
- package/dist/types/src/blocks/matrix.d.ts.map +1 -1
- package/dist/types/src/blocks/motion.d.ts +0 -19
- package/dist/types/src/blocks/motion.d.ts.map +1 -1
- package/dist/types/src/blocks/note.d.ts +0 -19
- package/dist/types/src/blocks/note.d.ts.map +1 -1
- package/dist/types/src/blocks/operators.d.ts +0 -19
- package/dist/types/src/blocks/operators.d.ts.map +1 -1
- package/dist/types/src/blocks/procedures.d.ts +7 -10
- package/dist/types/src/blocks/procedures.d.ts.map +1 -1
- package/dist/types/src/blocks/sensing.d.ts +0 -19
- package/dist/types/src/blocks/sensing.d.ts.map +1 -1
- package/dist/types/src/blocks/sound.d.ts +0 -19
- package/dist/types/src/blocks/sound.d.ts.map +1 -1
- package/dist/types/src/blocks/text.d.ts +0 -19
- package/dist/types/src/blocks/text.d.ts.map +1 -1
- package/dist/types/src/blocks/vertical_extensions.d.ts +0 -19
- package/dist/types/src/blocks/vertical_extensions.d.ts.map +1 -1
- package/dist/types/src/checkable_continuous_flyout.d.ts +2 -7
- package/dist/types/src/checkable_continuous_flyout.d.ts.map +1 -1
- package/dist/types/src/checkbox_bubble.d.ts +13 -12
- package/dist/types/src/checkbox_bubble.d.ts.map +1 -1
- package/dist/types/src/colours.d.ts.map +1 -1
- package/dist/types/src/constants.d.ts +0 -7
- package/dist/types/src/constants.d.ts.map +1 -1
- package/dist/types/src/context_menu_items.d.ts +0 -5
- package/dist/types/src/context_menu_items.d.ts.map +1 -1
- package/dist/types/src/data_category.d.ts +2 -4
- package/dist/types/src/data_category.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_base.d.ts +2 -3
- package/dist/types/src/events/events_block_comment_base.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_change.d.ts +0 -5
- package/dist/types/src/events/events_block_comment_change.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_collapse.d.ts +0 -5
- package/dist/types/src/events/events_block_comment_collapse.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_create.d.ts +0 -5
- package/dist/types/src/events/events_block_comment_create.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_delete.d.ts +0 -5
- package/dist/types/src/events/events_block_comment_delete.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_move.d.ts +0 -5
- package/dist/types/src/events/events_block_comment_move.d.ts.map +1 -1
- package/dist/types/src/events/events_block_comment_resize.d.ts +0 -5
- package/dist/types/src/events/events_block_comment_resize.d.ts.map +1 -1
- package/dist/types/src/events/events_block_drag_end.d.ts +1 -2
- package/dist/types/src/events/events_block_drag_end.d.ts.map +1 -1
- package/dist/types/src/events/events_block_drag_outside.d.ts +1 -2
- package/dist/types/src/events/events_block_drag_outside.d.ts.map +1 -1
- package/dist/types/src/events/events_scratch_variable_create.d.ts +0 -5
- package/dist/types/src/events/events_scratch_variable_create.d.ts.map +1 -1
- package/dist/types/src/fields/field_colour_slider.d.ts +7 -9
- package/dist/types/src/fields/field_colour_slider.d.ts.map +1 -1
- package/dist/types/src/fields/field_matrix.d.ts +0 -19
- package/dist/types/src/fields/field_matrix.d.ts.map +1 -1
- package/dist/types/src/fields/field_note.d.ts +8 -23
- package/dist/types/src/fields/field_note.d.ts.map +1 -1
- package/dist/types/src/fields/field_textinput_removable.d.ts +2 -4
- package/dist/types/src/fields/field_textinput_removable.d.ts.map +1 -1
- package/dist/types/src/fields/field_variable_getter.d.ts +0 -19
- package/dist/types/src/fields/field_variable_getter.d.ts.map +1 -1
- package/dist/types/src/fields/field_vertical_separator.d.ts +0 -19
- package/dist/types/src/fields/field_vertical_separator.d.ts.map +1 -1
- package/dist/types/src/fields/scratch_field_angle.d.ts +0 -19
- package/dist/types/src/fields/scratch_field_angle.d.ts.map +1 -1
- package/dist/types/src/fields/scratch_field_dropdown.d.ts +0 -5
- package/dist/types/src/fields/scratch_field_dropdown.d.ts.map +1 -1
- package/dist/types/src/fields/scratch_field_number.d.ts +0 -19
- package/dist/types/src/fields/scratch_field_number.d.ts.map +1 -1
- package/dist/types/src/fields/scratch_field_variable.d.ts +4 -7
- package/dist/types/src/fields/scratch_field_variable.d.ts.map +1 -1
- package/dist/types/src/flyout_checkbox_icon.d.ts +2 -3
- package/dist/types/src/flyout_checkbox_icon.d.ts.map +1 -1
- package/dist/types/src/glows.d.ts +1 -3
- package/dist/types/src/glows.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +50 -55
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/procedures.d.ts +6 -8
- package/dist/types/src/procedures.d.ts.map +1 -1
- package/dist/types/src/recyclable_block_flyout_inflater.d.ts +3 -5
- package/dist/types/src/recyclable_block_flyout_inflater.d.ts.map +1 -1
- package/dist/types/src/renderer/bowler_hat.d.ts +2 -3
- package/dist/types/src/renderer/bowler_hat.d.ts.map +1 -1
- package/dist/types/src/renderer/cat/cat_face.d.ts +6 -5
- package/dist/types/src/renderer/cat/cat_face.d.ts.map +1 -1
- package/dist/types/src/renderer/cat/constants.d.ts +2 -2
- package/dist/types/src/renderer/cat/constants.d.ts.map +1 -1
- package/dist/types/src/renderer/cat/drawer.d.ts +3 -4
- package/dist/types/src/renderer/cat/drawer.d.ts.map +1 -1
- package/dist/types/src/renderer/cat/path_object.d.ts +2 -3
- package/dist/types/src/renderer/cat/path_object.d.ts.map +1 -1
- package/dist/types/src/renderer/cat/render_info.d.ts +3 -4
- package/dist/types/src/renderer/cat/render_info.d.ts.map +1 -1
- package/dist/types/src/renderer/cat/renderer.d.ts +6 -7
- package/dist/types/src/renderer/cat/renderer.d.ts.map +1 -1
- package/dist/types/src/renderer/constants.d.ts +4 -4
- package/dist/types/src/renderer/constants.d.ts.map +1 -1
- package/dist/types/src/renderer/drawer.d.ts +5 -4
- package/dist/types/src/renderer/drawer.d.ts.map +1 -1
- package/dist/types/src/renderer/path_object.d.ts +1 -3
- package/dist/types/src/renderer/path_object.d.ts.map +1 -1
- package/dist/types/src/renderer/render_info.d.ts +3 -4
- package/dist/types/src/renderer/render_info.d.ts.map +1 -1
- package/dist/types/src/renderer/renderer.d.ts +8 -15
- package/dist/types/src/renderer/renderer.d.ts.map +1 -1
- package/dist/types/src/scratch_block_paster.d.ts +0 -5
- package/dist/types/src/scratch_block_paster.d.ts.map +1 -1
- package/dist/types/src/scratch_blocks_utils.d.ts +0 -20
- package/dist/types/src/scratch_blocks_utils.d.ts.map +1 -1
- package/dist/types/src/scratch_comment_bubble.d.ts +1 -4
- package/dist/types/src/scratch_comment_bubble.d.ts.map +1 -1
- package/dist/types/src/scratch_comment_icon.d.ts +2 -3
- package/dist/types/src/scratch_comment_icon.d.ts.map +1 -1
- package/dist/types/src/scratch_connection_checker.d.ts +0 -5
- package/dist/types/src/scratch_connection_checker.d.ts.map +1 -1
- package/dist/types/src/scratch_continuous_category.d.ts +5 -5
- package/dist/types/src/scratch_continuous_category.d.ts.map +1 -1
- package/dist/types/src/scratch_continuous_toolbox.d.ts +3 -6
- package/dist/types/src/scratch_continuous_toolbox.d.ts.map +1 -1
- package/dist/types/src/scratch_dragger.d.ts +3 -12
- package/dist/types/src/scratch_dragger.d.ts.map +1 -1
- package/dist/types/src/scratch_insertion_marker_previewer.d.ts +0 -5
- package/dist/types/src/scratch_insertion_marker_previewer.d.ts.map +1 -1
- package/dist/types/src/scratch_variable_map.d.ts +0 -5
- package/dist/types/src/scratch_variable_map.d.ts.map +1 -1
- package/dist/types/src/scratch_variable_model.d.ts +1 -2
- package/dist/types/src/scratch_variable_model.d.ts.map +1 -1
- package/dist/types/src/scratch_zoom_controls.d.ts +4 -6
- package/dist/types/src/scratch_zoom_controls.d.ts.map +1 -1
- package/dist/types/src/shadows.d.ts +2 -2
- package/dist/types/src/shadows.d.ts.map +1 -1
- package/dist/types/src/status_indicator_label.d.ts +4 -6
- package/dist/types/src/status_indicator_label.d.ts.map +1 -1
- package/dist/types/src/status_indicator_label_flyout_inflater.d.ts +1 -6
- package/dist/types/src/status_indicator_label_flyout_inflater.d.ts.map +1 -1
- package/dist/types/src/variables.d.ts +4 -8
- package/dist/types/src/variables.d.ts.map +1 -1
- package/dist/types/src/xml.d.ts +2 -3
- package/dist/types/src/xml.d.ts.map +1 -1
- package/dist/types/tests/jsunit/block_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/connection_db_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/connection_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/event_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/extensions_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/field_number_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/field_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/field_variable_getter_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/field_variable_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/gesture_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/input_test.d.ts +1 -0
- package/dist/types/tests/jsunit/input_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/json_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/names_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/procedure_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/scratch_block_comment_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/svg_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/test_utilities.d.ts.map +1 -1
- package/dist/types/tests/jsunit/utils_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/variable_map_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/variable_model_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/widget_div_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/workspace_comment_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/workspace_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/workspace_undo_redo_test.d.ts.map +1 -1
- package/dist/types/tests/jsunit/xml_test.d.ts.map +1 -1
- package/dist/types/tests/workspace_svg/workspace_svg_test.d.ts.map +1 -1
- package/eslint.config.mjs +69 -0
- package/i18n/create_scratch_msgs.js +44 -45
- package/i18n/js_to_json.js +40 -32
- package/i18n/json_to_js.js +37 -37
- package/i18n/sync_tx_translations.js +64 -65
- package/i18n/test_scratch_msgs.js +66 -63
- package/msg/js/en.js +289 -287
- package/msg/json/en.json +284 -284
- package/msg/messages.js +289 -287
- package/msg/scratch_msgs.js +22959 -22970
- package/package.json +13 -10
- package/prettier.config.mjs +3 -0
- package/release.config.js +7 -7
- package/renovate.json5 +7 -9
- package/src/block_reporting.ts +15 -18
- package/src/blocks/colour.ts +12 -15
- package/src/blocks/control.ts +167 -177
- package/src/blocks/data.ts +225 -292
- package/src/blocks/event.ts +121 -123
- package/src/blocks/looks.ts +165 -167
- package/src/blocks/math.ts +44 -46
- package/src/blocks/matrix.ts +11 -13
- package/src/blocks/motion.ts +151 -153
- package/src/blocks/note.ts +11 -13
- package/src/blocks/operators.ts +158 -160
- package/src/blocks/procedures.ts +488 -536
- package/src/blocks/sensing.ts +163 -165
- package/src/blocks/sound.ts +58 -60
- package/src/blocks/text.ts +10 -12
- package/src/blocks/vertical_extensions.ts +86 -102
- package/src/checkable_continuous_flyout.ts +25 -42
- package/src/checkbox_bubble.ts +83 -100
- package/src/colours.ts +35 -37
- package/src/constants.ts +22 -29
- package/src/context_menu_items.ts +56 -81
- package/src/css.ts +3 -4
- package/src/data_category.ts +136 -250
- package/src/events/events_block_comment_base.ts +21 -31
- package/src/events/events_block_comment_change.ts +21 -42
- package/src/events/events_block_comment_collapse.ts +22 -43
- package/src/events/events_block_comment_create.ts +29 -46
- package/src/events/events_block_comment_delete.ts +10 -19
- package/src/events/events_block_comment_move.ts +27 -52
- package/src/events/events_block_comment_resize.ts +28 -55
- package/src/events/events_block_drag_end.ts +16 -26
- package/src/events/events_block_drag_outside.ts +12 -22
- package/src/events/events_scratch_variable_create.ts +33 -56
- package/src/fields/field_colour_slider.ts +173 -228
- package/src/fields/field_matrix.ts +200 -269
- package/src/fields/field_note.ts +272 -377
- package/src/fields/field_textinput_removable.ts +25 -40
- package/src/fields/field_variable_getter.ts +26 -31
- package/src/fields/field_vertical_separator.ts +19 -24
- package/src/fields/scratch_field_angle.ts +150 -186
- package/src/fields/scratch_field_dropdown.ts +15 -19
- package/src/fields/scratch_field_number.ts +123 -180
- package/src/fields/scratch_field_variable.ts +52 -73
- package/src/flyout_checkbox_icon.ts +18 -28
- package/src/glows.ts +51 -58
- package/src/index.ts +119 -133
- package/src/procedures.ts +144 -211
- package/src/recyclable_block_flyout_inflater.ts +14 -25
- package/src/renderer/bowler_hat.ts +6 -8
- package/src/renderer/cat/cat_face.ts +98 -99
- package/src/renderer/cat/constants.ts +67 -87
- package/src/renderer/cat/drawer.ts +21 -27
- package/src/renderer/cat/path_object.ts +3 -5
- package/src/renderer/cat/render_info.ts +5 -8
- package/src/renderer/cat/renderer.ts +11 -15
- package/src/renderer/constants.ts +34 -49
- package/src/renderer/drawer.ts +35 -51
- package/src/renderer/path_object.ts +13 -15
- package/src/renderer/render_info.ts +36 -56
- package/src/renderer/renderer.ts +16 -29
- package/src/scratch_block_paster.ts +12 -20
- package/src/scratch_blocks_utils.ts +4 -7
- package/src/scratch_comment_bubble.ts +70 -101
- package/src/scratch_comment_icon.ts +74 -123
- package/src/scratch_connection_checker.ts +22 -17
- package/src/scratch_continuous_category.ts +24 -28
- package/src/scratch_continuous_toolbox.ts +20 -27
- package/src/scratch_dragger.ts +54 -86
- package/src/scratch_insertion_marker_previewer.ts +6 -11
- package/src/scratch_variable_map.ts +5 -12
- package/src/scratch_variable_model.ts +4 -11
- package/src/scratch_zoom_controls.ts +101 -156
- package/src/shadows.ts +32 -37
- package/src/status_indicator_label.ts +54 -67
- package/src/status_indicator_label_flyout_inflater.ts +11 -21
- package/src/variables.ts +89 -138
- package/src/xml.ts +21 -35
- package/tsconfig.json +2 -6
- package/types/continuous-toolbox.d.ts +1 -1
- package/dist/main.mjs.LICENSE.txt +0 -163
package/src/constants.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license
|
|
3
2
|
* Copyright 2024 Google LLC
|
|
4
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
4
|
*/
|
|
@@ -8,78 +7,72 @@
|
|
|
8
7
|
* String representing the variable type of scalar variables.
|
|
9
8
|
* This string, for use in differentiating between types of variables,
|
|
10
9
|
* indicates that the current variable is a scalar variable.
|
|
11
|
-
* @const {string}
|
|
12
10
|
*/
|
|
13
|
-
const SCALAR_VARIABLE_TYPE =
|
|
14
|
-
export { SCALAR_VARIABLE_TYPE }
|
|
11
|
+
const SCALAR_VARIABLE_TYPE = ''
|
|
12
|
+
export { SCALAR_VARIABLE_TYPE }
|
|
15
13
|
|
|
16
14
|
/**
|
|
17
15
|
* String representing the variable type of broadcast message blocks.
|
|
18
16
|
* This string, for use in differentiating between types of variables,
|
|
19
17
|
* indicates that the current variable is a broadcast message.
|
|
20
|
-
* @const {string}
|
|
21
18
|
*/
|
|
22
|
-
const BROADCAST_MESSAGE_VARIABLE_TYPE =
|
|
23
|
-
export { BROADCAST_MESSAGE_VARIABLE_TYPE }
|
|
19
|
+
const BROADCAST_MESSAGE_VARIABLE_TYPE = 'broadcast_msg'
|
|
20
|
+
export { BROADCAST_MESSAGE_VARIABLE_TYPE }
|
|
24
21
|
|
|
25
22
|
/**
|
|
26
23
|
* String representing the variable type of list blocks.
|
|
27
24
|
* This string, for use in differentiating between types of variables,
|
|
28
25
|
* indicates that the current variable is a list.
|
|
29
|
-
* @const {string}
|
|
30
26
|
*/
|
|
31
|
-
const LIST_VARIABLE_TYPE =
|
|
32
|
-
export { LIST_VARIABLE_TYPE }
|
|
27
|
+
const LIST_VARIABLE_TYPE = 'list'
|
|
28
|
+
export { LIST_VARIABLE_TYPE }
|
|
33
29
|
|
|
34
30
|
/*
|
|
35
31
|
* The type of all procedure definition blocks.
|
|
36
32
|
* @const {string}
|
|
37
33
|
*/
|
|
38
|
-
const PROCEDURES_DEFINITION_BLOCK_TYPE =
|
|
39
|
-
export { PROCEDURES_DEFINITION_BLOCK_TYPE }
|
|
34
|
+
const PROCEDURES_DEFINITION_BLOCK_TYPE = 'procedures_definition'
|
|
35
|
+
export { PROCEDURES_DEFINITION_BLOCK_TYPE }
|
|
40
36
|
|
|
41
37
|
/*
|
|
42
38
|
* The type of all procedure declaration blocks.
|
|
43
39
|
* @const {string}
|
|
44
40
|
*/
|
|
45
|
-
const PROCEDURES_DECLARATION_BLOCK_TYPE =
|
|
46
|
-
export { PROCEDURES_DECLARATION_BLOCK_TYPE }
|
|
41
|
+
const PROCEDURES_DECLARATION_BLOCK_TYPE = 'procedures_declaration'
|
|
42
|
+
export { PROCEDURES_DECLARATION_BLOCK_TYPE }
|
|
47
43
|
|
|
48
44
|
/**
|
|
49
45
|
* The type of all procedure prototype blocks.
|
|
50
|
-
* @const {string}
|
|
51
46
|
*/
|
|
52
|
-
const PROCEDURES_PROTOTYPE_BLOCK_TYPE =
|
|
53
|
-
export { PROCEDURES_PROTOTYPE_BLOCK_TYPE }
|
|
47
|
+
const PROCEDURES_PROTOTYPE_BLOCK_TYPE = 'procedures_prototype'
|
|
48
|
+
export { PROCEDURES_PROTOTYPE_BLOCK_TYPE }
|
|
54
49
|
|
|
55
50
|
/**
|
|
56
51
|
* The type of all procedure call blocks.
|
|
57
|
-
* @const {string}
|
|
58
52
|
*/
|
|
59
|
-
const PROCEDURES_CALL_BLOCK_TYPE =
|
|
60
|
-
export { PROCEDURES_CALL_BLOCK_TYPE }
|
|
53
|
+
const PROCEDURES_CALL_BLOCK_TYPE = 'procedures_call'
|
|
54
|
+
export { PROCEDURES_CALL_BLOCK_TYPE }
|
|
61
55
|
|
|
62
|
-
const OUTPUT_SHAPE_HEXAGONAL = 1
|
|
63
|
-
export { OUTPUT_SHAPE_HEXAGONAL }
|
|
56
|
+
const OUTPUT_SHAPE_HEXAGONAL = 1
|
|
57
|
+
export { OUTPUT_SHAPE_HEXAGONAL }
|
|
64
58
|
|
|
65
|
-
const OUTPUT_SHAPE_ROUND = 2
|
|
66
|
-
export { OUTPUT_SHAPE_ROUND }
|
|
59
|
+
const OUTPUT_SHAPE_ROUND = 2
|
|
60
|
+
export { OUTPUT_SHAPE_ROUND }
|
|
67
61
|
|
|
68
62
|
/**
|
|
69
63
|
* String for use in the dropdown created in field_variable,
|
|
70
64
|
* specifically for broadcast messages.
|
|
71
65
|
* This string indicates that this option in the dropdown is 'New message...'
|
|
72
66
|
* and if selected, should trigger the prompt to create a new message.
|
|
73
|
-
* @const {string}
|
|
74
67
|
*/
|
|
75
|
-
const NEW_BROADCAST_MESSAGE_ID =
|
|
76
|
-
export { NEW_BROADCAST_MESSAGE_ID }
|
|
68
|
+
const NEW_BROADCAST_MESSAGE_ID = 'NEW_BROADCAST_MESSAGE_ID'
|
|
69
|
+
export { NEW_BROADCAST_MESSAGE_ID }
|
|
77
70
|
|
|
78
71
|
/**
|
|
79
72
|
* Enum defining supported Scratch block themes.
|
|
80
73
|
* Scratch block themes can customize the shape of blocks independently of their color.
|
|
81
74
|
*/
|
|
82
75
|
export enum ScratchBlocksTheme {
|
|
83
|
-
CLASSIC =
|
|
84
|
-
CAT_BLOCKS =
|
|
76
|
+
CLASSIC = 'classic',
|
|
77
|
+
CAT_BLOCKS = 'catblocks',
|
|
85
78
|
}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license
|
|
3
2
|
* Copyright 2024 Google LLC
|
|
4
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
import * as Blockly from "blockly/core";
|
|
5
|
+
import * as Blockly from 'blockly/core'
|
|
8
6
|
|
|
9
7
|
/**
|
|
10
8
|
* Registers a block delete option that ignores shadows in the block count.
|
|
@@ -12,46 +10,41 @@ import * as Blockly from "blockly/core";
|
|
|
12
10
|
export function registerDeleteBlock() {
|
|
13
11
|
const deleteOption = {
|
|
14
12
|
displayText(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
15
|
-
const descendantCount = getDeletableBlocksInStack(scope.block!).length
|
|
13
|
+
const descendantCount = getDeletableBlocksInStack(scope.block!).length
|
|
16
14
|
return descendantCount === 1
|
|
17
|
-
? Blockly.Msg
|
|
18
|
-
: Blockly.Msg
|
|
15
|
+
? Blockly.Msg.DELETE_BLOCK
|
|
16
|
+
: Blockly.Msg.DELETE_X_BLOCKS.replace('%1', `${descendantCount}`)
|
|
19
17
|
},
|
|
20
18
|
preconditionFn(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
21
19
|
if (!scope.block!.isInFlyout && scope.block!.isDeletable()) {
|
|
22
|
-
return
|
|
20
|
+
return 'enabled'
|
|
23
21
|
}
|
|
24
|
-
return
|
|
22
|
+
return 'hidden'
|
|
25
23
|
},
|
|
26
24
|
callback(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
27
|
-
Blockly.Events.setGroup(true)
|
|
28
|
-
scope.block!.dispose(true, true)
|
|
29
|
-
Blockly.Events.setGroup(false)
|
|
25
|
+
Blockly.Events.setGroup(true)
|
|
26
|
+
scope.block!.dispose(true, true)
|
|
27
|
+
Blockly.Events.setGroup(false)
|
|
30
28
|
},
|
|
31
29
|
scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
|
|
32
|
-
id:
|
|
30
|
+
id: 'blockDelete',
|
|
33
31
|
weight: 6,
|
|
34
|
-
}
|
|
35
|
-
Blockly.ContextMenuRegistry.registry.register(deleteOption)
|
|
32
|
+
}
|
|
33
|
+
Blockly.ContextMenuRegistry.registry.register(deleteOption)
|
|
36
34
|
}
|
|
37
35
|
|
|
38
|
-
function getDeletableBlocksInStack(
|
|
39
|
-
block
|
|
40
|
-
): Blockly.BlockSvg[] {
|
|
41
|
-
let descendants = block.getDescendants(false).filter(isDeletable);
|
|
36
|
+
function getDeletableBlocksInStack(block: Blockly.BlockSvg): Blockly.BlockSvg[] {
|
|
37
|
+
let descendants = block.getDescendants(false).filter(isDeletable)
|
|
42
38
|
if (block.getNextBlock()) {
|
|
43
39
|
// Next blocks are not deleted.
|
|
44
|
-
const nextDescendants = block
|
|
45
|
-
|
|
46
|
-
.getDescendants(false)
|
|
47
|
-
.filter(isDeletable);
|
|
48
|
-
descendants = descendants.filter((b) => !nextDescendants.includes(b));
|
|
40
|
+
const nextDescendants = block.getNextBlock()!.getDescendants(false).filter(isDeletable)
|
|
41
|
+
descendants = descendants.filter((b) => !nextDescendants.includes(b))
|
|
49
42
|
}
|
|
50
|
-
return descendants
|
|
43
|
+
return descendants
|
|
51
44
|
}
|
|
52
45
|
|
|
53
46
|
function isDeletable(block: Blockly.BlockSvg): boolean {
|
|
54
|
-
return block.isDeletable() && !block.isShadow()
|
|
47
|
+
return block.isDeletable() && !block.isShadow()
|
|
55
48
|
}
|
|
56
49
|
|
|
57
50
|
/**
|
|
@@ -61,55 +54,45 @@ export function registerDeleteAll() {
|
|
|
61
54
|
const deleteOption = {
|
|
62
55
|
displayText(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
63
56
|
if (!scope.workspace) {
|
|
64
|
-
return
|
|
57
|
+
return ''
|
|
65
58
|
}
|
|
66
|
-
const deletableBlocksLength = getDeletableBlocksInWorkspace(
|
|
67
|
-
scope.workspace
|
|
68
|
-
).length;
|
|
59
|
+
const deletableBlocksLength = getDeletableBlocksInWorkspace(scope.workspace).length
|
|
69
60
|
if (deletableBlocksLength === 1) {
|
|
70
|
-
return Blockly.Msg
|
|
61
|
+
return Blockly.Msg.DELETE_BLOCK
|
|
71
62
|
}
|
|
72
|
-
return Blockly.Msg
|
|
73
|
-
"%1",
|
|
74
|
-
`${deletableBlocksLength}`
|
|
75
|
-
);
|
|
63
|
+
return Blockly.Msg.DELETE_X_BLOCKS.replace('%1', `${deletableBlocksLength}`)
|
|
76
64
|
},
|
|
77
65
|
preconditionFn(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
78
66
|
if (!scope.workspace) {
|
|
79
|
-
return
|
|
67
|
+
return 'disabled'
|
|
80
68
|
}
|
|
81
|
-
const deletableBlocksLength = getDeletableBlocksInWorkspace(
|
|
82
|
-
|
|
83
|
-
).length;
|
|
84
|
-
return deletableBlocksLength > 0 ? "enabled" : "disabled";
|
|
69
|
+
const deletableBlocksLength = getDeletableBlocksInWorkspace(scope.workspace).length
|
|
70
|
+
return deletableBlocksLength > 0 ? 'enabled' : 'disabled'
|
|
85
71
|
},
|
|
86
72
|
callback(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
87
73
|
if (!scope.workspace) {
|
|
88
|
-
return
|
|
74
|
+
return
|
|
89
75
|
}
|
|
90
|
-
scope.workspace.cancelCurrentGesture()
|
|
91
|
-
const deletableBlocks = getDeletableBlocksInWorkspace(scope.workspace)
|
|
76
|
+
scope.workspace.cancelCurrentGesture()
|
|
77
|
+
const deletableBlocks = getDeletableBlocksInWorkspace(scope.workspace)
|
|
92
78
|
if (deletableBlocks.length < 2) {
|
|
93
|
-
deleteNext(deletableBlocks)
|
|
79
|
+
deleteNext(deletableBlocks)
|
|
94
80
|
} else {
|
|
95
81
|
Blockly.dialog.confirm(
|
|
96
|
-
Blockly.Msg
|
|
97
|
-
|
|
98
|
-
String(deletableBlocks.length)
|
|
99
|
-
),
|
|
100
|
-
function (ok: boolean) {
|
|
82
|
+
Blockly.Msg.DELETE_ALL_BLOCKS.replace('%1', String(deletableBlocks.length)),
|
|
83
|
+
(ok: boolean) => {
|
|
101
84
|
if (ok) {
|
|
102
|
-
deleteNext(deletableBlocks)
|
|
85
|
+
deleteNext(deletableBlocks)
|
|
103
86
|
}
|
|
104
|
-
}
|
|
105
|
-
)
|
|
87
|
+
},
|
|
88
|
+
)
|
|
106
89
|
}
|
|
107
90
|
},
|
|
108
91
|
scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
|
|
109
|
-
id:
|
|
92
|
+
id: 'workspaceDelete',
|
|
110
93
|
weight: 6,
|
|
111
|
-
}
|
|
112
|
-
Blockly.ContextMenuRegistry.registry.register(deleteOption)
|
|
94
|
+
}
|
|
95
|
+
Blockly.ContextMenuRegistry.registry.register(deleteOption)
|
|
113
96
|
}
|
|
114
97
|
|
|
115
98
|
/*
|
|
@@ -118,41 +101,34 @@ export function registerDeleteAll() {
|
|
|
118
101
|
* @param workspace to delete all blocks from.
|
|
119
102
|
* @returns list of blocks to delete.
|
|
120
103
|
*/
|
|
121
|
-
function getDeletableBlocksInWorkspace(
|
|
122
|
-
workspace: Blockly.
|
|
123
|
-
): Blockly.BlockSvg[] {
|
|
124
|
-
return workspace
|
|
125
|
-
.getTopBlocks(true)
|
|
126
|
-
.flatMap((b: Blockly.BlockSvg) =>
|
|
127
|
-
b.getDescendants(false).filter(isDeletable)
|
|
128
|
-
);
|
|
104
|
+
function getDeletableBlocksInWorkspace(workspace: Blockly.WorkspaceSvg): Blockly.BlockSvg[] {
|
|
105
|
+
return workspace.getTopBlocks(true).flatMap((b: Blockly.BlockSvg) => b.getDescendants(false).filter(isDeletable))
|
|
129
106
|
}
|
|
130
107
|
|
|
131
108
|
/**
|
|
132
109
|
* Deletes the given blocks. Used to delete all blocks in the workspace.
|
|
133
|
-
*
|
|
134
110
|
* @param deleteList List of blocks to delete.
|
|
135
111
|
* @param eventGroup Event group ID with which all delete events should be
|
|
136
112
|
* associated. If not specified, create a new group.
|
|
137
113
|
*/
|
|
138
114
|
function deleteNext(deleteList: Blockly.BlockSvg[], eventGroup?: string) {
|
|
139
|
-
const DELAY = 10
|
|
115
|
+
const DELAY = 10
|
|
140
116
|
if (eventGroup) {
|
|
141
|
-
Blockly.Events.setGroup(eventGroup)
|
|
117
|
+
Blockly.Events.setGroup(eventGroup)
|
|
142
118
|
} else {
|
|
143
|
-
Blockly.Events.setGroup(true)
|
|
144
|
-
eventGroup = Blockly.Events.getGroup()
|
|
119
|
+
Blockly.Events.setGroup(true)
|
|
120
|
+
eventGroup = Blockly.Events.getGroup()
|
|
145
121
|
}
|
|
146
|
-
const block = deleteList.shift()
|
|
122
|
+
const block = deleteList.shift()
|
|
147
123
|
if (block) {
|
|
148
124
|
if (!block.isDeadOrDying()) {
|
|
149
|
-
block.dispose(false, true)
|
|
150
|
-
setTimeout(deleteNext, DELAY, deleteList, eventGroup)
|
|
125
|
+
block.dispose(false, true)
|
|
126
|
+
setTimeout(deleteNext, DELAY, deleteList, eventGroup)
|
|
151
127
|
} else {
|
|
152
|
-
deleteNext(deleteList, eventGroup)
|
|
128
|
+
deleteNext(deleteList, eventGroup)
|
|
153
129
|
}
|
|
154
130
|
}
|
|
155
|
-
Blockly.Events.setGroup(false)
|
|
131
|
+
Blockly.Events.setGroup(false)
|
|
156
132
|
}
|
|
157
133
|
|
|
158
134
|
/**
|
|
@@ -160,21 +136,20 @@ function deleteNext(deleteList: Blockly.BlockSvg[], eventGroup?: string) {
|
|
|
160
136
|
* all subsequent blocks in the stack.
|
|
161
137
|
*/
|
|
162
138
|
export function registerDuplicateBlock() {
|
|
163
|
-
const original =
|
|
164
|
-
Blockly.ContextMenuRegistry.registry.getItem("blockDuplicate")!;
|
|
139
|
+
const original = Blockly.ContextMenuRegistry.registry.getItem('blockDuplicate')!
|
|
165
140
|
const duplicateOption = {
|
|
166
141
|
displayText: original.displayText!,
|
|
167
142
|
preconditionFn: original.preconditionFn!,
|
|
168
143
|
callback(scope: Blockly.ContextMenuRegistry.Scope) {
|
|
169
|
-
if (!scope.block) return
|
|
170
|
-
const data = scope.block.toCopyData(true)
|
|
171
|
-
if (!data) return
|
|
172
|
-
Blockly.clipboard.paste(data, scope.block.workspace)
|
|
144
|
+
if (!scope.block) return
|
|
145
|
+
const data = scope.block.toCopyData(true)
|
|
146
|
+
if (!data) return
|
|
147
|
+
Blockly.clipboard.paste(data, scope.block.workspace)
|
|
173
148
|
},
|
|
174
149
|
scopeType: original.scopeType,
|
|
175
150
|
id: original.id,
|
|
176
151
|
weight: original.weight,
|
|
177
|
-
}
|
|
178
|
-
Blockly.ContextMenuRegistry.registry.unregister(duplicateOption.id)
|
|
179
|
-
Blockly.ContextMenuRegistry.registry.register(duplicateOption)
|
|
152
|
+
}
|
|
153
|
+
Blockly.ContextMenuRegistry.registry.unregister(duplicateOption.id)
|
|
154
|
+
Blockly.ContextMenuRegistry.registry.register(duplicateOption)
|
|
180
155
|
}
|
package/src/css.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license
|
|
3
2
|
* Visual Blocks Editor
|
|
4
3
|
*
|
|
5
4
|
* Copyright 2013 Google Inc.
|
|
@@ -17,7 +16,7 @@
|
|
|
17
16
|
* See the License for the specific language governing permissions and
|
|
18
17
|
* limitations under the License.
|
|
19
18
|
*/
|
|
20
|
-
import * as Blockly from
|
|
19
|
+
import * as Blockly from 'blockly/core'
|
|
21
20
|
|
|
22
21
|
const styles = `
|
|
23
22
|
.blocklySvg {
|
|
@@ -1209,6 +1208,6 @@ const styles = `
|
|
|
1209
1208
|
.blocklyInsertionMarker > g:not(:last-child) {
|
|
1210
1209
|
visibility: hidden;
|
|
1211
1210
|
}
|
|
1212
|
-
|
|
1211
|
+
`
|
|
1213
1212
|
|
|
1214
|
-
Blockly.Css.register(styles)
|
|
1213
|
+
Blockly.Css.register(styles)
|