scratch-blocks 2.0.0-spork.2 → 2.0.0-spork.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.
Files changed (85) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/main.js +1 -1
  3. package/dist/main.js.LICENSE.txt +0 -12
  4. package/package.json +4 -4
  5. package/src/{block_reporting.js → block_reporting.ts} +7 -5
  6. package/src/blocks/{colour.js → colour.ts} +6 -6
  7. package/src/blocks/{control.js → control.ts} +21 -54
  8. package/src/blocks/{data.js → data.ts} +134 -142
  9. package/src/blocks/{event.js → event.ts} +12 -33
  10. package/src/blocks/{looks.js → looks.ts} +24 -73
  11. package/src/blocks/{math.js → math.ts} +6 -11
  12. package/src/blocks/{matrix.js → matrix.ts} +2 -3
  13. package/src/blocks/{motion.js → motion.ts} +23 -70
  14. package/src/blocks/{note.js → note.ts} +2 -3
  15. package/src/blocks/{operators.js → operators.ts} +18 -55
  16. package/src/blocks/{procedures.js → procedures.ts} +418 -269
  17. package/src/blocks/{sensing.js → sensing.ts} +21 -61
  18. package/src/blocks/{sound.js → sound.ts} +9 -28
  19. package/src/blocks/{text.js → text.ts} +1 -2
  20. package/src/blocks/{vertical_extensions.js → vertical_extensions.ts} +63 -100
  21. package/src/checkable_continuous_flyout.ts +112 -0
  22. package/src/{checkbox_bubble.js → checkbox_bubble.ts} +40 -58
  23. package/src/{colours.js → colours.ts} +11 -4
  24. package/src/{constants.js → constants.ts} +13 -0
  25. package/src/{context_menu_items.js → context_menu_items.ts} +18 -12
  26. package/src/{css.js → css.ts} +13 -7
  27. package/src/{data_category.js → data_category.ts} +216 -150
  28. package/src/events/{events_block_comment_base.js → events_block_comment_base.ts} +23 -4
  29. package/src/events/{events_block_comment_change.js → events_block_comment_change.ts} +29 -5
  30. package/src/events/{events_block_comment_collapse.js → events_block_comment_collapse.ts} +24 -6
  31. package/src/events/{events_block_comment_create.js → events_block_comment_create.ts} +36 -10
  32. package/src/events/{events_block_comment_delete.js → events_block_comment_delete.ts} +6 -2
  33. package/src/events/{events_block_comment_move.js → events_block_comment_move.ts} +36 -6
  34. package/src/events/events_block_comment_resize.ts +88 -0
  35. package/src/events/events_block_drag_end.ts +49 -0
  36. package/src/events/events_block_drag_outside.ts +44 -0
  37. package/src/events/{events_scratch_variable_create.js → events_scratch_variable_create.ts} +28 -15
  38. package/src/fields/{field_colour_slider.js → field_colour_slider.ts} +117 -106
  39. package/src/fields/{field_matrix.js → field_matrix.ts} +189 -215
  40. package/src/fields/{field_note.js → field_note.ts} +227 -286
  41. package/src/fields/{field_textinput_removable.js → field_textinput_removable.ts} +17 -20
  42. package/src/fields/{field_variable_getter.js → field_variable_getter.ts} +28 -17
  43. package/src/fields/{field_vertical_separator.js → field_vertical_separator.ts} +14 -30
  44. package/src/fields/{field_angle.js → scratch_field_angle.ts} +124 -80
  45. package/src/fields/{field_dropdown.js → scratch_field_dropdown.ts} +9 -7
  46. package/src/fields/{field_number.js → scratch_field_number.ts} +60 -55
  47. package/src/fields/{field_variable.js → scratch_field_variable.ts} +46 -27
  48. package/src/{flyout_checkbox_icon.js → flyout_checkbox_icon.ts} +15 -19
  49. package/src/{glows.js → glows.ts} +29 -18
  50. package/src/index.ts +62 -63
  51. package/src/procedures.ts +462 -0
  52. package/src/recyclable_block_flyout_inflater.ts +51 -0
  53. package/src/renderer/{bowler_hat.js → bowler_hat.ts} +1 -1
  54. package/src/renderer/{constants.js → constants.ts} +26 -12
  55. package/src/renderer/{drawer.js → drawer.ts} +8 -3
  56. package/src/renderer/{path_object.js → path_object.ts} +2 -2
  57. package/src/renderer/{render_info.js → render_info.ts} +19 -7
  58. package/src/renderer/renderer.ts +76 -0
  59. package/src/{scratch_block_paster.js → scratch_block_paster.ts} +9 -7
  60. package/src/scratch_blocks_utils.ts +39 -0
  61. package/src/{scratch_comment_icon.js → scratch_comment_icon.ts} +43 -26
  62. package/src/scratch_connection_checker.ts +44 -0
  63. package/src/{scratch_continuous_category.js → scratch_continuous_category.ts} +20 -13
  64. package/src/scratch_continuous_toolbox.ts +70 -0
  65. package/src/{scratch_dragger.js → scratch_dragger.ts} +97 -28
  66. package/src/{scratch_variable_map.js → scratch_variable_map.ts} +4 -1
  67. package/src/scratch_variable_model.ts +30 -0
  68. package/src/{shadows.js → shadows.ts} +8 -4
  69. package/src/{status_indicator_label.js → status_indicator_label.ts} +24 -36
  70. package/src/{status_indicator_label_flyout_inflater.js → status_indicator_label_flyout_inflater.ts} +13 -9
  71. package/src/{variables.js → variables.ts} +153 -123
  72. package/tsconfig.json +5 -0
  73. package/src/categories.js +0 -15
  74. package/src/checkable_continuous_flyout.js +0 -138
  75. package/src/events/events_block_comment_resize.js +0 -52
  76. package/src/events/events_block_drag_end.js +0 -33
  77. package/src/events/events_block_drag_outside.js +0 -30
  78. package/src/procedures.js +0 -425
  79. package/src/recyclable_block_flyout_inflater.js +0 -194
  80. package/src/renderer/renderer.js +0 -74
  81. package/src/scratch_blocks_utils.js +0 -148
  82. package/src/scratch_connection_checker.js +0 -29
  83. package/src/scratch_continuous_toolbox.js +0 -78
  84. package/src/scratch_variable_model.js +0 -24
  85. /package/{continuous-toolbox.d.ts → types/continuous-toolbox.d.ts} +0 -0
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
1
7
  /**
2
8
  * String representing the variable type of scalar variables.
3
9
  * This string, for use in differentiating between types of variables,
@@ -32,6 +38,13 @@ export { LIST_VARIABLE_TYPE };
32
38
  const PROCEDURES_DEFINITION_BLOCK_TYPE = "procedures_definition";
33
39
  export { PROCEDURES_DEFINITION_BLOCK_TYPE };
34
40
 
41
+ /*
42
+ * The type of all procedure declaration blocks.
43
+ * @const {string}
44
+ */
45
+ const PROCEDURES_DECLARATION_BLOCK_TYPE = "procedures_declaration";
46
+ export { PROCEDURES_DECLARATION_BLOCK_TYPE };
47
+
35
48
  /**
36
49
  * The type of all procedure prototype blocks.
37
50
  * @const {string}
@@ -11,19 +11,19 @@ import * as Blockly from "blockly/core";
11
11
  */
