scratch-blocks 2.0.3 → 2.0.5

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 (42) hide show
  1. package/.nvmrc +1 -1
  2. package/commitlint.config.js +1 -1
  3. package/dist/main.mjs +1 -1
  4. package/dist/types/src/blocks/procedures.d.ts +1 -1
  5. package/dist/types/src/blocks/procedures.d.ts.map +1 -1
  6. package/dist/types/src/checkable_continuous_flyout.d.ts +1 -1
  7. package/dist/types/src/checkable_continuous_flyout.d.ts.map +1 -1
  8. package/dist/types/src/fields/field_colour_slider.d.ts +22 -0
  9. package/dist/types/src/fields/field_colour_slider.d.ts.map +1 -1
  10. package/dist/types/src/fields/field_note.d.ts.map +1 -1
  11. package/dist/types/src/index.d.ts +0 -4
  12. package/dist/types/src/index.d.ts.map +1 -1
  13. package/dist/types/src/recyclable_block_flyout_inflater.d.ts +1 -1
  14. package/dist/types/src/recyclable_block_flyout_inflater.d.ts.map +1 -1
  15. package/dist/types/src/renderer/path_object.d.ts.map +1 -1
  16. package/dist/types/src/scratch_continuous_category.d.ts +1 -1
  17. package/dist/types/src/scratch_continuous_category.d.ts.map +1 -1
  18. package/dist/types/src/scratch_continuous_toolbox.d.ts +1 -1
  19. package/dist/types/src/scratch_continuous_toolbox.d.ts.map +1 -1
  20. package/dist/types/src/scratch_dragger.d.ts +2 -2
  21. package/dist/types/src/scratch_dragger.d.ts.map +1 -1
  22. package/i18n/sync_tx_translations.js +1 -1
  23. package/i18n/test_scratch_msgs.js +2 -2
  24. package/package.json +10 -10
  25. package/src/blocks/procedures.ts +84 -24
  26. package/src/blocks/vertical_extensions.ts +34 -10
  27. package/src/checkable_continuous_flyout.ts +1 -1
  28. package/src/context_menu_items.ts +1 -1
  29. package/src/data_category.ts +3 -3
  30. package/src/fields/field_colour_slider.ts +1 -1
  31. package/src/fields/field_note.ts +3 -3
  32. package/src/fields/scratch_field_variable.ts +2 -2
  33. package/src/index.ts +1 -1
  34. package/src/procedures.ts +9 -9
  35. package/src/recyclable_block_flyout_inflater.ts +1 -1
  36. package/src/renderer/path_object.ts +9 -5
  37. package/src/renderer/render_info.ts +3 -3
  38. package/src/scratch_connection_checker.ts +16 -0
  39. package/src/scratch_continuous_category.ts +1 -1
  40. package/src/scratch_continuous_toolbox.ts +1 -1
  41. package/src/scratch_dragger.ts +15 -8
  42. package/src/scratch_variable_map.ts +1 -1
