blockly 7.20211209.2 → 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
package/core/css.js CHANGED
@@ -89,480 +89,480 @@ exports.inject = inject;
89
89
  * @alias Blockly.Css.content
90
90
  */
91
91
  let content = (`
92
- .blocklySvg {
93
- background-color: #fff;
94
- outline: none;
95
- overflow: hidden; /* IE overflows by default. */
96
- position: absolute;
97
- display: block;
98
- }
99
-
100
- .blocklyWidgetDiv {
101
- display: none;
102
- position: absolute;
103
- z-index: 99999; /* big value for bootstrap3 compatibility */
104
- }
105
-
106
- .injectionDiv {
107
- height: 100%;
108
- position: relative;
109
- overflow: hidden; /* So blocks in drag surface disappear at edges */
110
- touch-action: none;
111
- }
112
-
113
- .blocklyNonSelectable {
114
- user-select: none;
115
- -ms-user-select: none;
116
- -webkit-user-select: none;
117
- }
118
-
119
- .blocklyWsDragSurface {
120
- display: none;
121
- position: absolute;
122
- top: 0;
123
- left: 0;
124
- }
125
-
126
- /* Added as a separate rule with multiple classes to make it more specific
127
- than a bootstrap rule that selects svg:root. See issue #1275 for context.
128
- */
129
- .blocklyWsDragSurface.blocklyOverflowVisible {
130
- overflow: visible;
131
- }
132
-
133
- .blocklyBlockDragSurface {
134
- display: none;
135
- position: absolute;
136
- top: 0;
137
- left: 0;
138
- right: 0;
139
- bottom: 0;
140
- overflow: visible !important;
141
- z-index: 50; /* Display below toolbox, but above everything else. */
142
- }
143
-
144
- .blocklyBlockCanvas.blocklyCanvasTransitioning,
145
- .blocklyBubbleCanvas.blocklyCanvasTransitioning {
146
- transition: transform .5s;
147
- }
148
-
149
- .blocklyTooltipDiv {
150
- background-color: #ffffc7;
151
- border: 1px solid #ddc;
152
- box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);
153
- color: #000;
154
- display: none;
155
- font: 9pt sans-serif;
156
- opacity: .9;
157
- padding: 2px;
158
- position: absolute;
159
- z-index: 100000; /* big value for bootstrap3 compatibility */
160
- }
161
-
162
- .blocklyDropDownDiv {
163
- position: absolute;
164
- left: 0;
165
- top: 0;
166
- z-index: 1000;
167
- display: none;
168
- border: 1px solid;
169
- border-color: #dadce0;
170
- background-color: #fff;
171
- border-radius: 2px;
172
- padding: 4px;
173
- box-shadow: 0 0 3px 1px rgba(0,0,0,.3);
174
- }
175
-
176
- .blocklyDropDownDiv.blocklyFocused {
177
- box-shadow: 0 0 6px 1px rgba(0,0,0,.3);
178
- }
179
-
180
- .blocklyDropDownContent {
181
- max-height: 300px; // @todo: spec for maximum height.
182
- overflow: auto;
183
- overflow-x: hidden;
184
- position: relative;
185
- }
186
-
187
- .blocklyDropDownArrow {
188
- position: absolute;
189
- left: 0;
190
- top: 0;
191
- width: 16px;
192
- height: 16px;
193
- z-index: -1;
194
- background-color: inherit;
195
- border-color: inherit;
196
- }
197
-
198
- .blocklyDropDownButton {
199
- display: inline-block;
200
- float: left;
201
- padding: 0;
202
- margin: 4px;
203
- border-radius: 4px;
204
- outline: none;
205
- border: 1px solid;
206
- transition: box-shadow .1s;
207
- cursor: pointer;
208
- }
209
-
210
- .blocklyArrowTop {
211
- border-top: 1px solid;
212
- border-left: 1px solid;
213
- border-top-left-radius: 4px;
214
- border-color: inherit;
215
- }
216
-
217
- .blocklyArrowBottom {
218
- border-bottom: 1px solid;
219
- border-right: 1px solid;
220
- border-bottom-right-radius: 4px;
221
- border-color: inherit;
222
- }
223
-
224
- .blocklyResizeSE {
225
- cursor: se-resize;
226
- fill: #aaa;
227
- }
228
-
229
- .blocklyResizeSW {
230
- cursor: sw-resize;
231
- fill: #aaa;
232
- }
233
-
234
- .blocklyResizeLine {
235
- stroke: #515A5A;
236
- stroke-width: 1;
237
- }
238
-
239
- .blocklyHighlightedConnectionPath {
240
- fill: none;
241
- stroke: #fc3;
242
- stroke-width: 4px;
243
- }
244
-
245
- .blocklyPathLight {
246
- fill: none;
247
- stroke-linecap: round;
248
- stroke-width: 1;
249
- }
250
-
251
- .blocklySelected>.blocklyPathLight {
252
- display: none;
253
- }
254
-
255
- .blocklyDraggable {
256
- /* backup for browsers (e.g. IE11) that don't support grab */
257
- cursor: url("<<<PATH>>>/handopen.cur"), auto;
258
- cursor: grab;
259
- cursor: -webkit-grab;
260
- }
261
-
262
- /* backup for browsers (e.g. IE11) that don't support grabbing */
263
- .blocklyDragging {
264
- /* backup for browsers (e.g. IE11) that don't support grabbing */
265
- cursor: url("<<<PATH>>>/handclosed.cur"), auto;
266
- cursor: grabbing;
267
- cursor: -webkit-grabbing;
268
- }
269
-
270
- /* Changes cursor on mouse down. Not effective in Firefox because of
271
- https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */
272
- .blocklyDraggable:active {
273
- /* backup for browsers (e.g. IE11) that don't support grabbing */
274
- cursor: url("<<<PATH>>>/handclosed.cur"), auto;
275
- cursor: grabbing;
276
- cursor: -webkit-grabbing;
277
- }
278
-
279
- /* Change the cursor on the whole drag surface in case the mouse gets
280
- ahead of block during a drag. This way the cursor is still a closed hand.
281
- */
282
- .blocklyBlockDragSurface .blocklyDraggable {
283
- /* backup for browsers (e.g. IE11) that don't support grabbing */
284
- cursor: url("<<<PATH>>>/handclosed.cur"), auto;
285
- cursor: grabbing;
286
- cursor: -webkit-grabbing;
287
- }
288
-
289
- .blocklyDragging.blocklyDraggingDelete {
290
- cursor: url("<<<PATH>>>/handdelete.cur"), auto;
291
- }
292
-
293
- .blocklyDragging>.blocklyPath,
294
- .blocklyDragging>.blocklyPathLight {
295
- fill-opacity: .8;
296
- stroke-opacity: .8;
297
- }
298
-
299
- .blocklyDragging>.blocklyPathDark {
300
- display: none;
301
- }
302
-
303
- .blocklyDisabled>.blocklyPath {
304
- fill-opacity: .5;
305
- stroke-opacity: .5;
306
- }
307
-
308
- .blocklyDisabled>.blocklyPathLight,
309
- .blocklyDisabled>.blocklyPathDark {
310
- display: none;
311
- }
312
-
313
- .blocklyInsertionMarker>.blocklyPath,
314
- .blocklyInsertionMarker>.blocklyPathLight,
315
- .blocklyInsertionMarker>.blocklyPathDark {
316
- fill-opacity: .2;
317
- stroke: none;
318
- }
319
-
320
- .blocklyMultilineText {
321
- font-family: monospace;
322
- }
323
-
324
- .blocklyNonEditableText>text {
325
- pointer-events: none;
326
- }
327
-
328
- .blocklyFlyout {
329
- position: absolute;
330
- z-index: 20;
331
- }
332
-
333
- .blocklyText text {
334
- cursor: default;
335
- }
336
-
337
- /*
338
- Don't allow users to select text. It gets annoying when trying to
339
- drag a block and selected text moves instead.
92
+ .blocklySvg {
93
+ background-color: #fff;
94
+ outline: none;
95
+ overflow: hidden; /* IE overflows by default. */
96
+ position: absolute;
97
+ display: block;
98
+ }
99
+
100
+ .blocklyWidgetDiv {
101
+ display: none;
102
+ position: absolute;
103
+ z-index: 99999; /* big value for bootstrap3 compatibility */
104
+ }
105
+
106
+ .injectionDiv {
107
+ height: 100%;
108
+ position: relative;
109
+ overflow: hidden; /* So blocks in drag surface disappear at edges */
110
+ touch-action: none;
111
+ }
112
+
113
+ .blocklyNonSelectable {
114
+ user-select: none;
115
+ -ms-user-select: none;
116
+ -webkit-user-select: none;
117
+ }
118
+
119
+ .blocklyWsDragSurface {
120
+ display: none;
121
+ position: absolute;
122
+ top: 0;
123
+ left: 0;
124
+ }
125
+
126
+ /* Added as a separate rule with multiple classes to make it more specific
127
+ than a bootstrap rule that selects svg:root. See issue #1275 for context.
128
+ */
129
+ .blocklyWsDragSurface.blocklyOverflowVisible {
130
+ overflow: visible;
131
+ }
132
+
133
+ .blocklyBlockDragSurface {
134
+ display: none;
135
+ position: absolute;
136
+ top: 0;
137
+ left: 0;
138
+ right: 0;
139
+ bottom: 0;
140
+ overflow: visible !important;
141
+ z-index: 50; /* Display below toolbox, but above everything else. */
142
+ }
143
+
144
+ .blocklyBlockCanvas.blocklyCanvasTransitioning,
145
+ .blocklyBubbleCanvas.blocklyCanvasTransitioning {
146
+ transition: transform .5s;
147
+ }
148
+
149
+ .blocklyTooltipDiv {
150
+ background-color: #ffffc7;
151
+ border: 1px solid #ddc;
152
+ box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);
153
+ color: #000;
154
+ display: none;
155
+ font: 9pt sans-serif;
156
+ opacity: .9;
157
+ padding: 2px;
158
+ position: absolute;
159
+ z-index: 100000; /* big value for bootstrap3 compatibility */
160
+ }
161
+
162
+ .blocklyDropDownDiv {
163
+ position: absolute;
164
+ left: 0;
165
+ top: 0;
166
+ z-index: 1000;
167
+ display: none;
168
+ border: 1px solid;
169
+ border-color: #dadce0;
170
+ background-color: #fff;
171
+ border-radius: 2px;
172
+ padding: 4px;
173
+ box-shadow: 0 0 3px 1px rgba(0,0,0,.3);
174
+ }
175
+
176
+ .blocklyDropDownDiv.blocklyFocused {
177
+ box-shadow: 0 0 6px 1px rgba(0,0,0,.3);
178
+ }
179
+
180
+ .blocklyDropDownContent {
181
+ max-height: 300px; // @todo: spec for maximum height.
182
+ overflow: auto;
183
+ overflow-x: hidden;
184
+ position: relative;
185
+ }
186
+
187
+ .blocklyDropDownArrow {
188
+ position: absolute;
189
+ left: 0;
190
+ top: 0;
191
+ width: 16px;
192
+ height: 16px;
193
+ z-index: -1;
194
+ background-color: inherit;
195
+ border-color: inherit;
196
+ }
197
+
198
+ .blocklyDropDownButton {
199
+ display: inline-block;
200
+ float: left;
201
+ padding: 0;
202
+ margin: 4px;
203
+ border-radius: 4px;
204
+ outline: none;
205
+ border: 1px solid;
206
+ transition: box-shadow .1s;
207
+ cursor: pointer;
208
+ }
209
+
210
+ .blocklyArrowTop {
211
+ border-top: 1px solid;
212
+ border-left: 1px solid;
213
+ border-top-left-radius: 4px;
214
+ border-color: inherit;
215
+ }
216
+
217
+ .blocklyArrowBottom {
218
+ border-bottom: 1px solid;
219
+ border-right: 1px solid;
220
+ border-bottom-right-radius: 4px;
221
+ border-color: inherit;
222
+ }
223
+
224
+ .blocklyResizeSE {
225
+ cursor: se-resize;
226
+ fill: #aaa;
227
+ }
228
+
229
+ .blocklyResizeSW {
230
+ cursor: sw-resize;
231
+ fill: #aaa;
232
+ }
233
+
234
+ .blocklyResizeLine {
235
+ stroke: #515A5A;
236
+ stroke-width: 1;
237
+ }
238
+
239
+ .blocklyHighlightedConnectionPath {
240
+ fill: none;
241
+ stroke: #fc3;
242
+ stroke-width: 4px;
243
+ }
244
+
245
+ .blocklyPathLight {
246
+ fill: none;
247
+ stroke-linecap: round;
248
+ stroke-width: 1;
249
+ }
250
+
251
+ .blocklySelected>.blocklyPathLight {
252
+ display: none;
253
+ }
254
+
255
+ .blocklyDraggable {
256
+ /* backup for browsers (e.g. IE11) that don't support grab */
257
+ cursor: url("<<<PATH>>>/handopen.cur"), auto;
258
+ cursor: grab;
259
+ cursor: -webkit-grab;
260
+ }
261
+
262
+ /* backup for browsers (e.g. IE11) that don't support grabbing */
263
+ .blocklyDragging {
264
+ /* backup for browsers (e.g. IE11) that don't support grabbing */
265
+ cursor: url("<<<PATH>>>/handclosed.cur"), auto;
266
+ cursor: grabbing;
267
+ cursor: -webkit-grabbing;
268
+ }
269
+
270
+ /* Changes cursor on mouse down. Not effective in Firefox because of
271
+ https://bugzilla.mozilla.org/show_bug.cgi?id=771241 */
272
+ .blocklyDraggable:active {
273
+ /* backup for browsers (e.g. IE11) that don't support grabbing */
274
+ cursor: url("<<<PATH>>>/handclosed.cur"), auto;
275
+ cursor: grabbing;
276
+ cursor: -webkit-grabbing;
277
+ }
278
+
279
+ /* Change the cursor on the whole drag surface in case the mouse gets
280
+ ahead of block during a drag. This way the cursor is still a closed hand.
340
281
  */
341
- .blocklySvg text,
342
- .blocklyBlockDragSurface text {
343
- user-select: none;
344
- -ms-user-select: none;
345
- -webkit-user-select: none;
346
- cursor: inherit;
347
- }
348
-
349
- .blocklyHidden {
350
- display: none;
351
- }
352
-
353
- .blocklyFieldDropdown:not(.blocklyHidden) {
354
- display: block;
355
- }
356
-
357
- .blocklyIconGroup {
358
- cursor: default;
359
- }
360
-
361
- .blocklyIconGroup:not(:hover),
362
- .blocklyIconGroupReadonly {
363
- opacity: .6;
364
- }
365
-
366
- .blocklyIconShape {
367
- fill: #00f;
368
- stroke: #fff;
369
- stroke-width: 1px;
370
- }
371
-
372
- .blocklyIconSymbol {
373
- fill: #fff;
374
- }
375
-
376
- .blocklyMinimalBody {
377
- margin: 0;
378
- padding: 0;
379
- }
380
-
381
- .blocklyHtmlInput {
382
- border: none;
383
- border-radius: 4px;
384
- height: 100%;
385
- margin: 0;
386
- outline: none;
387
- padding: 0;
388
- width: 100%;
389
- text-align: center;
390
- display: block;
391
- box-sizing: border-box;
392
- }
393
-
394
- /* Edge and IE introduce a close icon when the input value is longer than a
395
- certain length. This affects our sizing calculations of the text input.
396
- Hiding the close icon to avoid that. */
397
- .blocklyHtmlInput::-ms-clear {
398
- display: none;
399
- }
400
-
401
- .blocklyMainBackground {
402
- stroke-width: 1;
403
- stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */
404
- }
405
-
406
- .blocklyMutatorBackground {
407
- fill: #fff;
408
- stroke: #ddd;
409
- stroke-width: 1;
410
- }
411
-
412
- .blocklyFlyoutBackground {
413
- fill: #ddd;
414
- fill-opacity: .8;
415
- }
416
-
417
- .blocklyMainWorkspaceScrollbar {
418
- z-index: 20;
419
- }
420
-
421
- .blocklyFlyoutScrollbar {
422
- z-index: 30;
423
- }
424
-
425
- .blocklyScrollbarHorizontal,
426
- .blocklyScrollbarVertical {
427
- position: absolute;
428
- outline: none;
429
- }
430
-
431
- .blocklyScrollbarBackground {
432
- opacity: 0;
433
- }
434
-
435
- .blocklyScrollbarHandle {
436
- fill: #ccc;
437
- }
438
-
439
- .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,
440
- .blocklyScrollbarHandle:hover {
441
- fill: #bbb;
442
- }
443
-
444
- /* Darken flyout scrollbars due to being on a grey background. */
445
- /* By contrast, workspace scrollbars are on a white background. */
446
- .blocklyFlyout .blocklyScrollbarHandle {
447
- fill: #bbb;
448
- }
449
-
450
- .blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,
451
- .blocklyFlyout .blocklyScrollbarHandle:hover {
452
- fill: #aaa;
453
- }
454
-
455
- .blocklyInvalidInput {
456
- background: #faa;
457
- }
458
-
459
- .blocklyVerticalMarker {
460
- stroke-width: 3px;
461
- fill: rgba(255,255,255,.5);
462
- pointer-events: none;
463
- }
464
-
465
- .blocklyComputeCanvas {
466
- position: absolute;
467
- width: 0;
468
- height: 0;
469
- }
470
-
471
- .blocklyNoPointerEvents {
472
- pointer-events: none;
473
- }
474
-
475
- .blocklyContextMenu {
476
- border-radius: 4px;
477
- max-height: 100%;
478
- }
479
-
480
- .blocklyDropdownMenu {
481
- border-radius: 2px;
482
- padding: 0 !important;
483
- }
484
-
485
- .blocklyDropdownMenu .blocklyMenuItem {
486
- /* 28px on the left for icon or checkbox. */
487
- padding-left: 28px;
488
- }
489
-
490
- /* BiDi override for the resting state. */
491
- .blocklyDropdownMenu .blocklyMenuItemRtl {
492
- /* Flip left/right padding for BiDi. */
493
- padding-left: 5px;
494
- padding-right: 28px;
495
- }
496
-
497
- .blocklyWidgetDiv .blocklyMenu {
498
- background: #fff;
499
- border: 1px solid transparent;
500
- box-shadow: 0 0 3px 1px rgba(0,0,0,.3);
501
- font: normal 13px Arial, sans-serif;
502
- margin: 0;
503
- outline: none;
504
- padding: 4px 0;
505
- position: absolute;
506
- overflow-y: auto;
507
- overflow-x: hidden;
508
- max-height: 100%;
509
- z-index: 20000; /* Arbitrary, but some apps depend on it... */
510
- }
511
-
512
- .blocklyWidgetDiv .blocklyMenu.blocklyFocused {
513
- box-shadow: 0 0 6px 1px rgba(0,0,0,.3);
514
- }
515
-
516
- .blocklyDropDownDiv .blocklyMenu {
517
- background: inherit; /* Compatibility with gapi, reset from goog-menu */
518
- border: inherit; /* Compatibility with gapi, reset from goog-menu */
519
- font: normal 13px "Helvetica Neue", Helvetica, sans-serif;
520
- outline: none;
521
- position: relative; /* Compatibility with gapi, reset from goog-menu */
522
- z-index: 20000; /* Arbitrary, but some apps depend on it... */
523
- }
524
-
525
- /* State: resting. */
526
- .blocklyMenuItem {
527
- border: none;
528
- color: #000;
529
- cursor: pointer;
530
- list-style: none;
531
- margin: 0;
532
- /* 7em on the right for shortcut. */
533
- min-width: 7em;
534
- padding: 6px 15px;
535
- white-space: nowrap;
536
- }
537
-
538
- /* State: disabled. */
539
- .blocklyMenuItemDisabled {
540
- color: #ccc;
541
- cursor: inherit;
542
- }
543
-
544
- /* State: hover. */
545
- .blocklyMenuItemHighlight {
546
- background-color: rgba(0,0,0,.1);
547
- }
548
-
549
- /* State: selected/checked. */
550
- .blocklyMenuItemCheckbox {
551
- height: 16px;
552
- position: absolute;
553
- width: 16px;
554
- }
555
-
556
- .blocklyMenuItemSelected .blocklyMenuItemCheckbox {
557
- background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px;
558
- float: left;
559
- margin-left: -24px;
560
- position: static; /* Scroll with the menu. */
561
- }
562
-
563
- .blocklyMenuItemRtl .blocklyMenuItemCheckbox {
564
- float: right;
565
- margin-right: -24px;
566
- }
282
+ .blocklyBlockDragSurface .blocklyDraggable {
283
+ /* backup for browsers (e.g. IE11) that don't support grabbing */
284
+ cursor: url("<<<PATH>>>/handclosed.cur"), auto;
285
+ cursor: grabbing;
286
+ cursor: -webkit-grabbing;
287
+ }
288
+
289
+ .blocklyDragging.blocklyDraggingDelete {
290
+ cursor: url("<<<PATH>>>/handdelete.cur"), auto;
291
+ }
292
+
293
+ .blocklyDragging>.blocklyPath,
294
+ .blocklyDragging>.blocklyPathLight {
295
+ fill-opacity: .8;
296
+ stroke-opacity: .8;
297
+ }
298
+
299
+ .blocklyDragging>.blocklyPathDark {
300
+ display: none;
301
+ }
302
+
303
+ .blocklyDisabled>.blocklyPath {
304
+ fill-opacity: .5;
305
+ stroke-opacity: .5;
306
+ }
307
+
308
+ .blocklyDisabled>.blocklyPathLight,
309
+ .blocklyDisabled>.blocklyPathDark {
310
+ display: none;
311
+ }
312
+
313
+ .blocklyInsertionMarker>.blocklyPath,
314
+ .blocklyInsertionMarker>.blocklyPathLight,
315
+ .blocklyInsertionMarker>.blocklyPathDark {
316
+ fill-opacity: .2;
317
+ stroke: none;
318
+ }
319
+
320
+ .blocklyMultilineText {
321
+ font-family: monospace;
322
+ }
323
+
324
+ .blocklyNonEditableText>text {
325
+ pointer-events: none;
326
+ }
327
+
328
+ .blocklyFlyout {
329
+ position: absolute;
330
+ z-index: 20;
331
+ }
332
+
333
+ .blocklyText text {
334
+ cursor: default;
335
+ }
336
+
337
+ /*
338
+ Don't allow users to select text. It gets annoying when trying to
339
+ drag a block and selected text moves instead.
340
+ */
341
+ .blocklySvg text,
342
+ .blocklyBlockDragSurface text {
343
+ user-select: none;
344
+ -ms-user-select: none;
345
+ -webkit-user-select: none;
346
+ cursor: inherit;
347
+ }
348
+
349
+ .blocklyHidden {
350
+ display: none;
351
+ }
352
+
353
+ .blocklyFieldDropdown:not(.blocklyHidden) {
354
+ display: block;
355
+ }
356
+
357
+ .blocklyIconGroup {
358
+ cursor: default;
359
+ }
360
+
361
+ .blocklyIconGroup:not(:hover),
362
+ .blocklyIconGroupReadonly {
363
+ opacity: .6;
364
+ }
365
+
366
+ .blocklyIconShape {
367
+ fill: #00f;
368
+ stroke: #fff;
369
+ stroke-width: 1px;
370
+ }
371
+
372
+ .blocklyIconSymbol {
373
+ fill: #fff;
374
+ }
375
+
376
+ .blocklyMinimalBody {
377
+ margin: 0;
378
+ padding: 0;
379
+ }
380
+
381
+ .blocklyHtmlInput {
382
+ border: none;
383
+ border-radius: 4px;
384
+ height: 100%;
385
+ margin: 0;
386
+ outline: none;
387
+ padding: 0;
388
+ width: 100%;
389
+ text-align: center;
390
+ display: block;
391
+ box-sizing: border-box;
392
+ }
393
+
394
+ /* Edge and IE introduce a close icon when the input value is longer than a
395
+ certain length. This affects our sizing calculations of the text input.
396
+ Hiding the close icon to avoid that. */
397
+ .blocklyHtmlInput::-ms-clear {
398
+ display: none;
399
+ }
400
+
401
+ .blocklyMainBackground {
402
+ stroke-width: 1;
403
+ stroke: #c6c6c6; /* Equates to #ddd due to border being off-pixel. */
404
+ }
405
+
406
+ .blocklyMutatorBackground {
407
+ fill: #fff;
408
+ stroke: #ddd;
409
+ stroke-width: 1;
410
+ }
411
+
412
+ .blocklyFlyoutBackground {
413
+ fill: #ddd;
414
+ fill-opacity: .8;
415
+ }
416
+
417
+ .blocklyMainWorkspaceScrollbar {
418
+ z-index: 20;
419
+ }
420
+
421
+ .blocklyFlyoutScrollbar {
422
+ z-index: 30;
423
+ }
424
+
425
+ .blocklyScrollbarHorizontal,
426
+ .blocklyScrollbarVertical {
427
+ position: absolute;
428
+ outline: none;
429
+ }
430
+
431
+ .blocklyScrollbarBackground {
432
+ opacity: 0;
433
+ }
434
+
435
+ .blocklyScrollbarHandle {
436
+ fill: #ccc;
437
+ }
438
+
439
+ .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,
440
+ .blocklyScrollbarHandle:hover {
441
+ fill: #bbb;
442
+ }
443
+
444
+ /* Darken flyout scrollbars due to being on a grey background. */
445
+ /* By contrast, workspace scrollbars are on a white background. */
446
+ .blocklyFlyout .blocklyScrollbarHandle {
447
+ fill: #bbb;
448
+ }
449
+
450
+ .blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,
451
+ .blocklyFlyout .blocklyScrollbarHandle:hover {
452
+ fill: #aaa;
453
+ }
454
+
455
+ .blocklyInvalidInput {
456
+ background: #faa;
457
+ }
458
+
459
+ .blocklyVerticalMarker {
460
+ stroke-width: 3px;
461
+ fill: rgba(255,255,255,.5);
462
+ pointer-events: none;
463
+ }
464
+
465
+ .blocklyComputeCanvas {
466
+ position: absolute;
467
+ width: 0;
468
+ height: 0;
469
+ }
470
+
471
+ .blocklyNoPointerEvents {
472
+ pointer-events: none;
473
+ }
474
+
475
+ .blocklyContextMenu {
476
+ border-radius: 4px;
477
+ max-height: 100%;
478
+ }
479
+
480
+ .blocklyDropdownMenu {
481
+ border-radius: 2px;
482
+ padding: 0 !important;
483
+ }
484
+
485
+ .blocklyDropdownMenu .blocklyMenuItem {
486
+ /* 28px on the left for icon or checkbox. */
487
+ padding-left: 28px;
488
+ }
489
+
490
+ /* BiDi override for the resting state. */
491
+ .blocklyDropdownMenu .blocklyMenuItemRtl {
492
+ /* Flip left/right padding for BiDi. */
493
+ padding-left: 5px;
494
+ padding-right: 28px;
495
+ }
496
+
497
+ .blocklyWidgetDiv .blocklyMenu {
498
+ background: #fff;
499
+ border: 1px solid transparent;
500
+ box-shadow: 0 0 3px 1px rgba(0,0,0,.3);
501
+ font: normal 13px Arial, sans-serif;
502
+ margin: 0;
503
+ outline: none;
504
+ padding: 4px 0;
505
+ position: absolute;
506
+ overflow-y: auto;
507
+ overflow-x: hidden;
508
+ max-height: 100%;
509
+ z-index: 20000; /* Arbitrary, but some apps depend on it... */
510
+ }
511
+
512
+ .blocklyWidgetDiv .blocklyMenu.blocklyFocused {
513
+ box-shadow: 0 0 6px 1px rgba(0,0,0,.3);
514
+ }
515
+
516
+ .blocklyDropDownDiv .blocklyMenu {
517
+ background: inherit; /* Compatibility with gapi, reset from goog-menu */
518
+ border: inherit; /* Compatibility with gapi, reset from goog-menu */
519
+ font: normal 13px "Helvetica Neue", Helvetica, sans-serif;
520
+ outline: none;
521
+ position: relative; /* Compatibility with gapi, reset from goog-menu */
522
+ z-index: 20000; /* Arbitrary, but some apps depend on it... */
523
+ }
524
+
525
+ /* State: resting. */
526
+ .blocklyMenuItem {
527
+ border: none;
528
+ color: #000;
529
+ cursor: pointer;
530
+ list-style: none;
531
+ margin: 0;
532
+ /* 7em on the right for shortcut. */
533
+ min-width: 7em;
534
+ padding: 6px 15px;
535
+ white-space: nowrap;
536
+ }
537
+
538
+ /* State: disabled. */
539
+ .blocklyMenuItemDisabled {
540
+ color: #ccc;
541
+ cursor: inherit;
542
+ }
543
+
544
+ /* State: hover. */
545
+ .blocklyMenuItemHighlight {
546
+ background-color: rgba(0,0,0,.1);
547
+ }
548
+
549
+ /* State: selected/checked. */
550
+ .blocklyMenuItemCheckbox {
551
+ height: 16px;
552
+ position: absolute;
553
+ width: 16px;
554
+ }
555
+
556
+ .blocklyMenuItemSelected .blocklyMenuItemCheckbox {
557
+ background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px;
558
+ float: left;
559
+ margin-left: -24px;
560
+ position: static; /* Scroll with the menu. */
561
+ }
562
+
563
+ .blocklyMenuItemRtl .blocklyMenuItemCheckbox {
564
+ float: right;
565
+ margin-right: -24px;
566
+ }
567
567
  `);
568
568
  exports.content = content;