12
12
  export function registerDeleteBlock() {
13
13
  const deleteOption = {
14
- displayText(scope) {
14
+ displayText(scope: Blockly.ContextMenuRegistry.Scope) {
15
15
  const descendantCount = getDeletableBlocksInStack(scope.block).length;
16
16
  return descendantCount === 1
17
17
  ? Blockly.Msg["DELETE_BLOCK"]
18
18
  : Blockly.Msg["DELETE_X_BLOCKS"].replace("%1", `${descendantCount}`);
19
19
  },
20
- preconditionFn(scope) {
20
+ preconditionFn(scope: Blockly.ContextMenuRegistry.Scope) {
21
21
  if (!scope.block.isInFlyout && scope.block.isDeletable()) {
22
22
  return "enabled";
23
23
  }
24
24
  return "hidden";
25
25
  },
26
- callback(scope) {
26
+ callback(scope: Blockly.ContextMenuRegistry.Scope) {
27
27
  Blockly.Events.setGroup(true);
28
28
  scope.block.dispose(true, true);
29
29
  Blockly.Events.setGroup(false);
@@ -35,7 +35,9 @@ export function registerDeleteBlock() {
35
35
  Blockly.ContextMenuRegistry.registry.register(deleteOption);
36
36
  }
37
37
 
38
- function getDeletableBlocksInStack(block) {
38
+ function getDeletableBlocksInStack(
39
+ block: Blockly.BlockSvg
40
+ ): Blockly.BlockSvg[] {
39
41
  let descendants = block.getDescendants(false).filter(isDeletable);
40
42
  if (block.getNextBlock()) {
41
43
  // Next blocks are not deleted.
@@ -48,7 +50,7 @@ function getDeletableBlocksInStack(block) {
48
50
  return descendants;
49
51
  }
50
52
 
51
- function isDeletable(block) {
53
+ function isDeletable(block: Blockly.BlockSvg): boolean {
52
54
  return block.isDeletable() && !block.isShadow();
53
55
  }
54
56
 
@@ -57,7 +59,7 @@ function isDeletable(block) {
57
59
  */
58
60
  export function registerDeleteAll() {
59
61
  const deleteOption = {
60
- displayText(scope) {
62
+ displayText(scope: Blockly.ContextMenuRegistry.Scope) {
61
63
  if (!scope.workspace) {
62
64
  return "";
63
65
  }
@@ -72,7 +74,7 @@ export function registerDeleteAll() {
72
74
  `${deletableBlocksLength}`
73
75
  );
74
76
  },
75
- preconditionFn(scope) {
77
+ preconditionFn(scope: Blockly.ContextMenuRegistry.Scope) {
76
78
  if (!scope.workspace) {
77
79
  return "disabled";
78
80
  }
@@ -81,7 +83,7 @@ export function registerDeleteAll() {
81
83
  ).length;
82
84
  return deletableBlocksLength > 0 ? "enabled" : "disabled";
83
85
  },
84
- callback(scope) {
86
+ callback(scope: Blockly.ContextMenuRegistry.Scope) {
85
87
  if (!scope.workspace) {
86
88
  return;
87
89
  }
@@ -95,7 +97,7 @@ export function registerDeleteAll() {
95
97
  "%1",
96
98
  String(deletableBlocks.length)
97
99
  ),
98
- function (ok) {
100
+ function (ok: boolean) {
99
101
  if (ok) {
100
102
  deleteNext(deletableBlocks);
101
103
  }
@@ -116,10 +118,14 @@ export function registerDeleteAll() {
116
118
  * @param workspace to delete all blocks from.
117
119
  * @returns list of blocks to delete.
118
120
  */
119
- function getDeletableBlocksInWorkspace(workspace) {
121
+ function getDeletableBlocksInWorkspace(
122
+ workspace: Blockly.WorkspaceSvg
123
+ ): Blockly.BlockSvg[] {
120
124
  return workspace
121
125
  .getTopBlocks(true)
122
- .flatMap((b) => b.getDescendants(false).filter(isDeletable));
126
+ .flatMap((b: Blockly.BlockSvg) =>
127
+ b.getDescendants(false).filter(isDeletable)
128
+ );
123
129
  }
124
130
 
125
131
  /**
@@ -129,7 +135,7 @@ function getDeletableBlocksInWorkspace(workspace) {
129
135
  * @param eventGroup Event group ID with which all delete events should be
130
136
  * associated. If not specified, create a new group.
131
137
  */
132
- function deleteNext(deleteList, eventGroup) {
138
+ function deleteNext(deleteList: Blockly.BlockSvg[], eventGroup?: string) {
133
139
  const DELAY = 10;
134
140
  if (eventGroup) {
135
141
  Blockly.Events.setGroup(eventGroup);
@@ -751,8 +751,9 @@ const styles = `
751
751
  }
752
752
 
753
753
  /* Category tree in Toolbox. */
754
- .blocklyToolboxDiv {
754
+ .blocklyToolbox {
755
755
  background-color: var(--colour-toolbox);
756
+ border-right: 1px solid #ddd;
756
757
  color: var(--colour-toolboxText);
757
758
  overflow-x: visible;
758
759
  overflow-y: auto;
@@ -763,6 +764,11 @@ const styles = `
763
764
  padding: 0;
764
765
  }
765
766
 
767
+ .blocklyToolbox[dir="RTL"] {
768
+ border-right: none;
769
+ border-left: 1px solid #ddd;
770
+ }
771
+
766
772
  .blocklyTreeRoot {
767
773
  padding: 4px 0;
768
774
  }
@@ -771,7 +777,7 @@ const styles = `
771
777
  outline: none;
772
778
  }
773
779
 
774
- .blocklyToolboxDiv .blocklyTreeRow {
780
+ .blocklyToolbox .blocklyToolboxCategory {
775
781
  line-height: 22px;
776
782
  margin: 0;
777
783
  padding: 0.375rem 0px;
@@ -789,11 +795,11 @@ const styles = `
789
795
  margin: 1px 0 8px 5px;
790
796
  }
791
797
 
792
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {
793
- margin-left: 8px;
798
+ .blocklyToolbox[dir="RTL"] .blocklyToolboxCategory {
799
+ margin-left: 0px;
794
800
  }
795
801
 
796
- .blocklyTreeRow:hover {
802
+ .blocklyToolboxCategory:hover {
797
803
  color: var(--colour-toolboxHover);
798
804
  }
799
805
 
@@ -844,7 +850,7 @@ const styles = `
844
850
  background-position: -48px -1px;
845
851
  }
846
852
 
847
- .blocklyTreeLabel {
853
+ .blocklyToolboxCategoryLabel {
848
854
  cursor: default;
849
855
  font-family: "Helvetica Neue", Helvetica, sans-serif;
850
856
  font-size: .65rem;
@@ -855,7 +861,7 @@ const styles = `
855
861
  text-wrap: wrap;
856
862
  }
857
863
 
858
- .blocklyTreeSelected .blocklyTreeLabel {
864
+ .blocklyToolboxSelected .blocklyToolboxCategoryLabel {
859
865
  color: inherit;
860
866
  }
861
867