@@ -42,7 +42,7 @@ interface ProcedureBlock extends Blockly.BlockSvg {
42
42
  getProcCode: () => string;
43
43
  removeAllInputs_: () => void;
44
44
  disconnectOldBlocks_: () => ConnectionMap;
45
- deleteShadows_: (connectionMap: ConnectionMap) => void;
45
+ disposeObsoleteBlocks_: (connectionMap: ConnectionMap) => void;
46
46
  createAllInputs_: (connectionMap: ConnectionMap) => void;
47
47
  updateDisplay_: () => void;
48
48
  populateArgument_: (type: ArgumentType, index: number, connectionMap: ConnectionMap, id: string, input: Blockly.Input) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../../src/blocks/procedures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAIvC;;GAEG;AACH,KAAK,aAAa,GAAG,MAAM,CACzB,MAAM,EACN;IACE,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAA;CACxB,GAAG,IAAI,CACT,CAAA;AAED;;GAEG;AACH,aAAK,YAAY;IACf,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,OAAO,MAAM;CACd;AA+8BD,UAAU,cAAe,SAAQ,OAAO,CAAC,QAAQ;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,MAAM,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,MAAM,aAAa,CAAA;IACzC,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAA;IACtD,gBAAgB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAA;IACxD,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,iBAAiB,EAAE,CACjB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,aAAa,EAC5B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,KAAK,KACjB,IAAI,CAAA;IACT,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAA;IACnD,qBAAqB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAA;IAC5F,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB"}
1
+ {"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../../src/blocks/procedures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAIvC;;GAEG;AACH,KAAK,aAAa,GAAG,MAAM,CACzB,MAAM,EACN;IACE,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAA;CACxB,GAAG,IAAI,CACT,CAAA;AAED;;GAEG;AACH,aAAK,YAAY;IACf,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,OAAO,MAAM;CACd;AA2gCD,UAAU,cAAe,SAAQ,OAAO,CAAC,QAAQ;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,MAAM,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,MAAM,aAAa,CAAA;IACzC,sBAAsB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAA;IAC9D,gBAAgB,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAA;IACxD,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,iBAAiB,EAAE,CACjB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,aAAa,EAC5B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,KAAK,KACjB,IAAI,CAAA;IACT,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAA;IACnD,qBAAqB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAA;IAC5F,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,uBAAuB,EAAE,MAAM,IAAI,CAAA;IACnC,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB"}
@@ -2,8 +2,8 @@
2
2
  * Copyright 2024 Google LLC
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import * as Blockly from 'blockly/core';
6
5
  import { ContinuousFlyout } from '@blockly/continuous-toolbox';
6
+ import * as Blockly from 'blockly/core';
7
7
  export declare class CheckableContinuousFlyout extends ContinuousFlyout {
8
8
  /**
9
9
  * Creates a new CheckableContinuousFlyout.
@@ -1 +1 @@
1
- {"version":3,"file":"checkable_continuous_flyout.d.ts","sourceRoot":"","sources":["../../../src/checkable_continuous_flyout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAK9D,qBAAa,yBAA0B,SAAQ,gBAAgB;IAC7D;;;OAGG;gBACS,gBAAgB,EAAE,OAAO,CAAC,OAAO;IAQ7C;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ;IAUhD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAIhD,cAAc;IAId,QAAQ;IAIR,SAAS,CAAC,eAAe;IAoBzB;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU;IAIrD;;OAEG;IACH,oBAAoB;IAQpB,QAAQ,CAAC,QAAQ,EAAE,MAAM;CAG1B"}
1
+ {"version":3,"file":"checkable_continuous_flyout.d.ts","sourceRoot":"","sources":["../../../src/checkable_continuous_flyout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAKvC,qBAAa,yBAA0B,SAAQ,gBAAgB;IAC7D;;;OAGG;gBACS,gBAAgB,EAAE,OAAO,CAAC,OAAO;IAQ7C;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ;IAUhD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAIhD,cAAc;IAId,QAAQ;IAIR,SAAS,CAAC,eAAe;IAoBzB;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU;IAIrD;;OAEG;IACH,oBAAoB;IAQpB,QAAQ,CAAC,QAAQ,EAAE,MAAM;CAG1B"}
@@ -1,3 +1,25 @@
1
+ /**
2
+ * Visual Blocks Editor
3
+ *
4
+ * Copyright 2012 Google Inc.
5
+ * https://developers.google.com/blockly/
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ /**
20
+ * @file Colour input field.
21
+ * @author fraser@google.com (Neil Fraser)
22
+ */
1
23
  import { FieldColour, FieldColourFromJsonConfig } from '@blockly/field-colour';
2
24
  /**
3
25
  * Class for a slider-based colour input field.
@@ -1 +1 @@
1
- {"version":3,"file":"field_colour_slider.d.ts","sourceRoot":"","sources":["../../../../src/fields/field_colour_slider.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAQ9E;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAA;IAEzE;;OAEG;IACH,eAAe,SAAmB;IAClC,YAAY,UAAO;IACnB,QAAQ,UAAO;IAEf,OAAO,CAAC,kBAAkB,CAAC,CAA4B;IACvD,OAAO,CAAC,yBAAyB,CAAC,CAA4B;IAC9D,OAAO,CAAC,yBAAyB,CAAC,CAA4B;IAC9D,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IAEzD;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,GAAG,iBAAiB;IAItE,cAAc,CAAC,QAAQ,EAAE,MAAM;IAM/B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC;;OAEG;IACH,WAAW;IAwFX,OAAO;IAkBP,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CA+BvG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,SAExC"}
1
+ {"version":3,"file":"field_colour_slider.d.ts","sourceRoot":"","sources":["../../../../src/fields/field_colour_slider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAS9E;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAA;IAEzE;;OAEG;IACH,eAAe,SAAmB;IAClC,YAAY,UAAO;IACnB,QAAQ,UAAO;IAEf,OAAO,CAAC,kBAAkB,CAAC,CAA4B;IACvD,OAAO,CAAC,yBAAyB,CAAC,CAA4B;IAC9D,OAAO,CAAC,yBAAyB,CAAC,CAA4B;IAC9D,OAAO,CAAC,UAAU,CAAC,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IAEzD;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,GAAG,iBAAiB;IAItE,cAAc,CAAC,QAAQ,EAAE,MAAM;IAM/B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAYnC;;OAEG;IACH,WAAW;IAwFX,OAAO;IAkBP,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CA+BvG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,SAExC"}
@@ -1 +1 @@
1
- {"version":3,"file":"field_note.d.ts","sourceRoot":"","sources":["../../../../src/fields/field_note.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field_note.d.ts","sourceRoot":"","sources":["../../../../src/fields/field_note.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Copyright 2023 Google LLC
3
- * SPDX-License-Identifier: Apache-2.0
4
- */
5
1
  import * as Blockly from 'blockly/core';
6
2
  import './blocks/colour';
7
3
  import './blocks/control';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,OAAO,iBAAiB,CAAA;AACxB,OAAO,kBAAkB,CAAA;AACzB,OAAO,eAAe,CAAA;AACtB,OAAO,gBAAgB,CAAA;AACvB,OAAO,gBAAgB,CAAA;AACvB,OAAO,eAAe,CAAA;AACtB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,eAAe,CAAA;AACtB,OAAO,oBAAoB,CAAA;AAC3B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,kBAAkB,CAAA;AACzB,OAAO,gBAAgB,CAAA;AACvB,OAAO,eAAe,CAAA;AACtB,OAAO,8BAA8B,CAAA;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAA;AACxD,OAAO,OAAO,CAAA;AACd,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,yCAAyC,CAAA;AAChD,OAAO,EAA6B,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAE3F,OAAO,EAAqB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAQlE,OAAO,wBAAwB,CAAA;AAC/B,OAAO,EAAmB,SAAS,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,yBAAyB,CAAA;AAChC,OAAO,qBAAqB,CAAA;AAE5B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,wBAAwB,CAAA;AAC/B,OAAO,8BAA8B,CAAA;AAGrC,OAAO,mBAAmB,CAAA;AAC1B,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wBAAwB,CAAA;AAC/B,OAAO,0BAA0B,CAAA;AAIjC,OAAO,KAAK,gBAAgB,MAAM,aAAa,CAAA;AAE/C,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,OAAO,EAAE,yBAAyB,EAAE,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAClF,cAAc,OAAO,CAAA;AAErB,UAAU,oBAAqB,SAAQ,OAAO,CAAC,cAAc;IAC3D;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC;AASD,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,wBAmDvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,iBAAiB,CAAA;AACxB,OAAO,kBAAkB,CAAA;AACzB,OAAO,eAAe,CAAA;AACtB,OAAO,gBAAgB,CAAA;AACvB,OAAO,gBAAgB,CAAA;AACvB,OAAO,eAAe,CAAA;AACtB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,eAAe,CAAA;AACtB,OAAO,oBAAoB,CAAA;AAC3B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,kBAAkB,CAAA;AACzB,OAAO,gBAAgB,CAAA;AACvB,OAAO,eAAe,CAAA;AACtB,OAAO,8BAA8B,CAAA;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,gBAAgB,MAAM,sBAAsB,CAAA;AACxD,OAAO,OAAO,CAAA;AACd,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wCAAwC,CAAA;AAC/C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,oCAAoC,CAAA;AAC3C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,yCAAyC,CAAA;AAChD,OAAO,EAA6B,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAE3F,OAAO,EAAqB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAQlE,OAAO,wBAAwB,CAAA;AAC/B,OAAO,EAAmB,SAAS,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,yBAAyB,CAAA;AAChC,OAAO,qBAAqB,CAAA;AAE5B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,wBAAwB,CAAA;AAC/B,OAAO,8BAA8B,CAAA;AAGrC,OAAO,mBAAmB,CAAA;AAC1B,OAAO,sCAAsC,CAAA;AAC7C,OAAO,wBAAwB,CAAA;AAC/B,OAAO,0BAA0B,CAAA;AAIjC,OAAO,KAAK,gBAAgB,MAAM,aAAa,CAAA;AAE/C,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,OAAO,EAAE,yBAAyB,EAAE,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAClF,cAAc,OAAO,CAAA;AAErB,UAAU,oBAAqB,SAAQ,OAAO,CAAC,cAAc;IAC3D;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC;AASD,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,wBAmDvE"}
@@ -2,8 +2,8 @@
2
2
  * Copyright 2024 Google LLC
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import * as Blockly from 'blockly/core';
6
5
  import { RecyclableBlockFlyoutInflater as BlocklyRecyclableBlockFlyoutInflater } from '@blockly/continuous-toolbox';
6
+ import * as Blockly from 'blockly/core';
7
7
  /**
8
8
  * A block inflater that caches and reuses blocks to improve performance.
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"recyclable_block_flyout_inflater.d.ts","sourceRoot":"","sources":["../../../src/recyclable_block_flyout_inflater.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,6BAA6B,IAAI,oCAAoC,EAAE,MAAM,6BAA6B,CAAA;AAGnH;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,oCAAoC;IACrF;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU;CAYxG;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,SAGpD"}
1
+ {"version":3,"file":"recyclable_block_flyout_inflater.d.ts","sourceRoot":"","sources":["../../../src/recyclable_block_flyout_inflater.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,6BAA6B,IAAI,oCAAoC,EAAE,MAAM,6BAA6B,CAAA;AACnH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAGvC;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,oCAAoC;IACrF;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU;CAYxG;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,SAGpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"path_object.d.ts","sourceRoot":"","sources":["../../../../src/renderer/path_object.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,qBAAa,UAAW,SAAQ,OAAO,CAAC,KAAK,CAAC,UAAU;IACtD;;;;OAIG;IACM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ;CAY7C"}
1
+ {"version":3,"file":"path_object.d.ts","sourceRoot":"","sources":["../../../../src/renderer/path_object.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;GAGG;AACH,qBAAa,UAAW,SAAQ,OAAO,CAAC,KAAK,CAAC,UAAU;IACtD;;;;OAIG;IACM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ;CAgB7C"}
@@ -2,8 +2,8 @@
2
2
  * Copyright 2024 Google LLC
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import * as Blockly from 'blockly/core';
6
5
  import { ContinuousCategory } from '@blockly/continuous-toolbox';
6
+ import * as Blockly from 'blockly/core';
7
7
  type StatusIndicatorCategoryInfo = Blockly.utils.toolbox.CategoryInfo & {
8
8
  showStatusButton?: string;
9
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scratch_continuous_category.d.ts","sourceRoot":"","sources":["../../../src/scratch_continuous_category.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAEhE,KAAK,2BAA2B,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAQ;IAEhC;;;;;OAKG;gBAED,cAAc,EAAE,2BAA2B,EAC3C,aAAa,EAAE,OAAO,CAAC,OAAO,EAC9B,UAAU,CAAC,EAAE,OAAO,CAAC,uBAAuB;IAM9C;;;OAGG;IACH,cAAc,IAAI,WAAW;IAa7B;;;OAGG;IACH,WAAW,CAAC,UAAU,EAAE,OAAO;IAM/B;;;;OAIG;IACH,sBAAsB;CAGvB;AAED,uEAAuE;AACvE,wBAAgB,iCAAiC,SAOhD"}
1
+ {"version":3,"file":"scratch_continuous_category.d.ts","sourceRoot":"","sources":["../../../src/scratch_continuous_category.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,KAAK,2BAA2B,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAQ;IAEhC;;;;;OAKG;gBAED,cAAc,EAAE,2BAA2B,EAC3C,aAAa,EAAE,OAAO,CAAC,OAAO,EAC9B,UAAU,CAAC,EAAE,OAAO,CAAC,uBAAuB;IAM9C;;;OAGG;IACH,cAAc,IAAI,WAAW;IAa7B;;;OAGG;IACH,WAAW,CAAC,UAAU,EAAE,OAAO;IAM/B;;;;OAIG;IACH,sBAAsB;CAGvB;AAED,uEAAuE;AACvE,wBAAgB,iCAAiC,SAOhD"}
@@ -2,8 +2,8 @@
2
2
  * Copyright 2024 Google LLC
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import * as Blockly from 'blockly/core';
6
5
  import { ContinuousToolbox } from '@blockly/continuous-toolbox';
6
+ import * as Blockly from 'blockly/core';
7
7
  /**
8
8
  * A toolbox that displays items from all categories in one scrolling list.
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scratch_continuous_toolbox.d.ts","sourceRoot":"","sources":["../../../src/scratch_continuous_toolbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAI/D;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,gBAAgB;IAKhB;;;;;OAKG;IACH,SAAS,CAAC,+BAA+B,CACvC,WAAW,EAAE,OAAO,CAAC,YAAY,GAChC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB;IAY5C;;OAEG;IACH,aAAa;IAUb;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;IAIrC;;;;;;OAMG;IACH,mBAAmB,CACjB,OAAO,EAAE,OAAO,CAAC,sBAAsB,GAAG,IAAI,EAC9C,OAAO,EAAE,OAAO,CAAC,sBAAsB,GAAG,IAAI;CAKjD"}
1
+ {"version":3,"file":"scratch_continuous_toolbox.d.ts","sourceRoot":"","sources":["../../../src/scratch_continuous_toolbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAIvC;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,gBAAgB;IAKhB;;;;;OAKG;IACH,SAAS,CAAC,+BAA+B,CACvC,WAAW,EAAE,OAAO,CAAC,YAAY,GAChC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB;IAY5C;;OAEG;IACH,aAAa;IAUb;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;IAIrC;;;;;;OAMG;IACH,mBAAmB,CACjB,OAAO,EAAE,OAAO,CAAC,sBAAsB,GAAG,IAAI,EAC9C,OAAO,EAAE,OAAO,CAAC,sBAAsB,GAAG,IAAI;CAKjD"}
@@ -50,8 +50,8 @@ export declare class ScratchDragger extends Blockly.dragging.Dragger {
50
50
  */
51
51
  shouldReturnToStart(event: PointerEvent, rootDraggable: Blockly.IDraggable): boolean;
52
52
  /**
53
- * Returns the root element being dragged. For shadow blocks, this is the
54
- * parent block.
53
+ * Returns the root element being dragged. For shadow blocks and the
54
+ * procedures_prototype block, this is the parent block.
55
55
  * @param draggable The element being dragged directly.
56
56
  * @returns The element being dragged, or its parent.
57
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"scratch_dragger.d.ts","sourceRoot":"","sources":["../../../src/scratch_dragger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAUvC;;GAEG;AACH,qBAAa,cAAe,SAAQ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC1D;;OAEG;IACH,kBAAkB,UAAQ;IAE1B;;OAEG;IACH,oBAAoB,UAAQ;IAE5B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU;IAI1C;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,YAAY;IAgB/B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;IAKhE;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE,YAAY;IAW1C;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY;IA0C7B;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,UAAU;IAO1E;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU;IAWzC;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,YAAY;CAKtC"}
1
+ {"version":3,"file":"scratch_dragger.d.ts","sourceRoot":"","sources":["../../../src/scratch_dragger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAUvC;;GAEG;AACH,qBAAa,cAAe,SAAQ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAC1D;;OAEG;IACH,kBAAkB,UAAQ;IAE1B;;OAEG;IACH,oBAAoB,UAAQ;IAE5B;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU;IAI1C;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,YAAY;IAgB/B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;IAKhE;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE,YAAY;IAW1C;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,YAAY;IA8C7B;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,UAAU;IAO1E;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU;IAczC;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,YAAY;CAKtC"}
@@ -104,7 +104,7 @@ Promise.all(Object.keys(locales).map(getLocaleData))
104
104
  // write combined file
105
105
  fs.writeFileSync(`${PATH_OUTPUT}/scratch_msgs.js`, file)
106
106
  })
107
- .catch(err => {
107
+ .catch((err) => {
108
108
  console.error(err)
109
109
  process.exit(1)
110
110
  })
@@ -50,8 +50,8 @@ const validateKeys = function () {
50
50
  // ignore empty keys first time through
51
51
  if (keys.length === 0) return
52
52
  assert.strictEqual(keys.length, Object.keys(en).length, `scratch_msgs-${locale}: number of keys doesn't match`)
53
- keys.map(item => assert(enKeys.includes(item), `scratch_msgs-${locale}: has key ${item} not in en`))
54
- enKeys.map(item => assert(keys.includes(item), `scratch_msgs-${locale}: is missing key ${item}`))
53
+ keys.map((item) => assert(enKeys.includes(item), `scratch_msgs-${locale}: has key ${item} not in en`))
54
+ enKeys.map((item) => assert(keys.includes(item), `scratch_msgs-${locale}: is missing key ${item}`))
55
55
  }
56
56
 
57
57
  // Stream input and push each match to the storage object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scratch-blocks",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "Scratch Blocks is a library for building creative computing interfaces.",
5
5
  "author": "Massachusetts Institute of Technology",
6
6
  "license": "Apache-2.0",
@@ -32,19 +32,19 @@
32
32
  "blockly": "^12.4.1"
33
33
  },
34
34
  "devDependencies": {
35
- "@commitlint/cli": "17.8.1",
36
- "@commitlint/config-conventional": "17.8.1",
37
- "eslint": "^9.39.3",
38
- "eslint-config-scratch": "^13.0.0",
35
+ "@commitlint/cli": "20.4.3",
36
+ "@commitlint/config-conventional": "20.4.3",
37
+ "eslint": "9.39.4",
38
+ "eslint-config-scratch": "14.0.3",
39
39
  "husky": "9.1.7",
40
40
  "prettier": "3.8.1",
41
41
  "scratch-semantic-release-config": "4.0.1",
42
- "semantic-release": "22.0.12",
43
- "source-map-loader": "4.0.2",
42
+ "semantic-release": "25.0.3",
43
+ "source-map-loader": "5.0.0",
44
44
  "ts-loader": "9.5.4",
45
- "typescript": "5.6.3",
46
- "webpack": "5.104.1",
47
- "webpack-cli": "4.10.0",
45
+ "typescript": "5.9.3",
46
+ "webpack": "5.105.4",
47
+ "webpack-cli": "6.0.1",
48
48
  "webpack-dev-server": "5.2.3"
49
49
  },
50
50
  "config": {
@@ -43,6 +43,41 @@ enum ArgumentType {
43
43
  BOOLEAN = 'b',
44
44
  }
45
45
 
46
+ /**
47
+ * A drag strategy for the procedures_prototype block that delegates all drag
48
+ * operations to its parent (the procedures_definition block). This lets the
49
+ * prototype act as a non-shadow block (so its argument-reporter children can
50
+ * also be non-shadow and therefore clickable/draggable) while still causing
51
+ * the entire definition to move when the prototype area is dragged.
52
+ */
53
+ class DelegateToParentDraggable implements Blockly.IDraggable {
54
+ constructor(private block: Blockly.BlockSvg) {}
55
+
56
+ isMovable(): boolean {
57
+ return this.block.getParent()?.isMovable() ?? false
58
+ }
59
+
60
+ startDrag(e: PointerEvent) {
61
+ this.block.getParent()?.startDrag(e)
62
+ }
63
+
64
+ drag(newLoc: Blockly.utils.Coordinate, e?: PointerEvent) {
65
+ this.block.getParent()?.drag(newLoc, e)
66
+ }
67
+
68
+ endDrag(e: PointerEvent) {
69
+ this.block.getParent()?.endDrag(e)
70
+ }
71
+
72
+ revertDrag() {
73
+ this.block.getParent()?.revertDrag()
74
+ }
75
+
76
+ getRelativeToSurfaceXY() {
77
+ return (this.block.getParent() ?? this.block).getRelativeToSurfaceXY()
78
+ }
79
+ }
80
+
46
81
  /**
47
82
  * Class representing a draggable block that copies itself on drag.
48
83
  */
@@ -76,6 +111,8 @@ class DuplicateOnDragDraggable implements Blockly.IDraggable {
76
111
  return
77
112
  }
78
113
  this.copy = Blockly.clipboard.paste(data, this.block.workspace) as Blockly.BlockSvg
114
+ this.copy.setDeletable(true)
115
+ this.copy.setDragStrategy(new Blockly.dragging.BlockDragStrategy(this.copy))
79
116
  this.copy.startDrag(e)
80
117
  }
81
118
 
@@ -200,7 +237,7 @@ function updateDisplay_(this: ProcedureBlock) {
200
237
  const connectionMap = this.disconnectOldBlocks_()
201
238
  this.removeAllInputs_()
202
239
  this.createAllInputs_(connectionMap)
203
- this.deleteShadows_(connectionMap)
240
+ this.disposeObsoleteBlocks_(connectionMap)
204
241
  }
205
242
 
206
243
  /**
@@ -284,23 +321,27 @@ function createAllInputs_(this: ProcedureBlock, connectionMap: ConnectionMap) {
284
321
  }
285
322
 
286
323
  /**
287
- * Delete all shadow blocks in the given map.
324
+ * Dispose of blocks that were disconnected from the block (and not reconnected) during mutation.
325
+ * This includes:
326
+ * - shadow blocks for default argument values (on call blocks)
327
+ * - shadow argument editor blocks (on declaration blocks in the procedure editor)
328
+ * - non-shadow argument reporter blocks (on the prototype)
288
329
  * @param connectionMap An object mapping argument IDs to the blocks that were
289
330
  * connected to those IDs at the beginning of the mutation.
290
331
  */
291
- function deleteShadows_(this: ProcedureBlock, connectionMap: ConnectionMap) {
292
- // Get rid of all of the old shadow blocks if they aren't connected.
293
- if (connectionMap) {
294
- for (const id in connectionMap) {
295
- const saveInfo = connectionMap[id]
296
- if (saveInfo) {
297
- const block = saveInfo.block
298
- if (block && block.isShadow()) {
299
- block.dispose()
300
- connectionMap[id] = null
301
- // At this point we know which shadow DOMs are about to be orphaned in
302
- // the VM. What do we do with that information?
303
- }
332
+ function disposeObsoleteBlocks_(this: ProcedureBlock, connectionMap: ConnectionMap) {
333
+ for (const id in connectionMap) {
334
+ const saveInfo = connectionMap[id]
335
+ if (saveInfo) {
336
+ const block = saveInfo.block
337
+ const isOrphanedArgumentReporter =
338
+ this.type === 'procedures_prototype' &&
339
+ (block.type === 'argument_reporter_string_number' || block.type === 'argument_reporter_boolean')
340
+ if (block.isShadow() || isOrphanedArgumentReporter) {
341
+ block.dispose()
342
+ connectionMap[id] = null
343
+ // At this point we know which shadow DOMs are about to be orphaned in
344
+ // the VM. What do we do with that information?
304
345
  }
305
346
  }
306
347
  }
@@ -409,7 +450,7 @@ function createArgumentReporter_(
409
450
  let newBlock
410
451
  try {
411
452
  newBlock = this.workspace.newBlock(blockType)
412
- newBlock.setShadow(true)
453
+ newBlock.setDeletable(false)
413
454
  newBlock.setFieldValue(displayName, 'VALUE')
414
455
  if (!this.isInsertionMarker()) {
415
456
  newBlock.initSvg()
@@ -780,12 +821,13 @@ function updateArgumentReporterNames_(
780
821
  if (!definitionBlock) return
781
822
 
782
823
  // Create a list of argument reporters that are descendants of the definition stack (see above comment)
783
- definitionBlock.getDescendants(false).forEach((block: Blockly.BlockSvg) => {
824
+ // Exclude arg reporters in the prototype block itself (they're owned by the prototype, not the user).
825
+ const protoDescendants = new Set(this.getDescendants(false))
826
+ definitionBlock.getDescendants(false).forEach((block) => {
784
827
  if (
785
828
  (block.type === 'argument_reporter_string_number' || block.type === 'argument_reporter_boolean') &&
786
- !block.isShadow()
829
+ !protoDescendants.has(block)
787
830
  ) {
788
- // Exclude arg reporters in the prototype block, which are shadows.
789
831
  argReporters.push(block)
790
832
  }
791
833
  })
@@ -800,7 +842,7 @@ function updateArgumentReporterNames_(
800
842
  if (prevName !== this.displayNames_[i]) {
801
843
  nameChanges.push({
802
844
  newName: this.displayNames_[i],
803
- blocks: argReporters.filter(block => block.getFieldValue('VALUE') === prevName),
845
+ blocks: argReporters.filter((block) => block.getFieldValue('VALUE') === prevName),
804
846
  })
805
847
  }
806
848
  }
@@ -848,7 +890,7 @@ Blockly.Blocks.procedures_call = {
848
890
  this.getProcCode = getProcCode.bind(this)
849
891
  this.removeAllInputs_ = removeAllInputs_.bind(this)
850
892
  this.disconnectOldBlocks_ = disconnectOldBlocks_.bind(this)
851
- this.deleteShadows_ = deleteShadows_.bind(this)
893
+ this.disposeObsoleteBlocks_ = disposeObsoleteBlocks_.bind(this)
852
894
  this.createAllInputs_ = createAllInputs_.bind(this)
853
895
  this.updateDisplay_ = updateDisplay_.bind(this)
854
896
 
@@ -874,6 +916,13 @@ Blockly.Blocks.procedures_prototype = {
874
916
  extensions: ['colours_more', 'shape_statement'],
875
917
  })
876
918
 
919
+ // Previously this block was a shadow, which is non-deletable and
920
+ // non-movable by default. Now that it's a regular block, explicitly
921
+ // replicate those properties and add a drag strategy that delegates all
922
+ // drag operations to the parent (procedures_definition) block.
923
+ this.setDeletable(false)
924
+ this.setDragStrategy(new DelegateToParentDraggable(this))
925
+
877
926
  /* Data known about the procedure. */
878
927
  this.procCode_ = ''
879
928
  this.displayNames_ = []
@@ -885,7 +934,7 @@ Blockly.Blocks.procedures_prototype = {
885
934
  this.getProcCode = getProcCode.bind(this)
886
935
  this.removeAllInputs_ = removeAllInputs_.bind(this)
887
936
  this.disconnectOldBlocks_ = disconnectOldBlocks_.bind(this)
888
- this.deleteShadows_ = deleteShadows_.bind(this)
937
+ this.disposeObsoleteBlocks_ = disposeObsoleteBlocks_.bind(this)
889
938
  this.createAllInputs_ = createAllInputs_.bind(this)
890
939
  this.updateDisplay_ = updateDisplay_.bind(this)
891
940
  // Exist on all three blocks, but have different implementations.
@@ -919,7 +968,7 @@ Blockly.Blocks.procedures_declaration = {
919
968
  this.getProcCode = getProcCode.bind(this)
920
969
  this.removeAllInputs_ = removeAllInputs_.bind(this)
921
970
  this.disconnectOldBlocks_ = disconnectOldBlocks_.bind(this)
922
- this.deleteShadows_ = deleteShadows_.bind(this)
971
+ this.disposeObsoleteBlocks_ = disposeObsoleteBlocks_.bind(this)
923
972
  this.createAllInputs_ = createAllInputs_.bind(this)
924
973
  this.updateDisplay_ = updateDisplay_.bind(this)
925
974
 
@@ -942,6 +991,17 @@ Blockly.Blocks.procedures_declaration = {
942
991
  this.addStringNumberExternal = addStringNumberExternal.bind(this)
943
992
  this.onChangeFn = updateDeclarationProcCode_.bind(this)
944
993
  },
994
+ // The procedures_declaration block lives in the ephemeral Custom Procedures
995
+ // dialog workspace, which is disposed (and unregistered from FocusManager)
996
+ // when the dialog closes. If FocusManager tracks this block as the focused
997
+ // node while the WidgetDiv is open, the `returnEphemeralFocus` callback
998
+ // schedules a setTimeout that tries to re-focus it after the dialog workspace
999
+ // has been disposed — throwing "Attempted to focus unregistered node". Making
1000
+ // this block non-focusable prevents FocusManager from ever storing it as the
1001
+ // focused node, so the setTimeout is never scheduled.
1002
+ canBeFocused: function () {
1003
+ return false
1004
+ },
945
1005
  }
946
1006
 
947
1007
  Blockly.Blocks.argument_reporter_boolean = {
@@ -1023,7 +1083,7 @@ interface ProcedureBlock extends Blockly.BlockSvg {
1023
1083
  getProcCode: () => string
1024
1084
  removeAllInputs_: () => void
1025
1085
  disconnectOldBlocks_: () => ConnectionMap
1026
- deleteShadows_: (connectionMap: ConnectionMap) => void
1086
+ disposeObsoleteBlocks_: (connectionMap: ConnectionMap) => void
1027
1087
  createAllInputs_: (connectionMap: ConnectionMap) => void
1028
1088
  updateDisplay_: () => void
1029
1089
  populateArgument_: (
@@ -28,6 +28,10 @@ import * as Constants from '../constants'
28
28
  import { FlyoutCheckboxIcon } from '../flyout_checkbox_icon'
29
29
  import { ScratchProcedures } from '../procedures'
30
30
 
31
+ interface ScratchBlockSvg extends Blockly.BlockSvg {
32
+ hatStylePersisted?: boolean
33
+ }
34
+
31
35
  /**
32
36
  * Helper function that generates an extension based on a category name.
33
37
  * The generated function will set the block's style based on the category name.
@@ -61,26 +65,46 @@ const SHAPE_STATEMENT = function (this: Blockly.Block) {
61
65
  this.setNextStatement(true, null)
62
66
  }
63
67
 
68
+ /**
69
+ * Build an extension to make a block be shaped as a hat block, based on the given hat type.
70
+ * Replaces the block's setStyle function to ensure that the hat shape is preserved
71
+ * even if the style is changed or rebuilt.
72
+ * @param hatType the type of hat: 'cap' for regular Scratch hat blocks, or 'bowler' for procedure definitions.
73
+ * @returns A Blockly extension implementing the requested hat type.
74
+ */
75
+ const makeHatExtension = function (hatType: string) {
76
+ return function (this: Blockly.Block) {
77
+ this.setInputsInline(true)
78
+ this.setNextStatement(true, null)
79
+ this.hat = hatType
80
+ // When the workspace theme is refreshed (e.g. when an extension is loaded),
81
+ // Blockly calls setStyle() on all workspace blocks. This resets block.hat to
82
+ // the style's hat value, which is '' for most styles, erasing the hat set
83
+ // above. Override setStyle on this instance to re-apply the hat afterward.
84
+ const blockSvg = this as ScratchBlockSvg
85
+ if (!blockSvg.hatStylePersisted) {
86
+ const origSetStyle = blockSvg.setStyle.bind(blockSvg)
87
+ blockSvg.setStyle = function (blockStyleName: string) {
88
+ origSetStyle(blockStyleName)
89
+ blockSvg.hat = hatType
90
+ }
91
+ blockSvg.hatStylePersisted = true
92
+ }
93
+ }
94
+ }
95
+
64
96
  /**
65
97
  * Extension to make a block be shaped as a hat block, regardless of its
66
98
  * inputs. That means the block should have a next connection and have inline
67
99
  * inputs, but have no previous connection.
68
100
  */
69
- const SHAPE_HAT = function (this: Blockly.Block) {
70
- this.setInputsInline(true)
71
- this.setNextStatement(true, null)
72
- this.hat = 'cap'
73
- }
101
+ const SHAPE_HAT = makeHatExtension('cap')
74
102
 
75
103
  /**
76
104
  * Extension to make a block be shaped as a bowler hat block, with rounded
77
105
  * corners on both sides and no indentation for statement blocks.
78
106
  */
79
- const SHAPE_BOWLER_HAT = function (this: Blockly.Block) {
80
- this.setInputsInline(true)
81
- this.setNextStatement(true, null)
82
- this.hat = 'bowler'
83
- }
107
+ const SHAPE_BOWLER_HAT = makeHatExtension('bowler')
84
108
 
85
109
  /**
86
110
  * Extension to make a block be shaped as an end block, regardless of its
@@ -2,8 +2,8 @@
2
2
  * Copyright 2024 Google LLC
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import * as Blockly from 'blockly/core'
6
5
  import { ContinuousFlyout } from '@blockly/continuous-toolbox'
6
+ import * as Blockly from 'blockly/core'
7
7
  import { CheckboxBubble } from './checkbox_bubble'
8
8
  import { StatusIndicatorLabel } from './status_indicator_label'
9
9
  import { STATUS_INDICATOR_LABEL_TYPE } from './status_indicator_label_flyout_inflater'
@@ -38,7 +38,7 @@ function getDeletableBlocksInStack(block: Blockly.BlockSvg): Blockly.BlockSvg[]
38
38
  if (block.getNextBlock()) {
39
39
  // Next blocks are not deleted.
40
40
  const nextDescendants = block.getNextBlock()!.getDescendants(false).filter(isDeletable)
41
- descendants = descendants.filter(b => !nextDescendants.includes(b))
41
+ descendants = descendants.filter((b) => !nextDescendants.includes(b))
42
42
  }
43
43
  return descendants
44
44
  }
@@ -36,7 +36,7 @@ export function getVariablesCategory(workspace: Blockly.WorkspaceSvg): Element[]
36
36
 
37
37
  addCreateButton(xmlList, workspace, 'VARIABLE')
38
38
 
39
- scalarVariables.forEach(variable => addDataVariable(xmlList, variable))
39
+ scalarVariables.forEach((variable) => addDataVariable(xmlList, variable))
40
40
 
41
41
  if (scalarVariables.length > 0) {
42
42
  xmlList[xmlList.length - 1].setAttribute('gap', '24')
@@ -52,7 +52,7 @@ export function getVariablesCategory(workspace: Blockly.WorkspaceSvg): Element[]
52
52
  addCreateButton(xmlList, workspace, 'LIST')
53
53
  const listVariables = workspace.getVariablesOfType(LIST_VARIABLE_TYPE)
54
54
  listVariables.sort(Blockly.Variables.compareByName)
55
- listVariables.forEach(variable => addDataList(xmlList, variable))
55
+ listVariables.forEach((variable) => addDataList(xmlList, variable))
56
56
 
57
57
  if (listVariables.length > 0) {
58
58
  xmlList[xmlList.length - 1].setAttribute('gap', '24')
@@ -387,7 +387,7 @@ function addCreateButton(xmlList: Element[], workspace: Blockly.WorkspaceSvg, ty
387
387
  }
388
388
  button.setAttribute('text', msg)
389
389
  button.setAttribute('callbackKey', callbackKey)
390
- workspace.registerButtonCallback(callbackKey, b => {
390
+ workspace.registerButtonCallback(callbackKey, (b) => {
391
391
  // Run the callback after a delay to avoid it getting captured by the React
392
392
  // modal in scratch-gui and being registered as a click on the scrim that
393
393
  // dismisses the dialog.
@@ -20,8 +20,8 @@
20
20
  * @file Colour input field.
21
21
  * @author fraser@google.com (Neil Fraser)
22
22
  */
23
- import * as Blockly from 'blockly/core'
24
23
  import { FieldColour, FieldColourFromJsonConfig } from '@blockly/field-colour'
24
+ import * as Blockly from 'blockly/core'
25
25
 
26
26
  enum ColourChannel {
27
27
  HUE = 'hue',
@@ -255,10 +255,10 @@ export class FieldNote extends Blockly.FieldTextInput {
255
255
  */
256
256
  dispose() {
257
257
  super.dispose()
258
- this.mouseDownWrappers_.forEach(wrapper => {
258
+ this.mouseDownWrappers_.forEach((wrapper) => {
259
259
  Blockly.browserEvents.unbind(wrapper)
260
260
  })
261
- this.mouseEnterWrappers_.forEach(wrapper => {
261
+ this.mouseEnterWrappers_.forEach((wrapper) => {
262
262
  Blockly.browserEvents.unbind(wrapper)
263
263
  })
264
264
  if (this.mouseUpWrapper_) {
@@ -722,7 +722,7 @@ export class FieldNote extends Blockly.FieldTextInput {
722
722
  const index = this.noteNumToKeyIndex_(noteNum)
723
723
 
724
724
  // Clear the highlight on all keys
725
- this.keySVGs_.forEach(svg => {
725
+ this.keySVGs_.forEach((svg) => {
726
726
  const isBlack = svg.getAttribute('data-isBlack')
727
727
  if (isBlack === 'true') {
728
728
  svg.setAttribute('fill', FieldNote.BLACK_KEY_COLOR)
@@ -92,7 +92,7 @@ export class ScratchFieldVariable extends Blockly.FieldVariable {
92
92
  if (type === Constants.BROADCAST_MESSAGE_VARIABLE_TYPE) {
93
93
  options.splice(-2, 2, [ScratchMsgs.translate('NEW_BROADCAST_MESSAGE'), Constants.NEW_BROADCAST_MESSAGE_ID])
94
94
  } else if (type === Constants.LIST_VARIABLE_TYPE) {
95
- options = options.map(option => {
95
+ options = options.map((option) => {
96
96
  if (option[1] === Blockly.RENAME_VARIABLE_ID) {
97
97
  return [ScratchMsgs.translate('RENAME_LIST'), option[1]]
98
98
  } else if (option[1] === Blockly.DELETE_VARIABLE_ID) {
@@ -120,7 +120,7 @@ export class ScratchFieldVariable extends Blockly.FieldVariable {
120
120
  if (selectedItem === Constants.NEW_BROADCAST_MESSAGE_ID) {
121
121
  createVariable(
122
122
  sourceBlock.workspace as Blockly.WorkspaceSvg,
123
- varId => {
123
+ (varId) => {
124
124
  if (varId) {
125
125
  this.setValue(varId)
126
126
  }
package/src/index.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  * Copyright 2023 Google LLC
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import * as Blockly from 'blockly/core'
6
5
  import { registerContinuousToolbox, ContinuousMetrics } from '@blockly/continuous-toolbox'
6
+ import * as Blockly from 'blockly/core'
7
7
  import './blocks/colour'
8
8
  import './blocks/control'
9
9
  import './blocks/data'