Skip to content

Commit dbb79ea

Browse files
authored
refactor: add and use explicit field registration methods (#172)
* refactor: add and use explicit field registration methods * chore: add comment to field registration methods
1 parent 2e98ff1 commit dbb79ea

11 files changed

+96
-30
lines changed

src/fields/field_angle.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,4 +423,9 @@ class FieldAngle extends Blockly.FieldNumber {
423423
}
424424
}
425425

426-
Blockly.fieldRegistry.register("field_angle", FieldAngle);
426+
/**
427+
* Register the field and any dependencies.
428+
*/
429+
export function registerFieldAngle() {
430+
Blockly.fieldRegistry.register("field_angle", FieldAngle);
431+
}

src/fields/field_colour_slider.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,4 +380,9 @@ export class FieldColourSlider extends FieldColour {
380380
}
381381
}
382382

383-
Blockly.fieldRegistry.register("field_colour_slider", FieldColourSlider);
383+
/**
384+
* Register the field and any dependencies.
385+
*/
386+
export function registerFieldColourSlider() {
387+
Blockly.fieldRegistry.register("field_colour_slider", FieldColourSlider);
388+
}

src/fields/field_dropdown.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,10 @@ class FieldDropdown extends Blockly.FieldDropdown {
3333
}
3434
}
3535

36-
Blockly.fieldRegistry.unregister("field_dropdown");
37-
Blockly.fieldRegistry.register("field_dropdown", FieldDropdown);
36+
/**
37+
* Register the field and any dependencies.
38+
*/
39+
export function registerFieldDropdown() {
40+
Blockly.fieldRegistry.unregister("field_dropdown");
41+
Blockly.fieldRegistry.register("field_dropdown", FieldDropdown);
42+
}

src/fields/field_matrix.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import * as Blockly from "blockly/core";
3131
* @extends {Blockly.Field}
3232
* @constructor
3333
*/
34-
export class FieldMatrix extends Blockly.Field {
34+
class FieldMatrix extends Blockly.Field {
3535
originalStyle;
3636

3737
constructor(matrix) {
@@ -626,4 +626,9 @@ export class FieldMatrix extends Blockly.Field {
626626
}
627627
}
628628

629-
Blockly.fieldRegistry.register("field_matrix", FieldMatrix);
629+
/**
630+
* Register the field and any dependencies.
631+
*/
632+
export function registerFieldMatrix() {
633+
Blockly.fieldRegistry.register("field_matrix", FieldMatrix);
634+
}

src/fields/field_note.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,4 +929,9 @@ export class FieldNote extends Blockly.FieldTextInput {
929929
}
930930
}
931931

932-
Blockly.fieldRegistry.register("field_note", FieldNote);
932+
/**
933+
* Register the field and any dependencies.
934+
*/
935+
export function registerFieldNote() {
936+
Blockly.fieldRegistry.register("field_note", FieldNote);
937+
}

src/fields/field_number.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,5 +371,10 @@ class FieldNumberPicker extends Blockly.FieldNumber {
371371

372372
FieldNumberPicker.prototype.DEFAULT_VALUE = "";
373373

374-
Blockly.fieldRegistry.unregister("field_number");
375-
Blockly.fieldRegistry.register("field_number", FieldNumberPicker);
374+
/**
375+
* Register the field and any dependencies.
376+
*/
377+
export function registerFieldNumber() {
378+
Blockly.fieldRegistry.unregister("field_number");
379+
Blockly.fieldRegistry.register("field_number", FieldNumberPicker);
380+
}

src/fields/field_textinput_removable.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ export class FieldTextInputRemovable extends Blockly.FieldTextInput {
9393
}
9494
}
9595

96-
Blockly.fieldRegistry.register(
97-
"field_input_removable",
98-
FieldTextInputRemovable
99-
);
96+
/**
97+
* Register the field and any dependencies.
98+
*/
99+
export function registerFieldTextInputRemovable() {
100+
Blockly.fieldRegistry.register(
101+
"field_input_removable",
102+
FieldTextInputRemovable
103+
);
104+
}

src/fields/field_variable.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,5 +162,10 @@ class FieldVariable extends Blockly.FieldVariable {
162162
}
163163
}
164164

165-
Blockly.fieldRegistry.unregister("field_variable");
166-
Blockly.fieldRegistry.register("field_variable", FieldVariable);
165+
/**
166+
* Register the field and any dependencies.
167+
*/
168+
export function registerFieldVariable() {
169+
Blockly.fieldRegistry.unregister("field_variable");
170+
Blockly.fieldRegistry.register("field_variable", FieldVariable);
171+
}

