blockly 7.20211209.4 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.d.ts +18963 -18432
- package/blockly.min.js +5 -4
- package/blockly_compressed.js +4 -3
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +47 -0
- package/blocks/colour.js +13 -3
- package/blocks/lists.js +22 -13
- package/blocks/logic.js +13 -3
- package/blocks/loops.js +24 -11
- package/blocks/math.js +12 -3
- package/blocks/procedures.js +45 -32
- package/blocks/text.js +22 -13
- package/blocks/variables.js +14 -3
- package/blocks/variables_dynamic.js +13 -3
- package/blocks_compressed.js +1 -1
- package/blocks_compressed.js.map +1 -1
- package/core/block.js +1869 -1814
- package/core/block_drag_surface.js +201 -200
- package/core/block_dragger.js +377 -373
- package/core/block_svg.js +1593 -1479
- package/core/blockly.js +8 -22
- package/core/blocks.js +9 -2
- package/core/browser_events.js +22 -5
- package/core/bubble.js +841 -797
- package/core/bubble_dragger.js +213 -206
- package/core/bump_objects.js +2 -2
- package/core/clipboard.js +9 -9
- package/core/comment.js +353 -332
- package/core/common.js +46 -17
- package/core/component_manager.js +181 -174
- package/core/config.js +87 -0
- package/core/connection.js +595 -584
- package/core/connection_checker.js +242 -244
- package/core/connection_db.js +235 -230
- package/core/contextmenu.js +9 -6
- package/core/contextmenu_items.js +1 -2
- package/core/contextmenu_registry.js +93 -89
- package/core/css.js +474 -474
- package/core/delete_area.js +45 -42
- package/core/drag_target.js +57 -56
- package/core/dropdowndiv.js +153 -163
- package/core/events/events.js +2 -2
- package/core/events/events_abstract.js +89 -77
- package/core/events/events_block_base.js +37 -36
- package/core/events/events_block_change.js +130 -124
- package/core/events/events_block_create.js +73 -71
- package/core/events/events_block_delete.js +84 -82
- package/core/events/events_block_drag.js +50 -49
- package/core/events/events_block_move.js +147 -140
- package/core/events/events_bubble_open.js +51 -50
- package/core/events/events_click.js +48 -44
- package/core/events/events_comment_base.js +72 -69
- package/core/events/events_comment_change.js +63 -61
- package/core/events/events_comment_create.js +44 -42
- package/core/events/events_comment_delete.js +42 -40
- package/core/events/events_comment_move.js +106 -104
- package/core/events/events_marker_move.js +65 -64
- package/core/events/events_selected.js +46 -45
- package/core/events/events_theme_change.js +36 -35
- package/core/events/events_toolbox_item_select.js +46 -45
- package/core/events/events_trashcan_open.js +37 -36
- package/core/events/events_ui.js +47 -46
- package/core/events/events_ui_base.js +30 -29
- package/core/events/events_var_base.js +37 -36
- package/core/events/events_var_create.js +50 -48
- package/core/events/events_var_delete.js +50 -48
- package/core/events/events_var_rename.js +51 -49
- package/core/events/events_viewport.js +66 -65
- package/core/events/utils.js +29 -14
- package/core/events/workspace_events.js +49 -55
- package/core/extensions.js +4 -3
- package/core/field.js +1061 -997
- package/core/field_angle.js +462 -442
- package/core/field_checkbox.js +194 -182
- package/core/field_colour.js +519 -505
- package/core/field_dropdown.js +617 -598
- package/core/field_image.js +229 -220
- package/core/field_label.js +102 -91
- package/core/field_label_serializable.js +42 -41
- package/core/field_multilineinput.js +372 -358
- package/core/field_number.js +272 -253
- package/core/field_textinput.js +499 -467
- package/core/field_variable.js +458 -420
- package/core/flyout_base.js +1005 -952
- package/core/flyout_button.js +277 -260
- package/core/flyout_horizontal.js +304 -302
- package/core/flyout_metrics_manager.js +64 -64
- package/core/flyout_vertical.js +306 -300
- package/core/generator.js +459 -446
- package/core/gesture.js +829 -813
- package/core/grid.js +166 -163
- package/core/icon.js +168 -159
- package/core/inject.js +7 -5
- package/core/input.js +257 -248
- package/core/insertion_marker_manager.js +655 -624
- package/core/internal_constants.js +0 -129
- package/core/keyboard_nav/ast_node.js +605 -596
- package/core/keyboard_nav/basic_cursor.js +166 -165
- package/core/keyboard_nav/cursor.js +99 -97
- package/core/keyboard_nav/marker.js +83 -79
- package/core/keyboard_nav/tab_navigate_cursor.js +18 -23
- package/core/marker_manager.js +153 -141
- package/core/menu.js +377 -372
- package/core/menuitem.js +223 -217
- package/core/metrics_manager.js +403 -390
- package/core/mutator.js +468 -437
- package/core/names.js +229 -188
- package/core/options.js +290 -284
- package/core/procedures.js +29 -17
- package/core/registry.js +19 -16
- package/core/rendered_connection.js +482 -463
- package/core/renderers/common/block_rendering.js +9 -3
- package/core/renderers/common/constants.js +1119 -1112
- package/core/renderers/common/debug.js +14 -0
- package/core/renderers/common/debugger.js +338 -316
- package/core/renderers/common/drawer.js +380 -370
- package/core/renderers/common/i_path_object.js +2 -2
- package/core/renderers/common/info.js +626 -618
- package/core/renderers/common/marker_svg.js +579 -541
- package/core/renderers/common/path_object.js +203 -200
- package/core/renderers/common/renderer.js +220 -218
- package/core/renderers/geras/constants.js +36 -36
- package/core/renderers/geras/drawer.js +155 -147
- package/core/renderers/geras/highlight_constants.js +244 -238
- package/core/renderers/geras/highlighter.js +231 -179
- package/core/renderers/geras/info.js +392 -369
- package/core/renderers/geras/measurables/inline_input.js +25 -19
- package/core/renderers/geras/measurables/statement_input.js +23 -17
- package/core/renderers/geras/path_object.js +106 -121
- package/core/renderers/geras/renderer.js +96 -98
- package/core/renderers/measurables/base.js +30 -18
- package/core/renderers/measurables/bottom_row.js +83 -80
- package/core/renderers/measurables/connection.js +22 -15
- package/core/renderers/measurables/external_value_input.js +35 -22
- package/core/renderers/measurables/field.js +35 -20
- package/core/renderers/measurables/hat.js +18 -13
- package/core/renderers/measurables/icon.js +24 -17
- package/core/renderers/measurables/in_row_spacer.js +15 -13
- package/core/renderers/measurables/inline_input.js +43 -33
- package/core/renderers/measurables/input_connection.js +41 -28
- package/core/renderers/measurables/input_row.js +50 -44
- package/core/renderers/measurables/jagged_edge.js +14 -12
- package/core/renderers/measurables/next_connection.js +16 -14
- package/core/renderers/measurables/output_connection.js +26 -20
- package/core/renderers/measurables/previous_connection.js +16 -15
- package/core/renderers/measurables/round_corner.js +20 -18
- package/core/renderers/measurables/row.js +184 -168
- package/core/renderers/measurables/spacer_row.js +38 -23
- package/core/renderers/measurables/square_corner.js +18 -16
- package/core/renderers/measurables/statement_input.js +23 -20
- package/core/renderers/measurables/top_row.js +88 -85
- package/core/renderers/minimalist/constants.js +8 -7
- package/core/renderers/minimalist/drawer.js +11 -10
- package/core/renderers/minimalist/info.js +18 -18
- package/core/renderers/minimalist/renderer.js +40 -39
- package/core/renderers/thrasos/info.js +258 -248
- package/core/renderers/thrasos/renderer.js +20 -20
- package/core/renderers/zelos/constants.js +898 -873
- package/core/renderers/zelos/drawer.js +186 -169
- package/core/renderers/zelos/info.js +502 -479
- package/core/renderers/zelos/marker_svg.js +129 -115
- package/core/renderers/zelos/measurables/bottom_row.js +31 -30
- package/core/renderers/zelos/measurables/inputs.js +22 -21
- package/core/renderers/zelos/measurables/row_elements.js +14 -13
- package/core/renderers/zelos/measurables/top_row.js +34 -33
- package/core/renderers/zelos/path_object.js +181 -180
- package/core/renderers/zelos/renderer.js +91 -92
- package/core/scrollbar.js +759 -713
- package/core/scrollbar_pair.js +250 -245
- package/core/serialization/blocks.js +26 -10
- package/core/serialization/workspaces.js +3 -2
- package/core/shortcut_registry.js +286 -277
- package/core/sprites.js +31 -0
- package/core/theme.js +135 -141
- package/core/theme_manager.js +147 -143
- package/core/toolbox/category.js +602 -576
- package/core/toolbox/collapsible_category.js +226 -227
- package/core/toolbox/separator.js +70 -61
- package/core/toolbox/toolbox.js +934 -927
- package/core/toolbox/toolbox_item.js +115 -99
- package/core/tooltip.js +108 -35
- package/core/touch.js +8 -3
- package/core/touch_gesture.js +254 -251
- package/core/trashcan.js +606 -595
- package/core/utils/coordinate.js +97 -95
- package/core/utils/dom.js +2 -2
- package/core/utils/global.js +2 -0
- package/core/utils/rect.js +41 -37
- package/core/utils/sentinel.js +25 -0
- package/core/utils/size.js +30 -27
- package/core/utils/svg.js +18 -16
- package/core/variable_map.js +325 -341
- package/core/variable_model.js +55 -54
- package/core/variables.js +9 -2
- package/core/variables_dynamic.js +3 -1
- package/core/warning.js +126 -120
- package/core/widgetdiv.js +4 -4
- package/core/workspace.js +685 -664
- package/core/workspace_audio.js +124 -118
- package/core/workspace_comment.js +308 -298
- package/core/workspace_comment_svg.js +1029 -951
- package/core/workspace_drag_surface_svg.js +147 -140
- package/core/workspace_dragger.js +70 -71
- package/core/workspace_svg.js +2322 -2297
- package/core/xml.js +30 -20
- package/core/zoom_controls.js +431 -439
- package/generators/dart/colour.js +56 -64
- package/generators/dart/lists.js +61 -50
- package/generators/dart/math.js +160 -148
- package/generators/dart/text.js +83 -61
- package/generators/javascript/colour.js +37 -34
- package/generators/javascript/lists.js +50 -43
- package/generators/javascript/math.js +123 -139
- package/generators/javascript/text.js +67 -81
- package/generators/lua/colour.js +25 -23
- package/generators/lua/lists.js +97 -69
- package/generators/lua/logic.js +1 -2
- package/generators/lua/math.js +182 -144
- package/generators/lua/text.js +116 -99
- package/generators/php/colour.js +38 -32
- package/generators/php/lists.js +109 -89
- package/generators/php/math.js +90 -81
- package/generators/php/text.js +63 -61
- package/generators/python/colour.js +18 -18
- package/generators/python/lists.js +38 -30
- package/generators/python/loops.js +12 -8
- package/generators/python/math.js +104 -106
- package/generators/python/text.js +34 -30
- package/msg/smn.js +436 -0
- package/package.json +7 -6
- package/blocks/all.js +0 -23
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.BottomRow');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
|
|
22
21
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -32,104 +31,108 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
32
31
|
* a block as well as spacing information for the bottom row.
|
|
33
32
|
* Elements in a bottom row can consist of corners, spacers and next
|
|
34
33
|
* connections.
|
|
35
|
-
* @param {!ConstantProvider} constants The rendering
|
|
36
|
-
* constants provider.
|
|
37
|
-
* @package
|
|
38
|
-
* @constructor
|
|
39
34
|
* @extends {Row}
|
|
35
|
+
* @struct
|
|
40
36
|
* @alias Blockly.blockRendering.BottomRow
|
|
41
37
|
*/
|
|
42
|
-
|
|
43
|
-
BottomRow.superClass_.constructor.call(this, constants);
|
|
44
|
-
this.type |= Types.BOTTOM_ROW;
|
|
45
|
-
|
|
38
|
+
class BottomRow extends Row {
|
|
46
39
|
/**
|
|
47
|
-
*
|
|
40
|
+
* @param {!ConstantProvider} constants The rendering
|
|
41
|
+
* constants provider.
|
|
48
42
|
* @package
|
|
49
|
-
* @type {boolean}
|
|
50
43
|
*/
|
|
51
|
-
|
|
44
|
+
constructor(constants) {
|
|
45
|
+
super(constants);
|
|
46
|
+
this.type |= Types.BOTTOM_ROW;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Whether this row has a next connection.
|
|
50
|
+
* @package
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
*/
|
|
53
|
+
this.hasNextConnection = false;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The next connection on the row, if any.
|
|
57
|
+
* @package
|
|
58
|
+
* @type {NextConnection}
|
|
59
|
+
*/
|
|
60
|
+
this.connection = null;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The amount that the bottom of the block extends below the horizontal
|
|
64
|
+
* edge, e.g. because of a next connection. Must be non-negative (see
|
|
65
|
+
* #2820).
|
|
66
|
+
* @package
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
this.descenderHeight = 0;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The Y position of the bottom edge of the block, relative to the origin
|
|
73
|
+
* of the block rendering.
|
|
74
|
+
* @type {number}
|
|
75
|
+
*/
|
|
76
|
+
this.baseline = 0;
|
|
77
|
+
}
|
|
52
78
|
|
|
53
79
|
/**
|
|
54
|
-
*
|
|
55
|
-
* @
|
|
56
|
-
* @
|
|
80
|
+
* Returns whether or not the bottom row has a left square corner.
|
|
81
|
+
* @param {!BlockSvg} block The block whose bottom row this represents.
|
|
82
|
+
* @return {boolean} Whether or not the bottom row has a left square corner.
|
|
57
83
|
*/
|
|
58
|
-
|
|
84
|
+
hasLeftSquareCorner(block) {
|
|
85
|
+
return !!block.outputConnection || !!block.getNextBlock();
|
|
86
|
+
}
|
|
59
87
|
|
|
60
88
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* @
|
|
64
|
-
* @type {number}
|
|
89
|
+
* Returns whether or not the bottom row has a right square corner.
|
|
90
|
+
* @param {!BlockSvg} _block The block whose bottom row this represents.
|
|
91
|
+
* @return {boolean} Whether or not the bottom row has a right square corner.
|
|
65
92
|
*/
|
|
66
|
-
|
|
93
|
+
hasRightSquareCorner(_block) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
67
96
|
|
|
68
97
|
/**
|
|
69
|
-
*
|
|
70
|
-
* of the block rendering.
|
|
71
|
-
* @type {number}
|
|
98
|
+
* @override
|
|
72
99
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
* @param {!BlockSvg} _block The block whose bottom row this represents.
|
|
89
|
-
* @return {boolean} Whether or not the bottom row has a right square corner.
|
|
90
|
-
*/
|
|
91
|
-
BottomRow.prototype.hasRightSquareCorner = function(_block) {
|
|
92
|
-
return true;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* @override
|
|
97
|
-
*/
|
|
98
|
-
BottomRow.prototype.measure = function() {
|
|
99
|
-
let height = 0;
|
|
100
|
-
let width = 0;
|
|
101
|
-
let descenderHeight = 0;
|
|
102
|
-
for (let i = 0; i < this.elements.length; i++) {
|
|
103
|
-
const elem = this.elements[i];
|
|
104
|
-
width += elem.width;
|
|
105
|
-
if (!(Types.isSpacer(elem))) {
|
|
106
|
-
// Note: this assumes that next connections have *only* descenderHeight,
|
|
107
|
-
// with no height above the baseline.
|
|
108
|
-
if (Types.isNextConnection(elem)) {
|
|
109
|
-
descenderHeight = Math.max(descenderHeight, elem.height);
|
|
110
|
-
} else {
|
|
111
|
-
height = Math.max(height, elem.height);
|
|
100
|
+
measure() {
|
|
101
|
+
let height = 0;
|
|
102
|
+
let width = 0;
|
|
103
|
+
let descenderHeight = 0;
|
|
104
|
+
for (let i = 0; i < this.elements.length; i++) {
|
|
105
|
+
const elem = this.elements[i];
|
|
106
|
+
width += elem.width;
|
|
107
|
+
if (!(Types.isSpacer(elem))) {
|
|
108
|
+
// Note: this assumes that next connections have *only* descenderHeight,
|
|
109
|
+
// with no height above the baseline.
|
|
110
|
+
if (Types.isNextConnection(elem)) {
|
|
111
|
+
descenderHeight = Math.max(descenderHeight, elem.height);
|
|
112
|
+
} else {
|
|
113
|
+
height = Math.max(height, elem.height);
|
|
114
|
+
}
|
|
112
115
|
}
|
|
113
116
|
}
|
|
117
|
+
this.width = Math.max(this.minWidth, width);
|
|
118
|
+
this.height = Math.max(this.minHeight, height) + descenderHeight;
|
|
119
|
+
this.descenderHeight = descenderHeight;
|
|
120
|
+
this.widthWithConnectedBlocks = this.width;
|
|
114
121
|
}
|
|
115
|
-
this.width = Math.max(this.minWidth, width);
|
|
116
|
-
this.height = Math.max(this.minHeight, height) + descenderHeight;
|
|
117
|
-
this.descenderHeight = descenderHeight;
|
|
118
|
-
this.widthWithConnectedBlocks = this.width;
|
|
119
|
-
};
|
|
120
122
|
|
|
121
|
-
/**
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
123
|
+
/**
|
|
124
|
+
* @override
|
|
125
|
+
*/
|
|
126
|
+
startsWithElemSpacer() {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
127
129
|
|
|
128
|
-
/**
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
130
|
+
/**
|
|
131
|
+
* @override
|
|
132
|
+
*/
|
|
133
|
+
endsWithElemSpacer() {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
134
137
|
|
|
135
138
|
exports.BottomRow = BottomRow;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.Connection');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
const {Measurable} = goog.require('Blockly.blockRendering.Measurable');
|
|
@@ -28,22 +27,30 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
28
27
|
/**
|
|
29
28
|
* The base class to represent a connection and the space that it takes up on
|
|
30
29
|
* the block.
|
|
31
|
-
* @param {!ConstantProvider} constants The rendering
|
|
32
|
-
* constants provider.
|
|
33
|
-
* @param {!RenderedConnection} connectionModel The connection object on
|
|
34
|
-
* the block that this represents.
|
|
35
|
-
* @package
|
|
36
|
-
* @constructor
|
|
37
30
|
* @extends {Measurable}
|
|
38
31
|
* @alias Blockly.blockRendering.Connection
|
|
39
32
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
class Connection extends Measurable {
|
|
34
|
+
/**
|
|
35
|
+
* @param {!ConstantProvider} constants The rendering
|
|
36
|
+
* constants provider.
|
|
37
|
+
* @param {!RenderedConnection} connectionModel The connection object on
|
|
38
|
+
* the block that this represents.
|
|
39
|
+
* @package
|
|
40
|
+
*/
|
|
41
|
+
constructor(constants, connectionModel) {
|
|
42
|
+
super(constants);
|
|
43
|
+
|
|
44
|
+
/** @type {!RenderedConnection} */
|
|
45
|
+
this.connectionModel = connectionModel;
|
|
46
|
+
|
|
47
|
+
/** @type {!Object} */
|
|
48
|
+
this.shape = this.constants_.shapeFor(connectionModel);
|
|
49
|
+
|
|
50
|
+
/** @type {boolean} */
|
|
51
|
+
this.isDynamicShape = !!this.shape['isDynamic'];
|
|
52
|
+
this.type |= Types.CONNECTION;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
48
55
|
|
|
49
56
|
exports.Connection = Connection;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.ExternalValueInput');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
const {InputConnection} = goog.require('Blockly.blockRendering.InputConnection');
|
|
@@ -28,30 +27,44 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
28
27
|
/**
|
|
29
28
|
* An object containing information about the space an external value input
|
|
30
29
|
* takes up during rendering
|
|
31
|
-
* @
|
|
32
|
-
* constants provider.
|
|
33
|
-
* @param {!Input} input The external value input to measure and store
|
|
34
|
-
* information for.
|
|
35
|
-
* @package
|
|
36
|
-
* @constructor
|
|
30
|
+
* @struct
|
|
37
31
|
* @extends {InputConnection}
|
|
38
32
|
* @alias Blockly.blockRendering.ExternalValueInput
|
|
39
33
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
34
|
+
class ExternalValueInput extends InputConnection {
|
|
35
|
+
/**
|
|
36
|
+
* @param {!ConstantProvider} constants The rendering
|
|
37
|
+
* constants provider.
|
|
38
|
+
* @param {!Input} input The external value input to measure and store
|
|
39
|
+
* information for.
|
|
40
|
+
* @package
|
|
41
|
+
*/
|
|
42
|
+
constructor(constants, input) {
|
|
43
|
+
super(constants, input);
|
|
44
|
+
this.type |= Types.EXTERNAL_VALUE_INPUT;
|
|
45
|
+
|
|
46
|
+
/** @type {number} */
|
|
47
|
+
this.height = 0;
|
|
48
|
+
if (!this.connectedBlock) {
|
|
49
|
+
this.height = this.shape.height;
|
|
50
|
+
} else {
|
|
51
|
+
this.height = this.connectedBlockHeight -
|
|
52
|
+
this.constants_.TAB_OFFSET_FROM_TOP - this.constants_.MEDIUM_PADDING;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** @type {number} */
|
|
56
|
+
this.width =
|
|
57
|
+
this.shape.width + this.constants_.EXTERNAL_VALUE_INPUT_PADDING;
|
|
50
58
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
59
|
+
/** @type {number} */
|
|
60
|
+
this.connectionOffsetY = this.constants_.TAB_OFFSET_FROM_TOP;
|
|
61
|
+
|
|
62
|
+
/** @type {number} */
|
|
63
|
+
this.connectionHeight = this.shape.height;
|
|
64
|
+
|
|
65
|
+
/** @type {number} */
|
|
66
|
+
this.connectionWidth = this.shape.width;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
56
69
|
|
|
57
70
|
exports.ExternalValueInput = ExternalValueInput;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.Field');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -30,27 +29,43 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
30
29
|
/**
|
|
31
30
|
* An object containing information about the space a field takes up during
|
|
32
31
|
* rendering
|
|
33
|
-
* @
|
|
34
|
-
* constants provider.
|
|
35
|
-
* @param {!BlocklyField} field The field to measure and store information for.
|
|
36
|
-
* @param {!Input} parentInput The parent input for the field.
|
|
37
|
-
* @package
|
|
38
|
-
* @constructor
|
|
32
|
+
* @struct
|
|
39
33
|
* @extends {Measurable}
|
|
40
34
|
* @alias Blockly.blockRendering.Field
|
|
41
35
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
36
|
+
class Field extends Measurable {
|
|
37
|
+
/**
|
|
38
|
+
* @param {!ConstantProvider} constants The rendering
|
|
39
|
+
* constants provider.
|
|
40
|
+
* @param {!BlocklyField} field The field to measure and store information
|
|
41
|
+
* for.
|
|
42
|
+
* @param {!Input} parentInput The parent input for the field.
|
|
43
|
+
* @package
|
|
44
|
+
*/
|
|
45
|
+
constructor(constants, field, parentInput) {
|
|
46
|
+
super(constants);
|
|
47
|
+
|
|
48
|
+
/** @type {!BlocklyField} */
|
|
49
|
+
this.field = field;
|
|
50
|
+
|
|
51
|
+
/** @type {boolean} */
|
|
52
|
+
this.isEditable = field.EDITABLE;
|
|
53
|
+
|
|
54
|
+
/** @type {boolean} */
|
|
55
|
+
this.flipRtl = field.getFlipRtl();
|
|
56
|
+
this.type |= Types.FIELD;
|
|
57
|
+
|
|
58
|
+
const size = this.field.getSize();
|
|
59
|
+
|
|
60
|
+
/** @type {number} */
|
|
61
|
+
this.height = size.height;
|
|
62
|
+
|
|
63
|
+
/** @type {number} */
|
|
64
|
+
this.width = size.width;
|
|
65
|
+
|
|
66
|
+
/** @type {!Input} */
|
|
67
|
+
this.parentInput = parentInput;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
55
70
|
|
|
56
71
|
exports.Field = Field;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.Hat');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
const {Measurable} = goog.require('Blockly.blockRendering.Measurable');
|
|
@@ -26,20 +25,26 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
26
25
|
/**
|
|
27
26
|
* An object containing information about the space a hat takes up during
|
|
28
27
|
* rendering.
|
|
29
|
-
* @
|
|
30
|
-
* constants provider.
|
|
31
|
-
* @package
|
|
32
|
-
* @constructor
|
|
28
|
+
* @struct
|
|
33
29
|
* @extends {Measurable}
|
|
34
30
|
* @alias Blockly.blockRendering.Hat
|
|
35
31
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
class Hat extends Measurable {
|
|
33
|
+
/**
|
|
34
|
+
* @param {!ConstantProvider} constants The rendering
|
|
35
|
+
* constants provider.
|
|
36
|
+
* @package
|
|
37
|
+
*/
|
|
38
|
+
constructor(constants) {
|
|
39
|
+
super(constants);
|
|
40
|
+
this.type |= Types.HAT;
|
|
41
|
+
|
|
42
|
+
this.height = this.constants_.START_HAT.height;
|
|
43
|
+
this.width = this.constants_.START_HAT.width;
|
|
44
|
+
|
|
45
|
+
/** @type {number} */
|
|
46
|
+
this.ascenderHeight = this.height;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
44
49
|
|
|
45
50
|
exports.Hat = Hat;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.Icon');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
/* eslint-disable-next-line no-unused-vars */
|
|
@@ -28,24 +27,32 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
28
27
|
/**
|
|
29
28
|
* An object containing information about the space an icon takes up during
|
|
30
29
|
* rendering
|
|
31
|
-
* @param {!ConstantProvider} constants The rendering
|
|
32
|
-
* constants provider.
|
|
33
|
-
* @param {!BlocklyIcon} icon The icon to measure and store information for.
|
|
34
|
-
* @package
|
|
35
|
-
* @constructor
|
|
36
30
|
* @extends {Measurable}
|
|
31
|
+
* @struct
|
|
37
32
|
* @alias Blockly.blockRendering.Icon
|
|
38
33
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
34
|
+
class Icon extends Measurable {
|
|
35
|
+
/**
|
|
36
|
+
* An object containing information about the space an icon takes up during
|
|
37
|
+
* rendering
|
|
38
|
+
* @param {!ConstantProvider} constants The rendering
|
|
39
|
+
* constants provider.
|
|
40
|
+
* @param {!BlocklyIcon} icon The icon to measure and store information for.
|
|
41
|
+
* @package
|
|
42
|
+
*/
|
|
43
|
+
constructor(constants, icon) {
|
|
44
|
+
super(constants);
|
|
50
45
|
|
|
46
|
+
/** @type {!BlocklyIcon} */
|
|
47
|
+
this.icon = icon;
|
|
48
|
+
|
|
49
|
+
/** @type {boolean} */
|
|
50
|
+
this.isVisible = icon.isVisible();
|
|
51
|
+
this.type |= Types.ICON;
|
|
52
|
+
|
|
53
|
+
const size = icon.getCorrectedSize();
|
|
54
|
+
this.height = size.height;
|
|
55
|
+
this.width = size.width;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
51
58
|
exports.Icon = Icon;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.InRowSpacer');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
const {Measurable} = goog.require('Blockly.blockRendering.Measurable');
|
|
@@ -26,20 +25,23 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
26
25
|
/**
|
|
27
26
|
* An object containing information about a spacer between two elements on a
|
|
28
27
|
* row.
|
|
29
|
-
* @param {!ConstantProvider} constants The rendering
|
|
30
|
-
* constants provider.
|
|
31
|
-
* @param {number} width The width of the spacer.
|
|
32
|
-
* @package
|
|
33
|
-
* @constructor
|
|
34
28
|
* @extends {Measurable}
|
|
29
|
+
* @struct
|
|
35
30
|
* @alias Blockly.blockRendering.InRowSpacer
|
|
36
31
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
class InRowSpacer extends Measurable {
|
|
33
|
+
/**
|
|
34
|
+
* @param {!ConstantProvider} constants The rendering
|
|
35
|
+
* constants provider.
|
|
36
|
+
* @param {number} width The width of the spacer.
|
|
37
|
+
* @package
|
|
38
|
+
*/
|
|
39
|
+
constructor(constants, width) {
|
|
40
|
+
super(constants);
|
|
41
|
+
this.type |= Types.SPACER | Types.IN_ROW_SPACER;
|
|
42
|
+
this.width = width;
|
|
43
|
+
this.height = this.constants_.SPACER_DEFAULT_HEIGHT;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
44
46
|
|
|
45
47
|
exports.InRowSpacer = InRowSpacer;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
*/
|
|
17
17
|
goog.module('Blockly.blockRendering.InlineInput');
|
|
18
18
|
|
|
19
|
-
const object = goog.require('Blockly.utils.object');
|
|
20
19
|
/* eslint-disable-next-line no-unused-vars */
|
|
21
20
|
const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
|
|
22
21
|
const {InputConnection} = goog.require('Blockly.blockRendering.InputConnection');
|
|
@@ -28,43 +27,54 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
28
27
|
/**
|
|
29
28
|
* An object containing information about the space an inline input takes up
|
|
30
29
|
* during rendering
|
|
31
|
-
* @param {!ConstantProvider} constants The rendering
|
|
32
|
-
* constants provider.
|
|
33
|
-
* @param {!Input} input The inline input to measure and store
|
|
34
|
-
* information for.
|
|
35
|
-
* @package
|
|
36
|
-
* @constructor
|
|
37
30
|
* @extends {InputConnection}
|
|
31
|
+
* @struct
|
|
38
32
|
* @alias Blockly.blockRendering.InlineInput
|
|
39
33
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
class InlineInput extends InputConnection {
|
|
35
|
+
/**
|
|
36
|
+
* @param {!ConstantProvider} constants The rendering
|
|
37
|
+
* constants provider.
|
|
38
|
+
* @param {!Input} input The inline input to measure and store
|
|
39
|
+
* information for.
|
|
40
|
+
* @package
|
|
41
|
+
*/
|
|
42
|
+
constructor(constants, input) {
|
|
43
|
+
super(constants, input);
|
|
44
|
+
this.type |= Types.INLINE_INPUT;
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
if (!this.connectedBlock) {
|
|
47
|
+
this.height = this.constants_.EMPTY_INLINE_INPUT_HEIGHT;
|
|
48
|
+
this.width = this.constants_.EMPTY_INLINE_INPUT_PADDING;
|
|
49
|
+
} else {
|
|
50
|
+
// We allow the dark path to show on the parent block so that the child
|
|
51
|
+
// block looks embossed. This takes up an extra pixel in both x and y.
|
|
52
|
+
this.width = this.connectedBlockWidth;
|
|
53
|
+
this.height = this.connectedBlockHeight;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** @type {number} */
|
|
57
|
+
this.connectionHeight = !this.isDynamicShape ?
|
|
58
|
+
this.shape.height :
|
|
59
|
+
this.shape.height(this.height);
|
|
60
|
+
|
|
61
|
+
/** @type {number} */
|
|
62
|
+
this.connectionWidth =
|
|
63
|
+
!this.isDynamicShape ? this.shape.width : this.shape.width(this.height);
|
|
64
|
+
if (!this.connectedBlock) {
|
|
65
|
+
this.width += this.connectionWidth * (this.isDynamicShape ? 2 : 1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** @type {number} */
|
|
69
|
+
this.connectionOffsetY = this.isDynamicShape ?
|
|
70
|
+
this.shape.connectionOffsetY(this.connectionHeight) :
|
|
71
|
+
this.constants_.TAB_OFFSET_FROM_TOP;
|
|
53
72
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (!this.connectedBlock) {
|
|
59
|
-
this.width += this.connectionWidth * (this.isDynamicShape ? 2 : 1);
|
|
73
|
+
/** @type {number} */
|
|
74
|
+
this.connectionOffsetX = this.isDynamicShape ?
|
|
75
|
+
this.shape.connectionOffsetX(this.connectionWidth) :
|
|
76
|
+
0;
|
|
60
77
|
}
|
|
61
|
-
|
|
62
|
-
this.shape.connectionOffsetY(this.connectionHeight) :
|
|
63
|
-
this.constants_.TAB_OFFSET_FROM_TOP;
|
|
64
|
-
this.connectionOffsetX = this.isDynamicShape ?
|
|
65
|
-
this.shape.connectionOffsetX(this.connectionWidth) :
|
|
66
|
-
0;
|
|
67
|
-
};
|
|
68
|
-
object.inherits(InlineInput, InputConnection);
|
|
78
|
+
}
|
|
69
79
|
|
|
70
80
|
exports.InlineInput = InlineInput;
|