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.
Files changed (262) hide show
  1. package/blockly.d.ts +18963 -18432
  2. package/blockly.min.js +852 -844
  3. package/blockly_compressed.js +669 -664
  4. package/blockly_compressed.js.map +1 -1
  5. package/blocks/blocks.js +47 -0
  6. package/blocks/colour.js +13 -3
  7. package/blocks/lists.js +22 -13
  8. package/blocks/logic.js +13 -3
  9. package/blocks/loops.js +24 -11
  10. package/blocks/math.js +12 -3
  11. package/blocks/procedures.js +41 -27
  12. package/blocks/text.js +22 -13
  13. package/blocks/variables.js +14 -3
  14. package/blocks/variables_dynamic.js +13 -3
  15. package/blocks_compressed.js +146 -141
  16. package/blocks_compressed.js.map +1 -1
  17. package/core/block.js +1869 -1814
  18. package/core/block_drag_surface.js +201 -200
  19. package/core/block_dragger.js +377 -373
  20. package/core/block_svg.js +1593 -1479
  21. package/core/blockly.js +8 -22
  22. package/core/blocks.js +9 -2
  23. package/core/browser_events.js +22 -5
  24. package/core/bubble.js +841 -797
  25. package/core/bubble_dragger.js +213 -206
  26. package/core/bump_objects.js +2 -2
  27. package/core/clipboard.js +9 -9
  28. package/core/comment.js +353 -332
  29. package/core/common.js +46 -17
  30. package/core/component_manager.js +181 -174
  31. package/core/config.js +87 -0
  32. package/core/connection.js +595 -584
  33. package/core/connection_checker.js +242 -244
  34. package/core/connection_db.js +235 -230
  35. package/core/contextmenu.js +9 -6
  36. package/core/contextmenu_items.js +1 -2
  37. package/core/contextmenu_registry.js +93 -89
  38. package/core/css.js +474 -474
  39. package/core/delete_area.js +45 -42
  40. package/core/drag_target.js +57 -56
  41. package/core/dropdowndiv.js +153 -163
  42. package/core/events/events.js +2 -2
  43. package/core/events/events_abstract.js +89 -77
  44. package/core/events/events_block_base.js +37 -36
  45. package/core/events/events_block_change.js +130 -124
  46. package/core/events/events_block_create.js +73 -71
  47. package/core/events/events_block_delete.js +84 -82
  48. package/core/events/events_block_drag.js +50 -49
  49. package/core/events/events_block_move.js +147 -140
  50. package/core/events/events_bubble_open.js +51 -50
  51. package/core/events/events_click.js +48 -44
  52. package/core/events/events_comment_base.js +72 -69
  53. package/core/events/events_comment_change.js +63 -61
  54. package/core/events/events_comment_create.js +44 -42
  55. package/core/events/events_comment_delete.js +42 -40
  56. package/core/events/events_comment_move.js +106 -104
  57. package/core/events/events_marker_move.js +65 -64
  58. package/core/events/events_selected.js +46 -45
  59. package/core/events/events_theme_change.js +36 -35
  60. package/core/events/events_toolbox_item_select.js +46 -45
  61. package/core/events/events_trashcan_open.js +37 -36
  62. package/core/events/events_ui.js +47 -46
  63. package/core/events/events_ui_base.js +30 -29
  64. package/core/events/events_var_base.js +37 -36
  65. package/core/events/events_var_create.js +50 -48
  66. package/core/events/events_var_delete.js +50 -48
  67. package/core/events/events_var_rename.js +51 -49
  68. package/core/events/events_viewport.js +66 -65
  69. package/core/events/utils.js +29 -14
  70. package/core/events/workspace_events.js +49 -55
  71. package/core/extensions.js +4 -3
  72. package/core/field.js +1061 -997
  73. package/core/field_angle.js +462 -442
  74. package/core/field_checkbox.js +194 -182
  75. package/core/field_colour.js +519 -505
  76. package/core/field_dropdown.js +617 -598
  77. package/core/field_image.js +229 -220
  78. package/core/field_label.js +102 -91
  79. package/core/field_label_serializable.js +42 -41
  80. package/core/field_multilineinput.js +372 -358
  81. package/core/field_number.js +272 -253
  82. package/core/field_textinput.js +499 -467
  83. package/core/field_variable.js +458 -420
  84. package/core/flyout_base.js +1005 -952
  85. package/core/flyout_button.js +277 -260
  86. package/core/flyout_horizontal.js +304 -302
  87. package/core/flyout_metrics_manager.js +64 -64
  88. package/core/flyout_vertical.js +306 -300
  89. package/core/generator.js +459 -446
  90. package/core/gesture.js +829 -813
  91. package/core/grid.js +166 -163
  92. package/core/icon.js +168 -159
  93. package/core/inject.js +7 -5
  94. package/core/input.js +257 -248
  95. package/core/insertion_marker_manager.js +655 -624
  96. package/core/internal_constants.js +0 -129
  97. package/core/keyboard_nav/ast_node.js +605 -596
  98. package/core/keyboard_nav/basic_cursor.js +166 -165
  99. package/core/keyboard_nav/cursor.js +99 -97
  100. package/core/keyboard_nav/marker.js +83 -79
  101. package/core/keyboard_nav/tab_navigate_cursor.js +18 -23
  102. package/core/marker_manager.js +153 -141
  103. package/core/menu.js +377 -372
  104. package/core/menuitem.js +223 -217
  105. package/core/metrics_manager.js +403 -390
  106. package/core/mutator.js +468 -437
  107. package/core/names.js +229 -188
  108. package/core/options.js +290 -284
  109. package/core/procedures.js +29 -17
  110. package/core/registry.js +19 -16
  111. package/core/rendered_connection.js +482 -463
  112. package/core/renderers/common/block_rendering.js +9 -3
  113. package/core/renderers/common/constants.js +1119 -1112
  114. package/core/renderers/common/debug.js +14 -0
  115. package/core/renderers/common/debugger.js +338 -316
  116. package/core/renderers/common/drawer.js +380 -370
  117. package/core/renderers/common/i_path_object.js +2 -2
  118. package/core/renderers/common/info.js +626 -618
  119. package/core/renderers/common/marker_svg.js +579 -541
  120. package/core/renderers/common/path_object.js +203 -200
  121. package/core/renderers/common/renderer.js +220 -218
  122. package/core/renderers/geras/constants.js +36 -36
  123. package/core/renderers/geras/drawer.js +155 -147
  124. package/core/renderers/geras/highlight_constants.js +244 -238
  125. package/core/renderers/geras/highlighter.js +231 -179
  126. package/core/renderers/geras/info.js +392 -369
  127. package/core/renderers/geras/measurables/inline_input.js +25 -19
  128. package/core/renderers/geras/measurables/statement_input.js +23 -17
  129. package/core/renderers/geras/path_object.js +106 -121
  130. package/core/renderers/geras/renderer.js +96 -98
  131. package/core/renderers/measurables/base.js +30 -18
  132. package/core/renderers/measurables/bottom_row.js +83 -80
  133. package/core/renderers/measurables/connection.js +22 -15
  134. package/core/renderers/measurables/external_value_input.js +35 -22
  135. package/core/renderers/measurables/field.js +35 -20
  136. package/core/renderers/measurables/hat.js +18 -13
  137. package/core/renderers/measurables/icon.js +24 -17
  138. package/core/renderers/measurables/in_row_spacer.js +15 -13
  139. package/core/renderers/measurables/inline_input.js +43 -33
  140. package/core/renderers/measurables/input_connection.js +41 -28
  141. package/core/renderers/measurables/input_row.js +50 -44
  142. package/core/renderers/measurables/jagged_edge.js +14 -12
  143. package/core/renderers/measurables/next_connection.js +16 -14
  144. package/core/renderers/measurables/output_connection.js +26 -20
  145. package/core/renderers/measurables/previous_connection.js +16 -15
  146. package/core/renderers/measurables/round_corner.js +20 -18
  147. package/core/renderers/measurables/row.js +184 -168
  148. package/core/renderers/measurables/spacer_row.js +38 -23
  149. package/core/renderers/measurables/square_corner.js +18 -16
  150. package/core/renderers/measurables/statement_input.js +23 -20
  151. package/core/renderers/measurables/top_row.js +88 -85
  152. package/core/renderers/minimalist/constants.js +8 -7
  153. package/core/renderers/minimalist/drawer.js +11 -10
  154. package/core/renderers/minimalist/info.js +18 -18
  155. package/core/renderers/minimalist/renderer.js +40 -39
  156. package/core/renderers/thrasos/info.js +258 -248
  157. package/core/renderers/thrasos/renderer.js +20 -20
  158. package/core/renderers/zelos/constants.js +898 -873
  159. package/core/renderers/zelos/drawer.js +186 -169
  160. package/core/renderers/zelos/info.js +502 -479
  161. package/core/renderers/zelos/marker_svg.js +129 -115
  162. package/core/renderers/zelos/measurables/bottom_row.js +31 -30
  163. package/core/renderers/zelos/measurables/inputs.js +22 -21
  164. package/core/renderers/zelos/measurables/row_elements.js +14 -13
  165. package/core/renderers/zelos/measurables/top_row.js +34 -33
  166. package/core/renderers/zelos/path_object.js +181 -180
  167. package/core/renderers/zelos/renderer.js +91 -92
  168. package/core/scrollbar.js +759 -713
  169. package/core/scrollbar_pair.js +250 -245
  170. package/core/serialization/blocks.js +19 -9
  171. package/core/serialization/workspaces.js +3 -2
  172. package/core/shortcut_registry.js +286 -277
  173. package/core/sprites.js +31 -0
  174. package/core/theme.js +135 -141
  175. package/core/theme_manager.js +147 -143
  176. package/core/toolbox/category.js +602 -576
  177. package/core/toolbox/collapsible_category.js +226 -227
  178. package/core/toolbox/separator.js +70 -61
  179. package/core/toolbox/toolbox.js +934 -927
  180. package/core/toolbox/toolbox_item.js +115 -99
  181. package/core/tooltip.js +108 -35
  182. package/core/touch.js +8 -3
  183. package/core/touch_gesture.js +254 -251
  184. package/core/trashcan.js +606 -595
  185. package/core/utils/coordinate.js +97 -95
  186. package/core/utils/dom.js +2 -2
  187. package/core/utils/global.js +2 -0
  188. package/core/utils/rect.js +41 -37
  189. package/core/utils/sentinel.js +25 -0
  190. package/core/utils/size.js +30 -27
  191. package/core/utils/svg.js +18 -16
  192. package/core/variable_map.js +325 -341
  193. package/core/variable_model.js +55 -54
  194. package/core/variables.js +9 -2
  195. package/core/variables_dynamic.js +3 -1
  196. package/core/warning.js +126 -120
  197. package/core/widgetdiv.js +4 -4
  198. package/core/workspace.js +685 -664
  199. package/core/workspace_audio.js +124 -118
  200. package/core/workspace_comment.js +308 -298
  201. package/core/workspace_comment_svg.js +1029 -951
  202. package/core/workspace_drag_surface_svg.js +147 -140
  203. package/core/workspace_dragger.js +70 -71
  204. package/core/workspace_svg.js +2322 -2297
  205. package/core/xml.js +30 -20
  206. package/core/zoom_controls.js +431 -439
  207. package/dart_compressed.js +40 -43
  208. package/dart_compressed.js.map +1 -1
  209. package/generators/dart/colour.js +56 -64
  210. package/generators/dart/lists.js +61 -50
  211. package/generators/dart/math.js +160 -148
  212. package/generators/dart/text.js +83 -61
  213. package/generators/javascript/colour.js +37 -34
  214. package/generators/javascript/lists.js +50 -43
  215. package/generators/javascript/math.js +123 -139
  216. package/generators/javascript/text.js +67 -81
  217. package/generators/lua/colour.js +25 -23
  218. package/generators/lua/lists.js +97 -69
  219. package/generators/lua/logic.js +1 -2
  220. package/generators/lua/math.js +182 -144
  221. package/generators/lua/text.js +116 -99
  222. package/generators/php/colour.js +38 -32
  223. package/generators/php/lists.js +109 -89
  224. package/generators/php/math.js +90 -81
  225. package/generators/php/text.js +63 -61
  226. package/generators/python/colour.js +18 -18
  227. package/generators/python/lists.js +38 -30
  228. package/generators/python/loops.js +12 -8
  229. package/generators/python/math.js +104 -106
  230. package/generators/python/text.js +34 -30
  231. package/javascript_compressed.js +37 -39
  232. package/javascript_compressed.js.map +1 -1
  233. package/lua_compressed.js +39 -42
  234. package/lua_compressed.js.map +1 -1
  235. package/msg/az.js +2 -2
  236. package/msg/be.js +4 -4
  237. package/msg/cs.js +15 -15
  238. package/msg/de.js +1 -1
  239. package/msg/diq.js +1 -1
  240. package/msg/eo.js +1 -1
  241. package/msg/es.js +1 -1
  242. package/msg/fa.js +1 -1
  243. package/msg/fr.js +4 -4
  244. package/msg/he.js +1 -1
  245. package/msg/hr.js +2 -2
  246. package/msg/hy.js +2 -2
  247. package/msg/id.js +12 -12
  248. package/msg/inh.js +14 -14
  249. package/msg/ja.js +7 -7
  250. package/msg/lv.js +29 -29
  251. package/msg/pa.js +3 -3
  252. package/msg/smn.js +436 -0
  253. package/msg/te.js +1 -1
  254. package/msg/yue.js +1 -1
  255. package/msg/zh-hans.js +3 -3
  256. package/msg/zh-hant.js +3 -3
  257. package/package.json +7 -6
  258. package/php_compressed.js +38 -42
  259. package/php_compressed.js.map +1 -1
  260. package/python_compressed.js +26 -25
  261. package/python_compressed.js.map +1 -1
  262. 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