src/fields/field_variable_getter.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import * as Blockly from "blockly/core";
2929
* Class for a variable getter field.
3030
* @param {string} allowedVariableType The type of variables this field can display.
3131
*/
32-
export class FieldVariableGetter extends Blockly.FieldLabel {
32+
class FieldVariableGetter extends Blockly.FieldLabel {
3333
constructor(allowedVariableType = "") {
3434
super(Blockly.Field.SKIP_SETUP);
3535
this.SERIALIZABLE = true;
@@ -101,4 +101,9 @@ export class FieldVariableGetter extends Blockly.FieldLabel {
101101
}
102102
}
103103

104-
Blockly.fieldRegistry.register("field_variable_getter", FieldVariableGetter);
104+
/**
105+
* Register the field and any dependencies.
106+
*/
107+
export function registerFieldVariableGetter() {
108+
Blockly.fieldRegistry.register("field_variable_getter", FieldVariableGetter);
109+
}

src/fields/field_vertical_separator.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,12 @@ class FieldVerticalSeparator extends Blockly.Field {
128128
}
129129
}
130130

131-
Blockly.fieldRegistry.register(
132-
"field_vertical_separator",
133-
FieldVerticalSeparator
134-
);
131+
/**
132+
* Register the field and any dependencies.
133+
*/
134+
export function registerFieldVerticalSeparator() {
135+
Blockly.fieldRegistry.register(
136+
"field_vertical_separator",
137+
FieldVerticalSeparator
138+
);
139+
}

src/index.js

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import "./blocks/sound.js";
2323
import * as scratchBlocksUtils from "./scratch_blocks_utils.js";
2424
import * as ScratchVariables from "./variables.js";
2525
import "./css.js";
26-
import "./fields/field_vertical_separator.js";
2726
import "./renderer/renderer.js";
2827
import * as contextMenuItems from "./context_menu_items.js";
2928
import {
@@ -47,29 +46,46 @@ import "./events/events_block_comment_delete.js";
4746
import "./events/events_block_comment_move.js";
4847
import "./events/events_block_comment_resize.js";
4948
import "./events/events_scratch_variable_create.js";
50-
import "./fields/field_dropdown.js";
51-
import "./fields/field_variable.js";
52-
import "./fields/field_variable_getter.js";
5349
import { buildShadowFilter } from "./shadows.js";
50+
import { registerFieldAngle } from "./fields/field_angle.js";
51+
import {
52+
registerFieldColourSlider,
53+
FieldColourSlider,
54+
} from "./fields/field_colour_slider.js";
55+
import { registerFieldDropdown } from "./fields/field_dropdown.js";
56+
import { registerFieldMatrix } from "./fields/field_matrix.js";
57+
import { registerFieldNote, FieldNote } from "./fields/field_note.js";
58+
import { registerFieldNumber } from "./fields/field_number.js";
59+
import { registerFieldTextInputRemovable } from "./fields/field_textinput_removable.js";
60+
import { registerFieldVariableGetter } from "./fields/field_variable_getter.js";
61+
import { registerFieldVariable } from "./fields/field_variable.js";
62+
import { registerFieldVerticalSeparator } from "./fields/field_vertical_separator.js";
5463

5564
export * from "blockly/core";
5665
export * from "./block_reporting.js";
5766
export * from "./categories.js";
5867
export * from "./procedures.js";
59-
export * from "./fields/field_angle.js";
60-
export * from "./fields/field_colour_slider.js";
61-
export * from "./fields/field_matrix.js";
62-
export * from "./fields/field_note.js";
63-
export * from "./fields/field_number.js";
6468
export * from "../msg/scratch_msgs.js";
6569
export * from "./constants.js";
6670
export { glowStack };
6771
export { scratchBlocksUtils };
6872
export { CheckableContinuousFlyout };
6973
export { ScratchVariables };
7074
export { contextMenuItems };
75+
export { FieldColourSlider, FieldNote };
7176

7277
export function inject(container, options) {
78+
registerFieldAngle();
79+
registerFieldColourSlider();
80+
registerFieldDropdown();
81+
registerFieldMatrix();
82+
registerFieldNote();
83+
registerFieldNumber();
84+
registerFieldTextInputRemovable();
85+
registerFieldVariableGetter();
86+
registerFieldVariable();
87+
registerFieldVerticalSeparator();
88+
7389
Object.assign(options, {
7490
renderer: "scratch",
7591
plugins: {

0 commit comments

Comments
 (0)