blockly 7.20211209.4 → 8.0.0
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 +852 -844
- package/blockly_compressed.js +669 -664
- 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 +41 -27
- package/blocks/text.js +22 -13
- package/blocks/variables.js +14 -3
- package/blocks/variables_dynamic.js +13 -3
- package/blocks_compressed.js +146 -141
- 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 +19 -9
- 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/dart_compressed.js +40 -43
- package/dart_compressed.js.map +1 -1
- 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/javascript_compressed.js +37 -39
- package/javascript_compressed.js.map +1 -1
- package/lua_compressed.js +39 -42
- package/lua_compressed.js.map +1 -1
- package/msg/az.js +2 -2
- package/msg/be.js +4 -4
- package/msg/cs.js +15 -15
- package/msg/de.js +1 -1
- package/msg/diq.js +1 -1
- package/msg/eo.js +1 -1
- package/msg/es.js +1 -1
- package/msg/fa.js +1 -1
- package/msg/fr.js +4 -4
- package/msg/he.js +1 -1
- package/msg/hr.js +2 -2
- package/msg/hy.js +2 -2
- package/msg/id.js +12 -12
- package/msg/inh.js +14 -14
- package/msg/ja.js +7 -7
- package/msg/lv.js +29 -29
- package/msg/pa.js +3 -3
- package/msg/smn.js +436 -0
- package/msg/te.js +1 -1
- package/msg/yue.js +1 -1
- package/msg/zh-hans.js +3 -3
- package/msg/zh-hant.js +3 -3
- package/package.json +7 -6
- package/php_compressed.js +38 -42
- package/php_compressed.js.map +1 -1
- package/python_compressed.js +26 -25
- package/python_compressed.js.map +1 -1
- package/blocks/all.js +0 -23
|
@@ -25,269 +25,275 @@ const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProv
|
|
|
25
25
|
* Some highlights are simple offsets of the parent paths and can be generated
|
|
26
26
|
* programmatically. Others, especially on curves, are just made out of piles
|
|
27
27
|
* of constants and are hard to tweak.
|
|
28
|
-
* @param {!ConstantProvider} constants The rendering
|
|
29
|
-
* constants provider.
|
|
30
|
-
* @constructor
|
|
31
|
-
* @package
|
|
32
28
|
* @alias Blockly.geras.HighlightConstantProvider
|
|
33
29
|
*/
|
|
34
|
-
|
|
30
|
+
class HighlightConstantProvider {
|
|
35
31
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
this.constantProvider = constants;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The offset between the block's main path and highlight path.
|
|
43
|
-
* @type {number}
|
|
32
|
+
* @param {!ConstantProvider} constants The rendering
|
|
33
|
+
* constants provider.
|
|
44
34
|
* @package
|
|
45
35
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
36
|
+
constructor(constants) {
|
|
37
|
+
/**
|
|
38
|
+
* The renderer's constant provider.
|
|
39
|
+
* @type {!ConstantProvider}
|
|
40
|
+
*/
|
|
41
|
+
this.constantProvider = constants;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The offset between the block's main path and highlight path.
|
|
45
|
+
* @type {number}
|
|
46
|
+
* @package
|
|
47
|
+
*/
|
|
48
|
+
this.OFFSET = 0.5;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The start point, which is offset in both X and Y, as an SVG path chunk.
|
|
52
|
+
* @type {string}
|
|
53
|
+
*/
|
|
54
|
+
this.START_POINT = svgPaths.moveBy(this.OFFSET, this.OFFSET);
|
|
55
|
+
}
|
|
54
56
|
|
|
55
|
-
/**
|
|
56
|
-
* Initialize shape objects based on the constants set in the constructor.
|
|
57
|
-
* @package
|
|
58
|
-
*/
|
|
59
|
-
HighlightConstantProvider.prototype.init = function() {
|
|
60
57
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* @type {!Object}
|
|
64
|
-
*/
|
|
65
|
-
this.INSIDE_CORNER = this.makeInsideCorner();
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* An object containing sizing and path information about outside corner
|
|
69
|
-
* highlights.
|
|
70
|
-
* @type {!Object}
|
|
58
|
+
* Initialize shape objects based on the constants set in the constructor.
|
|
59
|
+
* @package
|
|
71
60
|
*/
|
|
72
|
-
|
|
61
|
+
init() {
|
|
62
|
+
/**
|
|
63
|
+
* An object containing sizing and path information about inside corner
|
|
64
|
+
* highlights.
|
|
65
|
+
* @type {!Object}
|
|
66
|
+
*/
|
|
67
|
+
this.INSIDE_CORNER = this.makeInsideCorner();
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* An object containing sizing and path information about outside corner
|
|
71
|
+
* highlights.
|
|
72
|
+
* @type {!Object}
|
|
73
|
+
*/
|
|
74
|
+
this.OUTSIDE_CORNER = this.makeOutsideCorner();
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* An object containing sizing and path information about puzzle tab
|
|
78
|
+
* highlights.
|
|
79
|
+
* @type {!Object}
|
|
80
|
+
*/
|
|
81
|
+
this.PUZZLE_TAB = this.makePuzzleTab();
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* An object containing sizing and path information about notch highlights.
|
|
85
|
+
* @type {!Object}
|
|
86
|
+
*/
|
|
87
|
+
this.NOTCH = this.makeNotch();
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* An object containing sizing and path information about highlights for
|
|
91
|
+
* collapsed block indicators.
|
|
92
|
+
* @type {!Object}
|
|
93
|
+
*/
|
|
94
|
+
this.JAGGED_TEETH = this.makeJaggedTeeth();
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* An object containing sizing and path information about start hat
|
|
98
|
+
* highlights.
|
|
99
|
+
* @type {!Object}
|
|
100
|
+
*/
|
|
101
|
+
this.START_HAT = this.makeStartHat();
|
|
102
|
+
}
|
|
73
103
|
|
|
74
104
|
/**
|
|
75
|
-
* An object containing sizing and path information about
|
|
76
|
-
* highlights.
|
|
77
|
-
* @
|
|
105
|
+
* @return {!Object} An object containing sizing and path information about
|
|
106
|
+
* inside corner highlights.
|
|
107
|
+
* @package
|
|
78
108
|
*/
|
|
79
|
-
|
|
109
|
+
makeInsideCorner() {
|
|
110
|
+
const radius = this.constantProvider.CORNER_RADIUS;
|
|
111
|
+
const offset = this.OFFSET;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Distance from shape edge to intersect with a curved corner at 45 degrees.
|
|
115
|
+
* Applies to highlighting on around the outside of a curve.
|
|
116
|
+
* @const
|
|
117
|
+
*/
|
|
118
|
+
const distance45outside = (1 - Math.SQRT1_2) * (radius + offset) - offset;
|
|
119
|
+
|
|
120
|
+
const pathTopRtl = svgPaths.moveBy(distance45outside, distance45outside) +
|
|
121
|
+
svgPaths.arc(
|
|
122
|
+
'a', '0 0,0', radius,
|
|
123
|
+
svgPaths.point(
|
|
124
|
+
-distance45outside - offset, radius - distance45outside));
|
|
125
|
+
|
|
126
|
+
const pathBottomRtl = svgPaths.arc(
|
|
127
|
+
'a', '0 0,0', radius + offset,
|
|
128
|
+
svgPaths.point(radius + offset, radius + offset));
|
|
129
|
+
|
|
130
|
+
const pathBottomLtr =
|
|
131
|
+
svgPaths.moveBy(distance45outside, -distance45outside) +
|
|
132
|
+
svgPaths.arc(
|
|
133
|
+
'a', '0 0,0', radius + offset,
|
|
134
|
+
svgPaths.point(
|
|
135
|
+
radius - distance45outside, distance45outside + offset));
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
width: radius + offset,
|
|
139
|
+
height: radius,
|
|
140
|
+
pathTop: function(rtl) {
|
|
141
|
+
return rtl ? pathTopRtl : '';
|
|
142
|
+
},
|
|
143
|
+
pathBottom: function(rtl) {
|
|
144
|
+
return rtl ? pathBottomRtl : pathBottomLtr;
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
80
148
|
|
|
81
149
|
/**
|
|
82
|
-
* An object containing sizing and path information about
|
|
83
|
-
*
|
|
150
|
+
* @return {!Object} An object containing sizing and path information about
|
|
151
|
+
* outside corner highlights.
|
|
152
|
+
* @package
|
|
84
153
|
*/
|
|
85
|
-
|
|
154
|
+
makeOutsideCorner() {
|
|
155
|
+
const radius = this.constantProvider.CORNER_RADIUS;
|
|
156
|
+
const offset = this.OFFSET;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Distance from shape edge to intersect with a curved corner at 45 degrees.
|
|
160
|
+
* Applies to highlighting on around the inside of a curve.
|
|
161
|
+
* @const
|
|
162
|
+
*/
|
|
163
|
+
const distance45inside = (1 - Math.SQRT1_2) * (radius - offset) + offset;
|
|
164
|
+
|
|
165
|
+
const topLeftStartX = distance45inside;
|
|
166
|
+
const topLeftStartY = distance45inside;
|
|
167
|
+
const topLeftCornerHighlightRtl =
|
|
168
|
+
svgPaths.moveBy(topLeftStartX, topLeftStartY) +
|
|
169
|
+
svgPaths.arc(
|
|
170
|
+
'a', '0 0,1', radius - offset,
|
|
171
|
+
svgPaths.point(radius - topLeftStartX, -topLeftStartY + offset));
|
|
172
|
+
/**
|
|
173
|
+
* SVG path for drawing the highlight on the rounded top-left corner.
|
|
174
|
+
* @const
|
|
175
|
+
*/
|
|
176
|
+
const topLeftCornerHighlightLtr = svgPaths.moveBy(offset, radius) +
|
|
177
|
+
svgPaths.arc(
|
|
178
|
+
'a', '0 0,1', radius - offset,
|
|
179
|
+
svgPaths.point(radius, -radius + offset));
|
|
180
|
+
|
|
181
|
+
const bottomLeftStartX = distance45inside;
|
|
182
|
+
const bottomLeftStartY = -distance45inside;
|
|
183
|
+
const bottomLeftPath = svgPaths.moveBy(bottomLeftStartX, bottomLeftStartY) +
|
|
184
|
+
svgPaths.arc(
|
|
185
|
+
'a', '0 0,1', radius - offset,
|
|
186
|
+
svgPaths.point(
|
|
187
|
+
-bottomLeftStartX + offset, -bottomLeftStartY - radius));
|
|
188
|
+
|
|
189
|
+
return {
|
|
190
|
+
height: radius,
|
|
191
|
+
topLeft: function(rtl) {
|
|
192
|
+
return rtl ? topLeftCornerHighlightRtl : topLeftCornerHighlightLtr;
|
|
193
|
+
},
|
|
194
|
+
bottomLeft: function() {
|
|
195
|
+
return bottomLeftPath;
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
86
199
|
|
|
87
200
|
/**
|
|
88
|
-
* An object containing sizing and path information about
|
|
89
|
-
*
|
|
90
|
-
* @
|
|
201
|
+
* @return {!Object} An object containing sizing and path information about
|
|
202
|
+
* puzzle tab highlights.
|
|
203
|
+
* @package
|
|
91
204
|
*/
|
|
92
|
-
|
|
205
|
+
makePuzzleTab() {
|
|
206
|
+
const width = this.constantProvider.TAB_WIDTH;
|
|
207
|
+
const height = this.constantProvider.TAB_HEIGHT;
|
|
208
|
+
|
|
209
|
+
// This is how much of the vertical block edge is actually drawn by the
|
|
210
|
+
// puzzle tab.
|
|
211
|
+
const verticalOverlap = 2.5;
|
|
212
|
+
|
|
213
|
+
const highlightRtlUp =
|
|
214
|
+
svgPaths.moveBy(-2, -height + verticalOverlap + 0.9) +
|
|
215
|
+
svgPaths.lineTo(width * -0.45, -2.1);
|
|
216
|
+
|
|
217
|
+
const highlightRtlDown = svgPaths.lineOnAxis('v', verticalOverlap) +
|
|
218
|
+
svgPaths.moveBy(-width * 0.97, 2.5) +
|
|
219
|
+
svgPaths.curve(
|
|
220
|
+
'q',
|
|
221
|
+
[
|
|
222
|
+
svgPaths.point(-width * 0.05, 10),
|
|
223
|
+
svgPaths.point(width * 0.3, 9.5),
|
|
224
|
+
]) +
|
|
225
|
+
svgPaths.moveBy(width * 0.67, -1.9) +
|
|
226
|
+
svgPaths.lineOnAxis('v', verticalOverlap);
|
|
227
|
+
|
|
228
|
+
const highlightLtrUp = svgPaths.lineOnAxis('v', -1.5) +
|
|
229
|
+
svgPaths.moveBy(width * -0.92, -0.5) +
|
|
230
|
+
svgPaths.curve(
|
|
231
|
+
'q',
|
|
232
|
+
[svgPaths.point(width * -0.19, -5.5), svgPaths.point(0, -11)]) +
|
|
233
|
+
svgPaths.moveBy(width * 0.92, 1);
|
|
234
|
+
|
|
235
|
+
const highlightLtrDown =
|
|
236
|
+
svgPaths.moveBy(-5, height - 0.7) + svgPaths.lineTo(width * 0.46, -2.1);
|
|
237
|
+
|
|
238
|
+
return {
|
|
239
|
+
width: width,
|
|
240
|
+
height: height,
|
|
241
|
+
pathUp: function(rtl) {
|
|
242
|
+
return rtl ? highlightRtlUp : highlightLtrUp;
|
|
243
|
+
},
|
|
244
|
+
pathDown: function(rtl) {
|
|
245
|
+
return rtl ? highlightRtlDown : highlightLtrDown;
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
93
249
|
|
|
94
250
|
/**
|
|
95
|
-
* An object containing sizing and path information about
|
|
96
|
-
* highlights.
|
|
97
|
-
* @
|
|
251
|
+
* @return {!Object} An object containing sizing and path information about
|
|
252
|
+
* notch highlights.
|
|
253
|
+
* @package
|
|
98
254
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
* @package
|
|
106
|
-
*/
|
|
107
|
-
HighlightConstantProvider.prototype.makeInsideCorner = function() {
|
|
108
|
-
const radius = this.constantProvider.CORNER_RADIUS;
|
|
109
|
-
const offset = this.OFFSET;
|
|
255
|
+
makeNotch() {
|
|
256
|
+
// This is only for the previous connection.
|
|
257
|
+
const pathLeft = svgPaths.lineOnAxis('h', this.OFFSET) +
|
|
258
|
+
this.constantProvider.NOTCH.pathLeft;
|
|
259
|
+
return {pathLeft: pathLeft};
|
|
260
|
+
}
|
|
110
261
|
|
|
111
262
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* @
|
|
263
|
+
* @return {!Object} An object containing sizing and path information about
|
|
264
|
+
* collapsed block edge highlights.
|
|
265
|
+
* @package
|
|
115
266
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
svgPaths.point(
|
|
122
|
-
-distance45outside - offset, radius - distance45outside));
|
|
123
|
-
|
|
124
|
-
const pathBottomRtl = svgPaths.arc(
|
|
125
|
-
'a', '0 0,0', radius + offset,
|
|
126
|
-
svgPaths.point(radius + offset, radius + offset));
|
|
127
|
-
|
|
128
|
-
const pathBottomLtr = svgPaths.moveBy(distance45outside, -distance45outside) +
|
|
129
|
-
svgPaths.arc(
|
|
130
|
-
'a', '0 0,0', radius + offset,
|
|
131
|
-
svgPaths.point(
|
|
132
|
-
radius - distance45outside, distance45outside + offset));
|
|
133
|
-
|
|
134
|
-
return {
|
|
135
|
-
width: radius + offset,
|
|
136
|
-
height: radius,
|
|
137
|
-
pathTop: function(rtl) {
|
|
138
|
-
return rtl ? pathTopRtl : '';
|
|
139
|
-
},
|
|
140
|
-
pathBottom: function(rtl) {
|
|
141
|
-
return rtl ? pathBottomRtl : pathBottomLtr;
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
};
|
|
267
|
+
makeJaggedTeeth() {
|
|
268
|
+
const pathLeft = svgPaths.lineTo(5.1, 2.6) + svgPaths.moveBy(-10.2, 6.8) +
|
|
269
|
+
svgPaths.lineTo(5.1, 2.6);
|
|
270
|
+
return {pathLeft: pathLeft, height: 12, width: 10.2};
|
|
271
|
+
}
|
|
145
272
|
|
|
146
|
-
/**
|
|
147
|
-
* @return {!Object} An object containing sizing and path information about
|
|
148
|
-
* outside corner highlights.
|
|
149
|
-
* @package
|
|
150
|
-
*/
|
|
151
|
-
HighlightConstantProvider.prototype.makeOutsideCorner = function() {
|
|
152
|
-
const radius = this.constantProvider.CORNER_RADIUS;
|
|
153
|
-
const offset = this.OFFSET;
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Distance from shape edge to intersect with a curved corner at 45 degrees.
|
|
157
|
-
* Applies to highlighting on around the inside of a curve.
|
|
158
|
-
* @const
|
|
159
|
-
*/
|
|
160
|
-
const distance45inside = (1 - Math.SQRT1_2) * (radius - offset) + offset;
|
|
161
|
-
|
|
162
|
-
const topLeftStartX = distance45inside;
|
|
163
|
-
const topLeftStartY = distance45inside;
|
|
164
|
-
const topLeftCornerHighlightRtl =
|
|
165
|
-
svgPaths.moveBy(topLeftStartX, topLeftStartY) +
|
|
166
|
-
svgPaths.arc(
|
|
167
|
-
'a', '0 0,1', radius - offset,
|
|
168
|
-
svgPaths.point(radius - topLeftStartX, -topLeftStartY + offset));
|
|
169
273
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
274
|
+
* @return {!Object} An object containing sizing and path information about
|
|
275
|
+
* start highlights.
|
|
276
|
+
* @package
|
|
172
277
|
*/
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* @return {!Object} An object containing sizing and path information about
|
|
199
|
-
* puzzle tab highlights.
|
|
200
|
-
* @package
|
|
201
|
-
*/
|
|
202
|
-
HighlightConstantProvider.prototype.makePuzzleTab = function() {
|
|
203
|
-
const width = this.constantProvider.TAB_WIDTH;
|
|
204
|
-
const height = this.constantProvider.TAB_HEIGHT;
|
|
205
|
-
|
|
206
|
-
// This is how much of the vertical block edge is actually drawn by the puzzle
|
|
207
|
-
// tab.
|
|
208
|
-
const verticalOverlap = 2.5;
|
|
209
|
-
|
|
210
|
-
const highlightRtlUp = svgPaths.moveBy(-2, -height + verticalOverlap + 0.9) +
|
|
211
|
-
svgPaths.lineTo(width * -0.45, -2.1);
|
|
212
|
-
|
|
213
|
-
const highlightRtlDown = svgPaths.lineOnAxis('v', verticalOverlap) +
|
|
214
|
-
svgPaths.moveBy(-width * 0.97, 2.5) +
|
|
215
|
-
svgPaths.curve(
|
|
216
|
-
'q',
|
|
217
|
-
[
|
|
218
|
-
svgPaths.point(-width * 0.05, 10),
|
|
219
|
-
svgPaths.point(width * 0.3, 9.5),
|
|
220
|
-
]) +
|
|
221
|
-
svgPaths.moveBy(width * 0.67, -1.9) +
|
|
222
|
-
svgPaths.lineOnAxis('v', verticalOverlap);
|
|
223
|
-
|
|
224
|
-
const highlightLtrUp = svgPaths.lineOnAxis('v', -1.5) +
|
|
225
|
-
svgPaths.moveBy(width * -0.92, -0.5) +
|
|
226
|
-
svgPaths.curve(
|
|
227
|
-
'q', [svgPaths.point(width * -0.19, -5.5), svgPaths.point(0, -11)]) +
|
|
228
|
-
svgPaths.moveBy(width * 0.92, 1);
|
|
229
|
-
|
|
230
|
-
const highlightLtrDown =
|
|
231
|
-
svgPaths.moveBy(-5, height - 0.7) + svgPaths.lineTo(width * 0.46, -2.1);
|
|
232
|
-
|
|
233
|
-
return {
|
|
234
|
-
width: width,
|
|
235
|
-
height: height,
|
|
236
|
-
pathUp: function(rtl) {
|
|
237
|
-
return rtl ? highlightRtlUp : highlightLtrUp;
|
|
238
|
-
},
|
|
239
|
-
pathDown: function(rtl) {
|
|
240
|
-
return rtl ? highlightRtlDown : highlightLtrDown;
|
|
241
|
-
},
|
|
242
|
-
};
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* @return {!Object} An object containing sizing and path information about
|
|
247
|
-
* notch highlights.
|
|
248
|
-
* @package
|
|
249
|
-
*/
|
|
250
|
-
HighlightConstantProvider.prototype.makeNotch = function() {
|
|
251
|
-
// This is only for the previous connection.
|
|
252
|
-
const pathLeft = svgPaths.lineOnAxis('h', this.OFFSET) +
|
|
253
|
-
this.constantProvider.NOTCH.pathLeft;
|
|
254
|
-
return {pathLeft: pathLeft};
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* @return {!Object} An object containing sizing and path information about
|
|
259
|
-
* collapsed block edge highlights.
|
|
260
|
-
* @package
|
|
261
|
-
*/
|
|
262
|
-
HighlightConstantProvider.prototype.makeJaggedTeeth = function() {
|
|
263
|
-
const pathLeft = svgPaths.lineTo(5.1, 2.6) + svgPaths.moveBy(-10.2, 6.8) +
|
|
264
|
-
svgPaths.lineTo(5.1, 2.6);
|
|
265
|
-
return {pathLeft: pathLeft, height: 12, width: 10.2};
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* @return {!Object} An object containing sizing and path information about
|
|
270
|
-
* start highlights.
|
|
271
|
-
* @package
|
|
272
|
-
*/
|
|
273
|
-
HighlightConstantProvider.prototype.makeStartHat = function() {
|
|
274
|
-
const hatHeight = this.constantProvider.START_HAT.height;
|
|
275
|
-
const pathRtl = svgPaths.moveBy(25, -8.7) + svgPaths.curve('c', [
|
|
276
|
-
svgPaths.point(29.7, -6.2),
|
|
277
|
-
svgPaths.point(57.2, -0.5),
|
|
278
|
-
svgPaths.point(75, 8.7),
|
|
279
|
-
]);
|
|
280
|
-
|
|
281
|
-
const pathLtr = svgPaths.curve('c', [
|
|
282
|
-
svgPaths.point(17.8, -9.2),
|
|
283
|
-
svgPaths.point(45.3, -14.9),
|
|
284
|
-
svgPaths.point(75, -8.7),
|
|
285
|
-
]) + svgPaths.moveTo(100.5, hatHeight + 0.5);
|
|
286
|
-
return {
|
|
287
|
-
path: function(rtl) {
|
|
288
|
-
return rtl ? pathRtl : pathLtr;
|
|
289
|
-
},
|
|
290
|
-
};
|
|
291
|
-
};
|
|
278
|
+
makeStartHat() {
|
|
279
|
+
const hatHeight = this.constantProvider.START_HAT.height;
|
|
280
|
+
const pathRtl = svgPaths.moveBy(25, -8.7) + svgPaths.curve('c', [
|
|
281
|
+
svgPaths.point(29.7, -6.2),
|
|
282
|
+
svgPaths.point(57.2, -0.5),
|
|
283
|
+
svgPaths.point(75, 8.7),
|
|
284
|
+
]);
|
|
285
|
+
|
|
286
|
+
const pathLtr = svgPaths.curve('c', [
|
|
287
|
+
svgPaths.point(17.8, -9.2),
|
|
288
|
+
svgPaths.point(45.3, -14.9),
|
|
289
|
+
svgPaths.point(75, -8.7),
|
|
290
|
+
]) + svgPaths.moveTo(100.5, hatHeight + 0.5);
|
|
291
|
+
return {
|
|
292
|
+
path: function(rtl) {
|
|
293
|
+
return rtl ? pathRtl : pathLtr;
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
292
298
|
|
|
293
299
|
exports.HighlightConstantProvider = HighlightConstantProvider;
|