- const HighlightConstantProvider = function(constants) {
30
+ class HighlightConstantProvider {
35
31
  /**
36
- * The renderer's constant provider.
37
- * @type {!ConstantProvider}
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
- this.OFFSET = 0.5;
47
-
48
- /**
49
- * The start point, which is offset in both X and Y, as an SVG path chunk.
50
- * @type {string}
51
- */
52
- this.START_POINT = svgPaths.moveBy(this.OFFSET, this.OFFSET);
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
- * An object containing sizing and path information about inside corner
62
- * highlights.
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
- this.OUTSIDE_CORNER = this.makeOutsideCorner();
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 puzzle tab
76
- * highlights.
77
- * @type {!Object}
105
+ * @return {!Object} An object containing sizing and path information about
106
+ * inside corner highlights.
107
+ * @package
78
108
  */
79
- this.PUZZLE_TAB = this.makePuzzleTab();
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 notch highlights.
83
- * @type {!Object}
150
+ * @return {!Object} An object containing sizing and path information about
151
+ * outside corner highlights.
152
+ * @package
84
153
  */
85
- this.NOTCH = this.makeNotch();
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 highlights for
89
- * collapsed block indicators.
90
- * @type {!Object}
201
+ * @return {!Object} An object containing sizing and path information about
202
+ * puzzle tab highlights.
203
+ * @package
91
204
  */
92
- this.JAGGED_TEETH = this.makeJaggedTeeth();
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 start hat
96
- * highlights.
97
- * @type {!Object}
251
+ * @return {!Object} An object containing sizing and path information about
252
+ * notch highlights.
253
+ * @package
98
254
  */
99
- this.START_HAT = this.makeStartHat();
100
- };
101
-
102
- /**
103
- * @return {!Object} An object containing sizing and path information about
104
- * inside corner highlights.
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
- * Distance from shape edge to intersect with a curved corner at 45 degrees.
113
- * Applies to highlighting on around the outside of a curve.
114
- * @const
263
+ * @return {!Object} An object containing sizing and path information about
264
+ * collapsed block edge highlights.
265
+ * @package
115
266
  */
116
- const distance45outside = (1 - Math.SQRT1_2) * (radius + offset) - offset;
117
-
118
- const pathTopRtl = svgPaths.moveBy(distance45outside, distance45outside) +
119
- svgPaths.arc(
120
- 'a', '0 0,0', radius,
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
- * SVG path for drawing the highlight on the rounded top-left corner.
171
- * @const
274
+ * @return {!Object} An object containing sizing and path information about
275
+ * start highlights.
276
+ * @package
172
277
  */
173
- const topLeftCornerHighlightLtr = svgPaths.moveBy(offset, radius) +
174
- svgPaths.arc(
175
- 'a', '0 0,1', radius - offset,
176
- svgPaths.point(radius, -radius + offset));
177
-
178
- const bottomLeftStartX = distance45inside;
179
- const bottomLeftStartY = -distance45inside;
180
- const bottomLeftPath = svgPaths.moveBy(bottomLeftStartX, bottomLeftStartY) +
181
- svgPaths.arc(
182
- 'a', '0 0,1', radius - offset,
183
- svgPaths.point(
184
- -bottomLeftStartX + offset, -bottomLeftStartY - radius));
185
-
186
- return {
187
- height: radius,
188
- topLeft: function(rtl) {
189
- return rtl ? topLeftCornerHighlightRtl : topLeftCornerHighlightLtr;
190
- },
191
- bottomLeft: function() {
192
- return bottomLeftPath;
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;