blockly 8.20220331.0-beta.0 → 9.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2000 -2269
- package/blockly_compressed.js +1495 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks.d.ts +10 -8
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +2 -0
- package/closure/goog/base_minimal.d.ts +19 -0
- package/closure/goog/goog.d.ts +26 -0
- package/core/any_aliases.d.ts +2 -0
- package/core/block.d.ts +871 -0
- package/core/block_animations.d.ts +38 -0
- package/core/block_drag_surface.d.ts +124 -0
- package/core/block_dragger.d.ts +158 -0
- package/core/block_svg.d.ts +656 -0
- package/core/blockly.d.ts +583 -0
- package/core/blockly_options.d.ts +71 -0
- package/core/blocks.d.ts +19 -0
- package/core/browser_events.d.ts +94 -0
- package/core/bubble.d.ts +309 -0
- package/core/bubble_dragger.d.ts +80 -0
- package/core/bump_objects.d.ts +38 -0
- package/core/clipboard.d.ts +46 -0
- package/core/comment.d.ts +123 -0
- package/core/common.d.ts +155 -0
- package/core/component_manager.d.ts +101 -0
- package/core/config.d.ts +24 -0
- package/core/connection.d.ts +262 -0
- package/core/connection_checker.d.ts +87 -0
- package/core/connection_db.d.ts +102 -0
- package/core/connection_type.d.ts +17 -0
- package/core/constants.d.ts +18 -0
- package/core/contextmenu.d.ts +90 -0
- package/core/contextmenu_items.d.ts +92 -0
- package/core/contextmenu_registry.d.ts +110 -0
- package/core/css.d.ts +27 -0
- package/core/delete_area.d.ts +51 -0
- package/core/dialog.d.ts +68 -0
- package/core/drag_target.d.ts +71 -0
- package/core/dropdowndiv.d.ts +187 -0
- package/core/events/events.d.ts +103 -0
- package/core/events/events_abstract.d.ts +58 -0
- package/core/events/events_block_base.d.ts +35 -0
- package/core/events/events_block_change.d.ts +62 -0
- package/core/events/events_block_create.d.ts +40 -0
- package/core/events/events_block_delete.d.ts +41 -0
- package/core/events/events_block_drag.d.ts +40 -0
- package/core/events/events_block_move.d.ts +58 -0
- package/core/events/events_bubble_open.d.ts +39 -0
- package/core/events/events_click.d.ts +40 -0
- package/core/events/events_comment_base.d.ts +44 -0
- package/core/events/events_comment_change.d.ts +49 -0
- package/core/events/events_comment_create.d.ts +40 -0
- package/core/events/events_comment_delete.d.ts +40 -0
- package/core/events/events_comment_move.d.ts +62 -0
- package/core/events/events_marker_move.d.ts +44 -0
- package/core/events/events_selected.d.ts +38 -0
- package/core/events/events_theme_change.d.ts +34 -0
- package/core/events/events_toolbox_item_select.d.ts +38 -0
- package/core/events/events_trashcan_open.d.ts +35 -0
- package/core/events/events_ui.d.ts +41 -0
- package/core/events/events_ui_base.d.ts +28 -0
- package/core/events/events_var_base.d.ts +35 -0
- package/core/events/events_var_create.d.ts +40 -0
- package/core/events/events_var_delete.d.ts +40 -0
- package/core/events/events_var_rename.d.ts +41 -0
- package/core/events/events_viewport.d.ts +43 -0
- package/core/events/utils.d.ts +315 -0
- package/core/events/workspace_events.d.ts +40 -0
- package/core/extensions.d.ts +117 -0
- package/core/field.d.ts +593 -0
- package/core/field_angle.d.ts +187 -0
- package/core/field_checkbox.d.ts +137 -0
- package/core/field_colour.d.ts +216 -0
- package/core/field_dropdown.d.ts +242 -0
- package/core/field_image.d.ts +145 -0
- package/core/field_label.d.ts +77 -0
- package/core/field_label_serializable.d.ts +45 -0
- package/core/field_multilineinput.d.ts +161 -0
- package/core/field_number.d.ts +172 -0
- package/core/field_registry.d.ts +51 -0
- package/core/field_textinput.d.ts +239 -0
- package/core/field_variable.d.ts +240 -0
- package/core/flyout_base.d.ts +505 -0
- package/core/flyout_button.d.ts +88 -0
- package/core/flyout_horizontal.d.ts +90 -0
- package/core/flyout_metrics_manager.d.ts +43 -0
- package/core/flyout_vertical.d.ts +91 -0
- package/core/generator.d.ts +224 -0
- package/core/gesture.d.ts +392 -0
- package/core/grid.d.ts +87 -0
- package/core/icon.d.ts +87 -0
- package/core/inject.d.ts +17 -0
- package/core/input.d.ts +143 -0
- package/core/input_types.d.ts +16 -0
- package/core/insertion_marker_manager.d.ts +230 -0
- package/core/interfaces/i_ast_node_location.d.ts +13 -0
- package/core/interfaces/i_ast_node_location_svg.d.ts +26 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +21 -0
- package/core/interfaces/i_autohideable.d.ts +21 -0
- package/core/interfaces/i_block_dragger.d.ts +49 -0
- package/core/interfaces/i_bounded_element.d.ts +28 -0
- package/core/interfaces/i_bubble.d.ts +68 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +30 -0
- package/core/interfaces/i_component.d.ts +19 -0
- package/core/interfaces/i_connection_checker.d.ts +77 -0
- package/core/interfaces/i_contextmenu.d.ts +15 -0
- package/core/interfaces/i_copyable.d.ts +26 -0
- package/core/interfaces/i_deletable.d.ts +19 -0
- package/core/interfaces/i_delete_area.d.ts +28 -0
- package/core/interfaces/i_drag_target.d.ts +61 -0
- package/core/interfaces/i_draggable.d.ts +14 -0
- package/core/interfaces/i_flyout.d.ts +150 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +21 -0
- package/core/interfaces/i_metrics_manager.d.ts +129 -0
- package/core/interfaces/i_movable.d.ts +19 -0
- package/core/interfaces/i_positionable.d.ts +31 -0
- package/core/interfaces/i_registrable.d.ts +13 -0
- package/core/interfaces/i_registrable_field.d.ts +19 -0
- package/core/interfaces/i_selectable.d.ts +20 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +49 -0
- package/core/interfaces/i_serializer.d.ts +47 -0
- package/core/interfaces/i_styleable.d.ts +25 -0
- package/core/interfaces/i_toolbox.d.ts +96 -0
- package/core/interfaces/i_toolbox_item.d.ts +72 -0
- package/core/internal_constants.d.ts +46 -0
- package/core/keyboard_nav/ast_node.d.ts +266 -0
- package/core/keyboard_nav/basic_cursor.d.ts +99 -0
- package/core/keyboard_nav/cursor.d.ts +47 -0
- package/core/keyboard_nav/marker.d.ts +65 -0
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +22 -0
- package/core/main.d.ts +12 -0
- package/core/marker_manager.d.ts +96 -0
- package/core/menu.d.ts +167 -0
- package/core/menuitem.d.ts +133 -0
- package/core/metrics_manager.d.ts +216 -0
- package/core/msg.d.ts +10 -0
- package/core/mutator.d.ts +140 -0
- package/core/names.d.ts +136 -0
- package/core/options.d.ts +143 -0
- package/core/positionable_helpers.d.ts +96 -0
- package/core/procedures.d.ts +125 -0
- package/core/registry.d.ts +148 -0
- package/core/rendered_connection.d.ts +212 -0
- package/core/renderers/common/block_rendering.d.ts +121 -0
- package/core/renderers/common/constants.d.ts +490 -0
- package/core/renderers/common/debug.d.ts +32 -0
- package/core/renderers/common/debugger.d.ts +131 -0
- package/core/renderers/common/drawer.d.ts +144 -0
- package/core/renderers/common/i_path_object.d.ts +132 -0
- package/core/renderers/common/info.d.ts +211 -0
- package/core/renderers/common/marker_svg.d.ts +249 -0
- package/core/renderers/common/path_object.d.ts +166 -0
- package/core/renderers/common/renderer.d.ts +178 -0
- package/core/renderers/geras/constants.d.ts +25 -0
- package/core/renderers/geras/drawer.d.ts +45 -0
- package/core/renderers/geras/geras.d.ts +12 -0
- package/core/renderers/geras/highlight_constants.d.ts +111 -0
- package/core/renderers/geras/highlighter.d.ts +109 -0
- package/core/renderers/geras/info.d.ts +48 -0
- package/core/renderers/geras/measurables/inline_input.d.ts +25 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +25 -0
- package/core/renderers/geras/path_object.d.ts +51 -0
- package/core/renderers/geras/renderer.d.ts +79 -0
- package/core/renderers/measurables/base.d.ts +29 -0
- package/core/renderers/measurables/bottom_row.d.ts +67 -0
- package/core/renderers/measurables/connection.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.d.ts +28 -0
- package/core/renderers/measurables/field.d.ts +31 -0
- package/core/renderers/measurables/hat.d.ts +22 -0
- package/core/renderers/measurables/icon.d.ts +28 -0
- package/core/renderers/measurables/in_row_spacer.d.ts +22 -0
- package/core/renderers/measurables/inline_input.d.ts +25 -0
- package/core/renderers/measurables/input_connection.d.ts +31 -0
- package/core/renderers/measurables/input_row.d.ts +33 -0
- package/core/renderers/measurables/jagged_edge.d.ts +21 -0
- package/core/renderers/measurables/next_connection.d.ts +24 -0
- package/core/renderers/measurables/output_connection.d.ts +27 -0
- package/core/renderers/measurables/previous_connection.d.ts +24 -0
- package/core/renderers/measurables/round_corner.d.ts +22 -0
- package/core/renderers/measurables/row.d.ts +163 -0
- package/core/renderers/measurables/spacer_row.d.ts +30 -0
- package/core/renderers/measurables/square_corner.d.ts +22 -0
- package/core/renderers/measurables/statement_input.d.ts +23 -0
- package/core/renderers/measurables/top_row.d.ts +60 -0
- package/core/renderers/measurables/types.d.ts +264 -0
- package/core/renderers/minimalist/constants.d.ts +16 -0
- package/core/renderers/minimalist/drawer.d.ts +23 -0
- package/core/renderers/minimalist/info.d.ts +33 -0
- package/core/renderers/minimalist/minimalist.d.ts +7 -0
- package/core/renderers/minimalist/renderer.d.ts +46 -0
- package/core/renderers/thrasos/info.d.ts +43 -0
- package/core/renderers/thrasos/renderer.d.ts +28 -0
- package/core/renderers/thrasos/thrasos.d.ts +5 -0
- package/core/renderers/zelos/constants.d.ts +194 -0
- package/core/renderers/zelos/drawer.d.ts +50 -0
- package/core/renderers/zelos/info.d.ts +93 -0
- package/core/renderers/zelos/marker_svg.d.ts +51 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +25 -0
- package/core/renderers/zelos/measurables/row_elements.d.ts +23 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +31 -0
- package/core/renderers/zelos/path_object.d.ts +84 -0
- package/core/renderers/zelos/renderer.d.ts +82 -0
- package/core/renderers/zelos/zelos.d.ts +13 -0
- package/core/scrollbar.d.ts +309 -0
- package/core/scrollbar_pair.d.ts +119 -0
- package/core/serialization/blocks.d.ts +104 -0
- package/core/serialization/exceptions.d.ts +78 -0
- package/core/serialization/priorities.d.ts +18 -0
- package/core/serialization/registry.d.ts +23 -0
- package/core/serialization/variables.d.ts +16 -0
- package/core/serialization/workspaces.d.ts +31 -0
- package/core/shortcut_items.d.ts +71 -0
- package/core/shortcut_registry.d.ts +167 -0
- package/core/sprites.d.ts +17 -0
- package/core/theme/classic.d.ts +14 -0
- package/core/theme/themes.d.ts +9 -0
- package/core/theme/zelos.d.ts +13 -0
- package/core/theme.d.ts +153 -0
- package/core/theme_manager.d.ts +90 -0
- package/core/toolbox/category.d.ts +266 -0
- package/core/toolbox/collapsible_category.d.ts +98 -0
- package/core/toolbox/separator.d.ts +42 -0
- package/core/toolbox/toolbox.d.ts +400 -0
- package/core/toolbox/toolbox_item.d.ts +95 -0
- package/core/tooltip.d.ts +147 -0
- package/core/touch.d.ts +133 -0
- package/core/touch_gesture.d.ts +129 -0
- package/core/trashcan.d.ts +216 -0
- package/core/utils/aria.d.ts +71 -0
- package/core/utils/array.d.ts +16 -0
- package/core/utils/colour.d.ts +114 -0
- package/core/utils/coordinate.d.ts +82 -0
- package/core/utils/deprecation.d.ts +19 -0
- package/core/utils/dom.d.ts +185 -0
- package/core/utils/idgenerator.d.ts +35 -0
- package/core/utils/keycodes.d.ts +138 -0
- package/core/utils/math.d.ts +34 -0
- package/core/utils/metrics.d.ts +65 -0
- package/core/utils/object.d.ts +40 -0
- package/core/utils/parsing.d.ts +55 -0
- package/core/utils/rect.d.ts +40 -0
- package/core/utils/sentinel.d.ts +13 -0
- package/core/utils/size.d.ts +29 -0
- package/core/utils/string.d.ts +62 -0
- package/core/utils/style.d.ts +108 -0
- package/core/utils/svg.d.ts +71 -0
- package/core/utils/svg_math.d.ts +78 -0
- package/core/utils/svg_paths.d.ts +111 -0
- package/core/utils/toolbox.d.ts +214 -0
- package/core/utils/useragent.d.ts +22 -0
- package/core/utils/xml.d.ts +60 -0
- package/core/utils.d.ts +239 -0
- package/core/variable_map.d.ts +158 -0
- package/core/variable_model.d.ts +43 -0
- package/core/variables.d.ts +196 -0
- package/core/variables_dynamic.d.ts +58 -0
- package/core/warning.d.ts +55 -0
- package/core/widgetdiv.d.ts +78 -0
- package/core/workspace.d.ts +436 -0
- package/core/workspace_audio.d.ts +53 -0
- package/core/workspace_comment.d.ts +192 -0
- package/core/workspace_comment_svg.d.ts +372 -0
- package/core/workspace_drag_surface_svg.d.ts +74 -0
- package/core/workspace_dragger.d.ts +54 -0
- package/core/workspace_svg.d.ts +1032 -0
- package/core/xml.d.ts +132 -0
- package/core/zoom_controls.d.ts +140 -0
- package/core.d.ts +1 -9
- package/core.js +1 -2
- package/dart.d.ts +1 -9
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/index.d.ts +4 -16
- package/javascript.d.ts +1 -9
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +1 -9
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +10 -6
- package/msg/ace.js +10 -6
- package/msg/af.js +10 -6
- package/msg/am.js +10 -6
- package/msg/ar.js +10 -6
- package/msg/ast.js +10 -6
- package/msg/az.js +12 -8
- package/msg/ba.js +10 -6
- package/msg/bcc.js +10 -6
- package/msg/be-tarask.js +10 -6
- package/msg/be.js +14 -10
- package/msg/bg.js +10 -6
- package/msg/bn.js +10 -6
- package/msg/br.js +10 -6
- package/msg/bs.js +10 -6
- package/msg/ca.js +10 -6
- package/msg/cdo.js +10 -6
- package/msg/cs.js +25 -21
- package/msg/da.js +10 -6
- package/msg/de.js +11 -7
- package/msg/diq.js +11 -7
- package/msg/dty.js +10 -6
- package/msg/ee.js +10 -6
- package/msg/el.js +10 -6
- package/msg/en-gb.js +10 -6
- package/msg/en.js +10 -6
- package/msg/eo.js +11 -7
- package/msg/es.js +11 -7
- package/msg/et.js +10 -6
- package/msg/eu.js +10 -6
- package/msg/fa.js +11 -7
- package/msg/fi.js +10 -6
- package/msg/fo.js +10 -6
- package/msg/fr.js +14 -10
- package/msg/frr.js +10 -6
- package/msg/gl.js +10 -6
- package/msg/gn.js +10 -6
- package/msg/gor.js +10 -6
- package/msg/ha.js +10 -6
- package/msg/hak.js +10 -6
- package/msg/he.js +11 -7
- package/msg/hi.js +10 -6
- package/msg/hr.js +12 -8
- package/msg/hrx.js +10 -6
- package/msg/hu.js +10 -6
- package/msg/hy.js +12 -8
- package/msg/ia.js +10 -6
- package/msg/id.js +22 -18
- package/msg/ig.js +10 -6
- package/msg/inh.js +24 -20
- package/msg/is.js +10 -6
- package/msg/it.js +10 -6
- package/msg/ja.js +17 -13
- package/msg/ka.js +10 -6
- package/msg/kab.js +10 -6
- package/msg/kbd-cyrl.js +10 -6
- package/msg/km.js +10 -6
- package/msg/kn.js +10 -6
- package/msg/ko.js +10 -6
- package/msg/ksh.js +10 -6
- package/msg/ku-latn.js +10 -6
- package/msg/ky.js +10 -6
- package/msg/la.js +10 -6
- package/msg/lb.js +10 -6
- package/msg/lki.js +10 -6
- package/msg/lo.js +10 -6
- package/msg/lrc.js +10 -6
- package/msg/lt.js +10 -6
- package/msg/lv.js +39 -35
- package/msg/mg.js +10 -6
- package/msg/mk.js +10 -6
- package/msg/ml.js +10 -6
- package/msg/mnw.js +10 -6
- package/msg/ms.js +10 -6
- package/msg/my.js +10 -6
- package/msg/mzn.js +10 -6
- package/msg/nb.js +10 -6
- package/msg/ne.js +10 -6
- package/msg/nl.js +10 -6
- package/msg/oc.js +10 -6
- package/msg/olo.js +10 -6
- package/msg/pa.js +13 -9
- package/msg/pl.js +10 -6
- package/msg/pms.js +10 -6
- package/msg/ps.js +10 -6
- package/msg/pt-br.js +10 -6
- package/msg/pt.js +10 -6
- package/msg/ro.js +10 -6
- package/msg/ru.js +10 -6
- package/msg/sc.js +10 -6
- package/msg/sco.js +10 -6
- package/msg/sd.js +10 -6
- package/msg/shn.js +10 -6
- package/msg/si.js +10 -6
- package/msg/sk.js +10 -6
- package/msg/skr-arab.js +10 -6
- package/msg/sl.js +10 -6
- package/msg/smn.js +440 -0
- package/msg/sq.js +10 -6
- package/msg/sr-latn.js +10 -6
- package/msg/sr.js +10 -6
- package/msg/sv.js +10 -6
- package/msg/sw.js +10 -6
- package/msg/ta.js +10 -6
- package/msg/tcy.js +10 -6
- package/msg/te.js +11 -7
- package/msg/th.js +10 -6
- package/msg/ti.js +10 -6
- package/msg/tl.js +10 -6
- package/msg/tlh.js +10 -6
- package/msg/tr.js +10 -6
- package/msg/ug-arab.js +10 -6
- package/msg/uk.js +10 -6
- package/msg/ur.js +10 -6
- package/msg/uz.js +10 -6
- package/msg/vi.js +10 -6
- package/msg/xmf.js +10 -6
- package/msg/yo.js +10 -6
- package/msg/yue.js +11 -7
- package/msg/zgh.js +10 -6
- package/msg/zh-hans.js +13 -9
- package/msg/zh-hant.js +13 -9
- package/package.json +8 -5
- package/php.d.ts +1 -9
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +1 -9
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -25607
- package/blocks/blocks.js +0 -47
- package/blocks/colour.js +0 -119
- package/blocks/lists.js +0 -924
- package/blocks/logic.js +0 -657
- package/blocks/loops.js +0 -373
- package/blocks/math.js +0 -592
- package/blocks/procedures.js +0 -1194
- package/blocks/text.js +0 -992
- package/blocks/variables.js +0 -174
- package/blocks/variables_dynamic.js +0 -190
- package/core/block.js +0 -2212
- package/core/block_animations.js +0 -206
- package/core/block_drag_surface.js +0 -269
- package/core/block_dragger.js +0 -484
- package/core/block_svg.js +0 -1894
- package/core/blockly.js +0 -890
- package/core/blockly_options.js +0 -28
- package/core/blocks.js +0 -33
- package/core/browser_events.js +0 -284
- package/core/bubble.js +0 -985
- package/core/bubble_dragger.js +0 -298
- package/core/bump_objects.js +0 -180
- package/core/clipboard.js +0 -80
- package/core/comment.js +0 -448
- package/core/common.js +0 -265
- package/core/component_manager.js +0 -263
- package/core/config.js +0 -87
- package/core/connection.js +0 -742
- package/core/connection_checker.js +0 -312
- package/core/connection_db.js +0 -314
- package/core/connection_type.js +0 -36
- package/core/constants.js +0 -33
- package/core/contextmenu.js +0 -398
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/css.js +0 -568
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/dropdowndiv.js +0 -754
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_change.js +0 -179
- package/core/events/events_block_create.js +0 -127
- package/core/events/events_block_delete.js +0 -139
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_block_move.js +0 -202
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_click.js +0 -87
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_comment_change.js +0 -105
- package/core/events/events_comment_create.js +0 -84
- package/core/events/events_comment_delete.js +0 -81
- package/core/events/events_comment_move.js +0 -157
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_theme_change.js +0 -72
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_ui.js +0 -88
- package/core/events/events_ui_base.js +0 -63
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_var_create.js +0 -89
- package/core/events/events_var_delete.js +0 -89
- package/core/events/events_var_rename.js +0 -90
- package/core/events/events_viewport.js +0 -107
- package/core/events/utils.js +0 -600
- package/core/events/workspace_events.js +0 -93
- package/core/extensions.js +0 -523
- package/core/field.js +0 -1282
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_dropdown.js +0 -795
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_multilineinput.js +0 -463
- package/core/field_number.js +0 -340
- package/core/field_registry.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/field_variable.js +0 -558
- package/core/flyout_base.js +0 -1254
- package/core/flyout_button.js +0 -356
- package/core/flyout_horizontal.js +0 -391
- package/core/flyout_metrics_manager.js +0 -106
- package/core/flyout_vertical.js +0 -395
- package/core/generator.js +0 -564
- package/core/gesture.js +0 -1026
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/inject.js +0 -389
- package/core/input.js +0 -332
- package/core/input_types.js +0 -36
- package/core/insertion_marker_manager.js +0 -790
- package/core/interfaces/i_ast_node_location.js +0 -26
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_component.js +0 -37
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_deletable.js +0 -33
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_draggable.js +0 -31
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_movable.js +0 -33
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_registrable.js +0 -29
- package/core/interfaces/i_registrable_field.js +0 -39
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/internal_constants.js +0 -72
- package/core/keyboard_nav/ast_node.js +0 -741
- package/core/keyboard_nav/basic_cursor.js +0 -225
- package/core/keyboard_nav/cursor.js +0 -144
- package/core/keyboard_nav/marker.js +0 -134
- package/core/keyboard_nav/tab_navigate_cursor.js +0 -52
- package/core/marker_manager.js +0 -213
- package/core/menu.js +0 -482
- package/core/menuitem.js +0 -292
- package/core/metrics_manager.js +0 -495
- package/core/msg.js +0 -24
- package/core/mutator.js +0 -575
- package/core/names.js +0 -289
- package/core/options.js +0 -391
- package/core/positionable_helpers.js +0 -188
- package/core/procedures.js +0 -452
- package/core/registry.js +0 -384
- package/core/rendered_connection.js +0 -588
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/debug.js +0 -67
- package/core/renderers/common/debugger.js +0 -457
- package/core/renderers/common/drawer.js +0 -475
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/info.js +0 -775
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/drawer.js +0 -220
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/highlight_constants.js +0 -299
- package/core/renderers/geras/highlighter.js +0 -311
- package/core/renderers/geras/info.js +0 -488
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/path_object.js +0 -166
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/hat.js +0 -50
- package/core/renderers/measurables/icon.js +0 -58
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/inline_input.js +0 -80
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/input_row.js +0 -89
- package/core/renderers/measurables/jagged_edge.js +0 -46
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/statement_input.js +0 -59
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/constants.js +0 -37
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/info.js +0 -339
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/constants.js +0 -1005
- package/core/renderers/zelos/drawer.js +0 -250
- package/core/renderers/zelos/info.js +0 -624
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/inputs.js +0 -57
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/measurables/top_row.js +0 -71
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/scrollbar.js +0 -891
- package/core/scrollbar_pair.js +0 -329
- package/core/serialization/blocks.js +0 -699
- package/core/serialization/exceptions.js +0 -144
- package/core/serialization/priorities.js +0 -38
- package/core/serialization/registry.js +0 -45
- package/core/serialization/variables.js +0 -98
- package/core/serialization/workspaces.js +0 -103
- package/core/shortcut_items.js +0 -302
- package/core/shortcut_registry.js +0 -366
- package/core/sprites.js +0 -31
- package/core/theme/classic.js +0 -56
- package/core/theme/themes.js +0 -23
- package/core/theme/zelos.js +0 -94
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox.js +0 -1160
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/tooltip.js +0 -541
- package/core/touch.js +0 -285
- package/core/touch_gesture.js +0 -333
- package/core/trashcan.js +0 -757
- package/core/utils/aria.js +0 -174
- package/core/utils/array.js +0 -34
- package/core/utils/colour.js +0 -288
- package/core/utils/coordinate.js +0 -138
- package/core/utils/deprecation.js +0 -41
- package/core/utils/dom.js +0 -430
- package/core/utils/global.js +0 -41
- package/core/utils/idgenerator.js +0 -83
- package/core/utils/keycodes.js +0 -172
- package/core/utils/math.js +0 -63
- package/core/utils/metrics.js +0 -154
- package/core/utils/object.js +0 -91
- package/core/utils/parsing.js +0 -261
- package/core/utils/rect.js +0 -75
- package/core/utils/sentinel.js +0 -25
- package/core/utils/size.js +0 -65
- package/core/utils/string.js +0 -305
- package/core/utils/style.js +0 -296
- package/core/utils/svg.js +0 -186
- package/core/utils/svg_math.js +0 -268
- package/core/utils/svg_paths.js +0 -149
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils/xml.js +0 -107
- package/core/utils.js +0 -383
- package/core/variable_map.js +0 -410
- package/core/variable_model.js +0 -96
- package/core/variables.js +0 -578
- package/core/variables_dynamic.js +0 -129
- package/core/warning.js +0 -175
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_audio.js +0 -169
- package/core/workspace_comment.js +0 -400
- package/core/workspace_comment_svg.js +0 -1224
- package/core/workspace_drag_surface_svg.js +0 -194
- package/core/workspace_dragger.js +0 -115
- package/core/workspace_svg.js +0 -2735
- package/core/xml.js +0 -1043
- package/core/zoom_controls.js +0 -507
- package/generators/dart/all.js +0 -25
- package/generators/dart/colour.js +0 -105
- package/generators/dart/lists.js +0 -431
- package/generators/dart/logic.js +0 -123
- package/generators/dart/loops.js +0 -161
- package/generators/dart/math.js +0 -446
- package/generators/dart/procedures.js +0 -105
- package/generators/dart/text.js +0 -338
- package/generators/dart/variables.js +0 -32
- package/generators/dart/variables_dynamic.js +0 -21
- package/generators/dart.js +0 -304
- package/generators/javascript/all.js +0 -25
- package/generators/javascript/colour.js +0 -85
- package/generators/javascript/lists.js +0 -405
- package/generators/javascript/logic.js +0 -127
- package/generators/javascript/loops.js +0 -180
- package/generators/javascript/math.js +0 -401
- package/generators/javascript/procedures.js +0 -110
- package/generators/javascript/text.js +0 -371
- package/generators/javascript/variables.js +0 -32
- package/generators/javascript/variables_dynamic.js +0 -21
- package/generators/javascript.js +0 -324
- package/generators/lua/all.js +0 -25
- package/generators/lua/colour.js +0 -71
- package/generators/lua/lists.js +0 -348
- package/generators/lua/logic.js +0 -112
- package/generators/lua/loops.js +0 -168
- package/generators/lua/math.js +0 -406
- package/generators/lua/procedures.js +0 -106
- package/generators/lua/text.js +0 -327
- package/generators/lua/variables.js +0 -31
- package/generators/lua/variables_dynamic.js +0 -21
- package/generators/lua.js +0 -207
- package/generators/php/all.js +0 -25
- package/generators/php/colour.js +0 -81
- package/generators/php/lists.js +0 -482
- package/generators/php/logic.js +0 -119
- package/generators/php/loops.js +0 -161
- package/generators/php/math.js +0 -349
- package/generators/php/procedures.js +0 -125
- package/generators/php/text.js +0 -255
- package/generators/php/variables.js +0 -32
- package/generators/php/variables_dynamic.js +0 -21
- package/generators/php.js +0 -304
- package/generators/python/all.js +0 -25
- package/generators/python/colour.js +0 -67
- package/generators/python/lists.js +0 -346
- package/generators/python/logic.js +0 -120
- package/generators/python/loops.js +0 -209
- package/generators/python/math.js +0 -373
- package/generators/python/procedures.js +0 -129
- package/generators/python/text.js +0 -291
- package/generators/python/variables.js +0 -32
- package/generators/python/variables_dynamic.js +0 -21
- package/generators/python.js +0 -334
package/core/block_animations.js
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2018 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Methods animating a block on connection and disconnection.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Methods animating a block on connection and disconnection.
|
|
14
|
-
* @namespace Blockly.blockAnimations
|
|
15
|
-
*/
|
|
16
|
-
goog.module('Blockly.blockAnimations');
|
|
17
|
-
|
|
18
|
-
const dom = goog.require('Blockly.utils.dom');
|
|
19
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
20
|
-
const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
|
|
21
|
-
const {Svg} = goog.require('Blockly.utils.Svg');
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* PID of disconnect UI animation. There can only be one at a time.
|
|
26
|
-
* @type {number}
|
|
27
|
-
*/
|
|
28
|
-
let disconnectPid = 0;
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* SVG group of wobbling block. There can only be one at a time.
|
|
32
|
-
* @type {Element}
|
|
33
|
-
*/
|
|
34
|
-
let disconnectGroup = null;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Play some UI effects (sound, animation) when disposing of a block.
|
|
38
|
-
* @param {!BlockSvg} block The block being disposed of.
|
|
39
|
-
* @alias Blockly.blockAnimations.disposeUiEffect
|
|
40
|
-
* @package
|
|
41
|
-
*/
|
|
42
|
-
const disposeUiEffect = function(block) {
|
|
43
|
-
const workspace = block.workspace;
|
|
44
|
-
const svgGroup = block.getSvgRoot();
|
|
45
|
-
workspace.getAudioManager().play('delete');
|
|
46
|
-
|
|
47
|
-
const xy = workspace.getSvgXY(svgGroup);
|
|
48
|
-
// Deeply clone the current block.
|
|
49
|
-
const clone = svgGroup.cloneNode(true);
|
|
50
|
-
clone.translateX_ = xy.x;
|
|
51
|
-
clone.translateY_ = xy.y;
|
|
52
|
-
clone.setAttribute('transform', 'translate(' + xy.x + ',' + xy.y + ')');
|
|
53
|
-
workspace.getParentSvg().appendChild(clone);
|
|
54
|
-
clone.bBox_ = clone.getBBox();
|
|
55
|
-
// Start the animation.
|
|
56
|
-
disposeUiStep(clone, workspace.RTL, new Date, workspace.scale);
|
|
57
|
-
};
|
|
58
|
-
exports.disposeUiEffect = disposeUiEffect;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Animate a cloned block and eventually dispose of it.
|
|
62
|
-
* This is a class method, not an instance method since the original block has
|
|
63
|
-
* been destroyed and is no longer accessible.
|
|
64
|
-
* @param {!Element} clone SVG element to animate and dispose of.
|
|
65
|
-
* @param {boolean} rtl True if RTL, false if LTR.
|
|
66
|
-
* @param {!Date} start Date of animation's start.
|
|
67
|
-
* @param {number} workspaceScale Scale of workspace.
|
|
68
|
-
*/
|
|
69
|
-
const disposeUiStep = function(clone, rtl, start, workspaceScale) {
|
|
70
|
-
const ms = new Date - start;
|
|
71
|
-
const percent = ms / 150;
|
|
72
|
-
if (percent > 1) {
|
|
73
|
-
dom.removeNode(clone);
|
|
74
|
-
} else {
|
|
75
|
-
const x = clone.translateX_ +
|
|
76
|
-
(rtl ? -1 : 1) * clone.bBox_.width * workspaceScale / 2 * percent;
|
|
77
|
-
const y = clone.translateY_ + clone.bBox_.height * workspaceScale * percent;
|
|
78
|
-
const scale = (1 - percent) * workspaceScale;
|
|
79
|
-
clone.setAttribute(
|
|
80
|
-
'transform',
|
|
81
|
-
'translate(' + x + ',' + y + ')' +
|
|
82
|
-
' scale(' + scale + ')');
|
|
83
|
-
setTimeout(disposeUiStep, 10, clone, rtl, start, workspaceScale);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Play some UI effects (sound, ripple) after a connection has been established.
|
|
89
|
-
* @param {!BlockSvg} block The block being connected.
|
|
90
|
-
* @alias Blockly.blockAnimations.connectionUiEffect
|
|
91
|
-
* @package
|
|
92
|
-
*/
|
|
93
|
-
const connectionUiEffect = function(block) {
|
|
94
|
-
const workspace = block.workspace;
|
|
95
|
-
const scale = workspace.scale;
|
|
96
|
-
workspace.getAudioManager().play('click');
|
|
97
|
-
if (scale < 1) {
|
|
98
|
-
return; // Too small to care about visual effects.
|
|
99
|
-
}
|
|
100
|
-
// Determine the absolute coordinates of the inferior block.
|
|
101
|
-
const xy = workspace.getSvgXY(block.getSvgRoot());
|
|
102
|
-
// Offset the coordinates based on the two connection types, fix scale.
|
|
103
|
-
if (block.outputConnection) {
|
|
104
|
-
xy.x += (block.RTL ? 3 : -3) * scale;
|
|
105
|
-
xy.y += 13 * scale;
|
|
106
|
-
} else if (block.previousConnection) {
|
|
107
|
-
xy.x += (block.RTL ? -23 : 23) * scale;
|
|
108
|
-
xy.y += 3 * scale;
|
|
109
|
-
}
|
|
110
|
-
const ripple = dom.createSvgElement(
|
|
111
|
-
Svg.CIRCLE, {
|
|
112
|
-
'cx': xy.x,
|
|
113
|
-
'cy': xy.y,
|
|
114
|
-
'r': 0,
|
|
115
|
-
'fill': 'none',
|
|
116
|
-
'stroke': '#888',
|
|
117
|
-
'stroke-width': 10,
|
|
118
|
-
},
|
|
119
|
-
workspace.getParentSvg());
|
|
120
|
-
// Start the animation.
|
|
121
|
-
connectionUiStep(ripple, new Date, scale);
|
|
122
|
-
};
|
|
123
|
-
exports.connectionUiEffect = connectionUiEffect;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Expand a ripple around a connection.
|
|
127
|
-
* @param {!SVGElement} ripple Element to animate.
|
|
128
|
-
* @param {!Date} start Date of animation's start.
|
|
129
|
-
* @param {number} scale Scale of workspace.
|
|
130
|
-
*/
|
|
131
|
-
const connectionUiStep = function(ripple, start, scale) {
|
|
132
|
-
const ms = new Date - start;
|
|
133
|
-
const percent = ms / 150;
|
|
134
|
-
if (percent > 1) {
|
|
135
|
-
dom.removeNode(ripple);
|
|
136
|
-
} else {
|
|
137
|
-
ripple.setAttribute('r', percent * 25 * scale);
|
|
138
|
-
ripple.style.opacity = 1 - percent;
|
|
139
|
-
disconnectPid = setTimeout(connectionUiStep, 10, ripple, start, scale);
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Play some UI effects (sound, animation) when disconnecting a block.
|
|
145
|
-
* @param {!BlockSvg} block The block being disconnected.
|
|
146
|
-
* @alias Blockly.blockAnimations.disconnectUiEffect
|
|
147
|
-
* @package
|
|
148
|
-
*/
|
|
149
|
-
const disconnectUiEffect = function(block) {
|
|
150
|
-
block.workspace.getAudioManager().play('disconnect');
|
|
151
|
-
if (block.workspace.scale < 1) {
|
|
152
|
-
return; // Too small to care about visual effects.
|
|
153
|
-
}
|
|
154
|
-
// Horizontal distance for bottom of block to wiggle.
|
|
155
|
-
const DISPLACEMENT = 10;
|
|
156
|
-
// Scale magnitude of skew to height of block.
|
|
157
|
-
const height = block.getHeightWidth().height;
|
|
158
|
-
let magnitude = Math.atan(DISPLACEMENT / height) / Math.PI * 180;
|
|
159
|
-
if (!block.RTL) {
|
|
160
|
-
magnitude *= -1;
|
|
161
|
-
}
|
|
162
|
-
// Start the animation.
|
|
163
|
-
disconnectUiStep(block.getSvgRoot(), magnitude, new Date);
|
|
164
|
-
};
|
|
165
|
-
exports.disconnectUiEffect = disconnectUiEffect;
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Animate a brief wiggle of a disconnected block.
|
|
169
|
-
* @param {!SVGElement} group SVG element to animate.
|
|
170
|
-
* @param {number} magnitude Maximum degrees skew (reversed for RTL).
|
|
171
|
-
* @param {!Date} start Date of animation's start.
|
|
172
|
-
*/
|
|
173
|
-
const disconnectUiStep = function(group, magnitude, start) {
|
|
174
|
-
const DURATION = 200; // Milliseconds.
|
|
175
|
-
const WIGGLES = 3; // Half oscillations.
|
|
176
|
-
|
|
177
|
-
const ms = new Date - start;
|
|
178
|
-
const percent = ms / DURATION;
|
|
179
|
-
|
|
180
|
-
if (percent > 1) {
|
|
181
|
-
group.skew_ = '';
|
|
182
|
-
} else {
|
|
183
|
-
const skew = Math.round(
|
|
184
|
-
Math.sin(percent * Math.PI * WIGGLES) * (1 - percent) * magnitude);
|
|
185
|
-
group.skew_ = 'skewX(' + skew + ')';
|
|
186
|
-
disconnectGroup = group;
|
|
187
|
-
disconnectPid = setTimeout(disconnectUiStep, 10, group, magnitude, start);
|
|
188
|
-
}
|
|
189
|
-
group.setAttribute('transform', group.translate_ + group.skew_);
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Stop the disconnect UI animation immediately.
|
|
194
|
-
* @alias Blockly.blockAnimations.disconnectUiStop
|
|
195
|
-
* @package
|
|
196
|
-
*/
|
|
197
|
-
const disconnectUiStop = function() {
|
|
198
|
-
if (disconnectGroup) {
|
|
199
|
-
clearTimeout(disconnectPid);
|
|
200
|
-
const group = disconnectGroup;
|
|
201
|
-
group.skew_ = '';
|
|
202
|
-
group.setAttribute('transform', group.translate_);
|
|
203
|
-
disconnectGroup = null;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
exports.disconnectUiStop = disconnectUiStop;
|
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview A class that manages a surface for dragging blocks. When a
|
|
9
|
-
* block drag is started, we move the block (and children) to a separate DOM
|
|
10
|
-
* element that we move around using translate3d. At the end of the drag, the
|
|
11
|
-
* blocks are put back in into the SVG they came from. This helps
|
|
12
|
-
* performance by avoiding repainting the entire SVG on every mouse move
|
|
13
|
-
* while dragging blocks.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
'use strict';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* A class that manages a surface for dragging blocks. When a
|
|
20
|
-
* block drag is started, we move the block (and children) to a separate DOM
|
|
21
|
-
* element that we move around using translate3d. At the end of the drag, the
|
|
22
|
-
* blocks are put back in into the SVG they came from. This helps
|
|
23
|
-
* performance by avoiding repainting the entire SVG on every mouse move
|
|
24
|
-
* while dragging blocks.
|
|
25
|
-
* @class
|
|
26
|
-
*/
|
|
27
|
-
goog.module('Blockly.BlockDragSurfaceSvg');
|
|
28
|
-
|
|
29
|
-
const dom = goog.require('Blockly.utils.dom');
|
|
30
|
-
const svgMath = goog.require('Blockly.utils.svgMath');
|
|
31
|
-
const {Coordinate} = goog.require('Blockly.utils.Coordinate');
|
|
32
|
-
const {Svg} = goog.require('Blockly.utils.Svg');
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Class for a drag surface for the currently dragged block. This is a separate
|
|
37
|
-
* SVG that contains only the currently moving block, or nothing.
|
|
38
|
-
* @alias Blockly.BlockDragSurfaceSvg
|
|
39
|
-
*/
|
|
40
|
-
const BlockDragSurfaceSvg = class {
|
|
41
|
-
/**
|
|
42
|
-
* @param {!Element} container Containing element.
|
|
43
|
-
*/
|
|
44
|
-
constructor(container) {
|
|
45
|
-
/**
|
|
46
|
-
* The SVG drag surface. Set once by BlockDragSurfaceSvg.createDom.
|
|
47
|
-
* @type {?SVGElement}
|
|
48
|
-
* @private
|
|
49
|
-
*/
|
|
50
|
-
this.SVG_ = null;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* This is where blocks live while they are being dragged if the drag
|
|
54
|
-
* surface is enabled.
|
|
55
|
-
* @type {?SVGElement}
|
|
56
|
-
* @private
|
|
57
|
-
*/
|
|
58
|
-
this.dragGroup_ = null;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Containing HTML element; parent of the workspace and the drag surface.
|
|
62
|
-
* @type {!Element}
|
|
63
|
-
* @private
|
|
64
|
-
*/
|
|
65
|
-
this.container_ = container;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Cached value for the scale of the drag surface.
|
|
69
|
-
* Used to set/get the correct translation during and after a drag.
|
|
70
|
-
* @type {number}
|
|
71
|
-
* @private
|
|
72
|
-
*/
|
|
73
|
-
this.scale_ = 1;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Cached value for the translation of the drag surface.
|
|
77
|
-
* This translation is in pixel units, because the scale is applied to the
|
|
78
|
-
* drag group rather than the top-level SVG.
|
|
79
|
-
* @type {?Coordinate}
|
|
80
|
-
* @private
|
|
81
|
-
*/
|
|
82
|
-
this.surfaceXY_ = null;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Cached value for the translation of the child drag surface in pixel
|
|
86
|
-
* units. Since the child drag surface tracks the translation of the
|
|
87
|
-
* workspace this is ultimately the translation of the workspace.
|
|
88
|
-
* @type {!Coordinate}
|
|
89
|
-
* @private
|
|
90
|
-
*/
|
|
91
|
-
this.childSurfaceXY_ = new Coordinate(0, 0);
|
|
92
|
-
|
|
93
|
-
this.createDom();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Create the drag surface and inject it into the container.
|
|
98
|
-
*/
|
|
99
|
-
createDom() {
|
|
100
|
-
if (this.SVG_) {
|
|
101
|
-
return; // Already created.
|
|
102
|
-
}
|
|
103
|
-
this.SVG_ = dom.createSvgElement(
|
|
104
|
-
Svg.SVG, {
|
|
105
|
-
'xmlns': dom.SVG_NS,
|
|
106
|
-
'xmlns:html': dom.HTML_NS,
|
|
107
|
-
'xmlns:xlink': dom.XLINK_NS,
|
|
108
|
-
'version': '1.1',
|
|
109
|
-
'class': 'blocklyBlockDragSurface',
|
|
110
|
-
},
|
|
111
|
-
this.container_);
|
|
112
|
-
this.dragGroup_ = dom.createSvgElement(Svg.G, {}, this.SVG_);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Set the SVG blocks on the drag surface's group and show the surface.
|
|
117
|
-
* Only one block group should be on the drag surface at a time.
|
|
118
|
-
* @param {!SVGElement} blocks Block or group of blocks to place on the drag
|
|
119
|
-
* surface.
|
|
120
|
-
*/
|
|
121
|
-
setBlocksAndShow(blocks) {
|
|
122
|
-
if (this.dragGroup_.childNodes.length) {
|
|
123
|
-
throw Error('Already dragging a block.');
|
|
124
|
-
}
|
|
125
|
-
// appendChild removes the blocks from the previous parent
|
|
126
|
-
this.dragGroup_.appendChild(blocks);
|
|
127
|
-
this.SVG_.style.display = 'block';
|
|
128
|
-
this.surfaceXY_ = new Coordinate(0, 0);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Translate and scale the entire drag surface group to the given position, to
|
|
133
|
-
* keep in sync with the workspace.
|
|
134
|
-
* @param {number} x X translation in pixel coordinates.
|
|
135
|
-
* @param {number} y Y translation in pixel coordinates.
|
|
136
|
-
* @param {number} scale Scale of the group.
|
|
137
|
-
*/
|
|
138
|
-
translateAndScaleGroup(x, y, scale) {
|
|
139
|
-
this.scale_ = scale;
|
|
140
|
-
// This is a work-around to prevent a the blocks from rendering
|
|
141
|
-
// fuzzy while they are being dragged on the drag surface.
|
|
142
|
-
const fixedX = x.toFixed(0);
|
|
143
|
-
const fixedY = y.toFixed(0);
|
|
144
|
-
|
|
145
|
-
this.childSurfaceXY_.x = parseInt(fixedX, 10);
|
|
146
|
-
this.childSurfaceXY_.y = parseInt(fixedY, 10);
|
|
147
|
-
|
|
148
|
-
this.dragGroup_.setAttribute(
|
|
149
|
-
'transform',
|
|
150
|
-
'translate(' + fixedX + ',' + fixedY + ') scale(' + scale + ')');
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Translate the drag surface's SVG based on its internal state.
|
|
155
|
-
* @private
|
|
156
|
-
*/
|
|
157
|
-
translateSurfaceInternal_() {
|
|
158
|
-
let x = this.surfaceXY_.x;
|
|
159
|
-
let y = this.surfaceXY_.y;
|
|
160
|
-
// This is a work-around to prevent a the blocks from rendering
|
|
161
|
-
// fuzzy while they are being dragged on the drag surface.
|
|
162
|
-
x = x.toFixed(0);
|
|
163
|
-
y = y.toFixed(0);
|
|
164
|
-
this.SVG_.style.display = 'block';
|
|
165
|
-
|
|
166
|
-
dom.setCssTransform(this.SVG_, 'translate3d(' + x + 'px, ' + y + 'px, 0)');
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Translates the entire surface by a relative offset.
|
|
171
|
-
* @param {number} deltaX Horizontal offset in pixel units.
|
|
172
|
-
* @param {number} deltaY Vertical offset in pixel units.
|
|
173
|
-
*/
|
|
174
|
-
translateBy(deltaX, deltaY) {
|
|
175
|
-
const x = this.surfaceXY_.x + deltaX;
|
|
176
|
-
const y = this.surfaceXY_.y + deltaY;
|
|
177
|
-
this.surfaceXY_ = new Coordinate(x, y);
|
|
178
|
-
this.translateSurfaceInternal_();
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Translate the entire drag surface during a drag.
|
|
183
|
-
* We translate the drag surface instead of the blocks inside the surface
|
|
184
|
-
* so that the browser avoids repainting the SVG.
|
|
185
|
-
* Because of this, the drag coordinates must be adjusted by scale.
|
|
186
|
-
* @param {number} x X translation for the entire surface.
|
|
187
|
-
* @param {number} y Y translation for the entire surface.
|
|
188
|
-
*/
|
|
189
|
-
translateSurface(x, y) {
|
|
190
|
-
this.surfaceXY_ = new Coordinate(x * this.scale_, y * this.scale_);
|
|
191
|
-
this.translateSurfaceInternal_();
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Reports the surface translation in scaled workspace coordinates.
|
|
196
|
-
* Use this when finishing a drag to return blocks to the correct position.
|
|
197
|
-
* @return {!Coordinate} Current translation of the surface.
|
|
198
|
-
*/
|
|
199
|
-
getSurfaceTranslation() {
|
|
200
|
-
const xy = svgMath.getRelativeXY(/** @type {!SVGElement} */ (this.SVG_));
|
|
201
|
-
return new Coordinate(xy.x / this.scale_, xy.y / this.scale_);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Provide a reference to the drag group (primarily for
|
|
206
|
-
* BlockSvg.getRelativeToSurfaceXY).
|
|
207
|
-
* @return {?SVGElement} Drag surface group element.
|
|
208
|
-
*/
|
|
209
|
-
getGroup() {
|
|
210
|
-
return this.dragGroup_;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Returns the SVG drag surface.
|
|
215
|
-
* @returns {?SVGElement} The SVG drag surface.
|
|
216
|
-
*/
|
|
217
|
-
getSvgRoot() {
|
|
218
|
-
return this.SVG_;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Get the current blocks on the drag surface, if any (primarily
|
|
223
|
-
* for BlockSvg.getRelativeToSurfaceXY).
|
|
224
|
-
* @return {?Element} Drag surface block DOM element, or null if no blocks
|
|
225
|
-
* exist.
|
|
226
|
-
*/
|
|
227
|
-
getCurrentBlock() {
|
|
228
|
-
return /** @type {Element} */ (this.dragGroup_.firstChild);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Gets the translation of the child block surface
|
|
233
|
-
* This surface is in charge of keeping track of how much the workspace has
|
|
234
|
-
* moved.
|
|
235
|
-
* @return {!Coordinate} The amount the workspace has been moved.
|
|
236
|
-
*/
|
|
237
|
-
getWsTranslation() {
|
|
238
|
-
// Returning a copy so the coordinate can not be changed outside this class.
|
|
239
|
-
return this.childSurfaceXY_.clone();
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Clear the group and hide the surface; move the blocks off onto the provided
|
|
244
|
-
* element.
|
|
245
|
-
* If the block is being deleted it doesn't need to go back to the original
|
|
246
|
-
* surface, since it would be removed immediately during dispose.
|
|
247
|
-
* @param {Element=} opt_newSurface Surface the dragging blocks should be
|
|
248
|
-
* moved to, or null if the blocks should be removed from this surface
|
|
249
|
-
* without being moved to a different surface.
|
|
250
|
-
*/
|
|
251
|
-
clearAndHide(opt_newSurface) {
|
|
252
|
-
const currentBlockElement = this.getCurrentBlock();
|
|
253
|
-
if (currentBlockElement) {
|
|
254
|
-
if (opt_newSurface) {
|
|
255
|
-
// appendChild removes the node from this.dragGroup_
|
|
256
|
-
opt_newSurface.appendChild(currentBlockElement);
|
|
257
|
-
} else {
|
|
258
|
-
this.dragGroup_.removeChild(currentBlockElement);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
this.SVG_.style.display = 'none';
|
|
262
|
-
if (this.dragGroup_.childNodes.length) {
|
|
263
|
-
throw Error('Drag group was not cleared.');
|
|
264
|
-
}
|
|
265
|
-
this.surfaceXY_ = null;
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
exports.BlockDragSurfaceSvg = BlockDragSurfaceSvg;
|