blockly 8.0.5 → 9.0.0-beta.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 (736) hide show
  1. package/blockly.min.js +2002 -2269
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/package.json +5 -5
  609. package/php.d.ts +0 -3
  610. package/php_compressed.js +322 -93
  611. package/php_compressed.js.map +1 -1
  612. package/python.d.ts +0 -3
  613. package/python_compressed.js +237 -90
  614. package/python_compressed.js.map +1 -1
  615. package/blockly.d.ts +0 -26127
  616. package/core/blockly_options.js +0 -28
  617. package/core/bubble_dragger.js +0 -298
  618. package/core/clipboard.js +0 -80
  619. package/core/component_manager.js +0 -263
  620. package/core/contextmenu_items.js +0 -651
  621. package/core/contextmenu_registry.js +0 -178
  622. package/core/delete_area.js +0 -87
  623. package/core/dialog.js +0 -107
  624. package/core/drag_target.js +0 -98
  625. package/core/events/events.js +0 -147
  626. package/core/events/events_abstract.js +0 -133
  627. package/core/events/events_block_base.js +0 -70
  628. package/core/events/events_block_drag.js +0 -89
  629. package/core/events/events_bubble_open.js +0 -90
  630. package/core/events/events_comment_base.js +0 -121
  631. package/core/events/events_marker_move.js +0 -110
  632. package/core/events/events_selected.js +0 -83
  633. package/core/events/events_toolbox_item_select.js +0 -84
  634. package/core/events/events_trashcan_open.js +0 -73
  635. package/core/events/events_var_base.js +0 -70
  636. package/core/events/events_viewport.js +0 -107
  637. package/core/events/workspace_events.js +0 -93
  638. package/core/field_angle.js +0 -591
  639. package/core/field_checkbox.js +0 -255
  640. package/core/field_colour.js +0 -717
  641. package/core/field_image.js +0 -304
  642. package/core/field_label.js +0 -149
  643. package/core/field_label_serializable.js +0 -80
  644. package/core/field_textinput.js +0 -619
  645. package/core/flyout_button.js +0 -356
  646. package/core/grid.js +0 -226
  647. package/core/icon.js +0 -225
  648. package/core/input.js +0 -335
  649. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  650. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  651. package/core/interfaces/i_autohideable.js +0 -40
  652. package/core/interfaces/i_block_dragger.js +0 -66
  653. package/core/interfaces/i_bounded_element.js +0 -45
  654. package/core/interfaces/i_bubble.js +0 -95
  655. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  656. package/core/interfaces/i_connection_checker.js +0 -104
  657. package/core/interfaces/i_contextmenu.js +0 -32
  658. package/core/interfaces/i_copyable.js +0 -49
  659. package/core/interfaces/i_delete_area.js +0 -50
  660. package/core/interfaces/i_drag_target.js +0 -88
  661. package/core/interfaces/i_flyout.js +0 -201
  662. package/core/interfaces/i_keyboard_accessible.js +0 -38
  663. package/core/interfaces/i_metrics_manager.js +0 -154
  664. package/core/interfaces/i_positionable.js +0 -51
  665. package/core/interfaces/i_selectable.js +0 -51
  666. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  667. package/core/interfaces/i_serializer.js +0 -77
  668. package/core/interfaces/i_styleable.js +0 -39
  669. package/core/interfaces/i_toolbox.js +0 -142
  670. package/core/interfaces/i_toolbox_item.js +0 -85
  671. package/core/marker_manager.js +0 -213
  672. package/core/menuitem.js +0 -292
  673. package/core/names.js +0 -293
  674. package/core/registry.js +0 -384
  675. package/core/renderers/common/block_rendering.js +0 -170
  676. package/core/renderers/common/constants.js +0 -1250
  677. package/core/renderers/common/i_path_object.js +0 -162
  678. package/core/renderers/common/marker_svg.js +0 -721
  679. package/core/renderers/common/path_object.js +0 -283
  680. package/core/renderers/common/renderer.js +0 -305
  681. package/core/renderers/geras/constants.js +0 -73
  682. package/core/renderers/geras/geras.js +0 -36
  683. package/core/renderers/geras/measurables/inline_input.js +0 -58
  684. package/core/renderers/geras/measurables/statement_input.js +0 -57
  685. package/core/renderers/geras/renderer.js +0 -149
  686. package/core/renderers/measurables/base.js +0 -64
  687. package/core/renderers/measurables/bottom_row.js +0 -138
  688. package/core/renderers/measurables/connection.js +0 -56
  689. package/core/renderers/measurables/external_value_input.js +0 -70
  690. package/core/renderers/measurables/field.js +0 -71
  691. package/core/renderers/measurables/in_row_spacer.js +0 -47
  692. package/core/renderers/measurables/input_connection.js +0 -75
  693. package/core/renderers/measurables/next_connection.js +0 -50
  694. package/core/renderers/measurables/output_connection.js +0 -61
  695. package/core/renderers/measurables/previous_connection.js +0 -50
  696. package/core/renderers/measurables/round_corner.js +0 -52
  697. package/core/renderers/measurables/row.js +0 -247
  698. package/core/renderers/measurables/spacer_row.js +0 -69
  699. package/core/renderers/measurables/square_corner.js +0 -50
  700. package/core/renderers/measurables/top_row.js +0 -143
  701. package/core/renderers/measurables/types.js +0 -353
  702. package/core/renderers/minimalist/drawer.js +0 -42
  703. package/core/renderers/minimalist/info.js +0 -54
  704. package/core/renderers/minimalist/minimalist.js +0 -26
  705. package/core/renderers/minimalist/renderer.js +0 -80
  706. package/core/renderers/thrasos/renderer.js +0 -53
  707. package/core/renderers/thrasos/thrasos.js +0 -22
  708. package/core/renderers/zelos/marker_svg.js +0 -179
  709. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  710. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  711. package/core/renderers/zelos/path_object.js +0 -247
  712. package/core/renderers/zelos/renderer.js +0 -147
  713. package/core/renderers/zelos/zelos.js +0 -38
  714. package/core/serialization/exceptions.js +0 -144
  715. package/core/shortcut_registry.js +0 -366
  716. package/core/theme/themes.js +0 -23
  717. package/core/theme.js +0 -228
  718. package/core/theme_manager.js +0 -211
  719. package/core/toolbox/category.js +0 -751
  720. package/core/toolbox/collapsible_category.js +0 -311
  721. package/core/toolbox/separator.js +0 -133
  722. package/core/toolbox/toolbox_item.js +0 -173
  723. package/core/touch.js +0 -285
  724. package/core/utils/coordinate.js +0 -138
  725. package/core/utils/global.js +0 -41
  726. package/core/utils/keycodes.js +0 -172
  727. package/core/utils/metrics.js +0 -154
  728. package/core/utils/svg.js +0 -186
  729. package/core/utils/toolbox.js +0 -459
  730. package/core/utils/useragent.js +0 -197
  731. package/core/utils.js +0 -383
  732. package/core/variable_model.js +0 -96
  733. package/core/widgetdiv.js +0 -290
  734. package/core/workspace.js +0 -836
  735. package/core/workspace_comment.js +0 -400
  736. package/core/workspace_dragger.js +0 -115
package/php_compressed.js CHANGED
@@ -8,103 +8,332 @@
8
8
  module.exports = factory(require("./blockly_compressed.js"));
9
9
  } else { // Browser
10
10
  var factoryExports = factory(root.Blockly);
11
- root.Blockly.PHP = factoryExports;
11
+ root.Blockly.PHP = factoryExports.phpGenerator;
12
+ root.Blockly.PHP.__namespace__ = factoryExports.__namespace__;
12
13
  }
13
14
  }(this, function(__parent__) {
14
15
  var $=__parent__.__namespace__;
15
- var module$contents$Blockly$PHP_PHP=new $.module$exports$Blockly$Generator.Generator("PHP");module$contents$Blockly$PHP_PHP.addReservedWords("__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,clone,const,continue,declare,default,die,do,echo,else,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,for,foreach,function,global,goto,if,implements,include,include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,print,private,protected,public,require,require_once,return,static,switch,throw,trait,try,unset,use,var,while,xor,PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__");
16
- module$contents$Blockly$PHP_PHP.ORDER_ATOMIC=0;module$contents$Blockly$PHP_PHP.ORDER_CLONE=1;module$contents$Blockly$PHP_PHP.ORDER_NEW=1;module$contents$Blockly$PHP_PHP.ORDER_MEMBER=2.1;module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL=2.2;module$contents$Blockly$PHP_PHP.ORDER_POWER=3;module$contents$Blockly$PHP_PHP.ORDER_INCREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_DECREMENT=4;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_NOT=4;module$contents$Blockly$PHP_PHP.ORDER_CAST=4;
17
- module$contents$Blockly$PHP_PHP.ORDER_SUPPRESS_ERROR=4;module$contents$Blockly$PHP_PHP.ORDER_INSTANCEOF=5;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT=6;module$contents$Blockly$PHP_PHP.ORDER_UNARY_PLUS=7.1;module$contents$Blockly$PHP_PHP.ORDER_UNARY_NEGATION=7.2;module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION=8.1;module$contents$Blockly$PHP_PHP.ORDER_DIVISION=8.2;module$contents$Blockly$PHP_PHP.ORDER_MODULUS=8.3;module$contents$Blockly$PHP_PHP.ORDER_ADDITION=9.1;
18
- module$contents$Blockly$PHP_PHP.ORDER_SUBTRACTION=9.2;module$contents$Blockly$PHP_PHP.ORDER_STRING_CONCAT=9.3;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_SHIFT=10;module$contents$Blockly$PHP_PHP.ORDER_RELATIONAL=11;module$contents$Blockly$PHP_PHP.ORDER_EQUALITY=12;module$contents$Blockly$PHP_PHP.ORDER_REFERENCE=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_AND=13;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_XOR=14;module$contents$Blockly$PHP_PHP.ORDER_BITWISE_OR=15;
19
- module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND=16;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR=17;module$contents$Blockly$PHP_PHP.ORDER_IF_NULL=18;module$contents$Blockly$PHP_PHP.ORDER_CONDITIONAL=19;module$contents$Blockly$PHP_PHP.ORDER_ASSIGNMENT=20;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND_WEAK=21;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_XOR=22;module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR_WEAK=23;module$contents$Blockly$PHP_PHP.ORDER_NONE=99;
20
- module$contents$Blockly$PHP_PHP.ORDER_OVERRIDES=[[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_FUNCTION_CALL],[module$contents$Blockly$PHP_PHP.ORDER_MEMBER,module$contents$Blockly$PHP_PHP.ORDER_MEMBER],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_NOT],[module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION,module$contents$Blockly$PHP_PHP.ORDER_MULTIPLICATION],[module$contents$Blockly$PHP_PHP.ORDER_ADDITION,module$contents$Blockly$PHP_PHP.ORDER_ADDITION],
21
- [module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_AND],[module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR,module$contents$Blockly$PHP_PHP.ORDER_LOGICAL_OR]];module$contents$Blockly$PHP_PHP.isInitialized=!1;
22
- module$contents$Blockly$PHP_PHP.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$exports$Blockly$Names.Names(this.RESERVED_WORDS_,"$");this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);this.isInitialized=!0};
23
- module$contents$Blockly$PHP_PHP.finish=function(a){var b=(0,$.module$exports$Blockly$utils$object.values)(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$contents$Blockly$PHP_PHP.scrubNakedValue=function(a){return a+";\n"};module$contents$Blockly$PHP_PHP.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"};
24
- module$contents$Blockly$PHP_PHP.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(' . "\\n" .\n')};
25
- module$contents$Blockly$PHP_PHP.scrub_=function(a,b,c){var d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=(0,$.module$exports$Blockly$utils$string.wrap)(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e,"// ")+"\n");for(var f=0;f<a.inputList.length;f++)a.inputList[f].type===$.module$exports$Blockly$inputTypes.inputTypes.VALUE&&(e=a.inputList[f].connection.targetBlock())&&(e=this.allNestedComments(e))&&(d+=this.prefixLines(e,"// "))}a=a.nextConnection&&
16
+ var module$exports$Blockly$PHP={},module$contents$Blockly$PHP_objectUtils=$.module$build$src$core$utils$object,module$contents$Blockly$PHP_stringUtils=$.module$build$src$core$utils$string,module$contents$Blockly$PHP_Generator=$.Generator$$module$build$src$core$generator,module$contents$Blockly$PHP_inputTypes=$.module$build$src$core$input_types.inputTypes,module$contents$Blockly$PHP_Names=$.module$build$src$core$names.Names;module$exports$Blockly$PHP.phpGenerator=new $.Generator$$module$build$src$core$generator("PHP");
17
+ module$exports$Blockly$PHP.phpGenerator.addReservedWords("__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,clone,const,continue,declare,default,die,do,echo,else,elseif,empty,enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,extends,final,for,foreach,function,global,goto,if,implements,include,include_once,instanceof,insteadof,interface,isset,list,namespace,new,or,print,private,protected,public,require,require_once,return,static,switch,throw,trait,try,unset,use,var,while,xor,PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,PHP_SYSCONFDIR,PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,PHP_CONFIG_FILE_SCAN_DIR,PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,E_NOTICE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,E_DEPRECATED,E_USER_DEPRECATED,E_ALL,E_STRICT,__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,__FILE__,__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__");
18
+ module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC=0;module$exports$Blockly$PHP.phpGenerator.ORDER_CLONE=1;module$exports$Blockly$PHP.phpGenerator.ORDER_NEW=1;module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER=2.1;module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL=2.2;module$exports$Blockly$PHP.phpGenerator.ORDER_POWER=3;module$exports$Blockly$PHP.phpGenerator.ORDER_INCREMENT=4;module$exports$Blockly$PHP.phpGenerator.ORDER_DECREMENT=4;
19
+ module$exports$Blockly$PHP.phpGenerator.ORDER_BITWISE_NOT=4;module$exports$Blockly$PHP.phpGenerator.ORDER_CAST=4;module$exports$Blockly$PHP.phpGenerator.ORDER_SUPPRESS_ERROR=4;module$exports$Blockly$PHP.phpGenerator.ORDER_INSTANCEOF=5;module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_NOT=6;module$exports$Blockly$PHP.phpGenerator.ORDER_UNARY_PLUS=7.1;module$exports$Blockly$PHP.phpGenerator.ORDER_UNARY_NEGATION=7.2;module$exports$Blockly$PHP.phpGenerator.ORDER_MULTIPLICATION=8.1;
20
+ module$exports$Blockly$PHP.phpGenerator.ORDER_DIVISION=8.2;module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS=8.3;module$exports$Blockly$PHP.phpGenerator.ORDER_ADDITION=9.1;module$exports$Blockly$PHP.phpGenerator.ORDER_SUBTRACTION=9.2;module$exports$Blockly$PHP.phpGenerator.ORDER_STRING_CONCAT=9.3;module$exports$Blockly$PHP.phpGenerator.ORDER_BITWISE_SHIFT=10;module$exports$Blockly$PHP.phpGenerator.ORDER_RELATIONAL=11;module$exports$Blockly$PHP.phpGenerator.ORDER_EQUALITY=12;
21
+ module$exports$Blockly$PHP.phpGenerator.ORDER_REFERENCE=13;module$exports$Blockly$PHP.phpGenerator.ORDER_BITWISE_AND=13;module$exports$Blockly$PHP.phpGenerator.ORDER_BITWISE_XOR=14;module$exports$Blockly$PHP.phpGenerator.ORDER_BITWISE_OR=15;module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_AND=16;module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_OR=17;module$exports$Blockly$PHP.phpGenerator.ORDER_IF_NULL=18;module$exports$Blockly$PHP.phpGenerator.ORDER_CONDITIONAL=19;
22
+ module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT=20;module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_AND_WEAK=21;module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_XOR=22;module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_OR_WEAK=23;module$exports$Blockly$PHP.phpGenerator.ORDER_NONE=99;
23
+ module$exports$Blockly$PHP.phpGenerator.ORDER_OVERRIDES=[[module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL],[module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER,module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER],[module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_NOT,module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_NOT],[module$exports$Blockly$PHP.phpGenerator.ORDER_MULTIPLICATION,module$exports$Blockly$PHP.phpGenerator.ORDER_MULTIPLICATION],
24
+ [module$exports$Blockly$PHP.phpGenerator.ORDER_ADDITION,module$exports$Blockly$PHP.phpGenerator.ORDER_ADDITION],[module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_AND,module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_AND],[module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_OR,module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_OR]];module$exports$Blockly$PHP.phpGenerator.isInitialized=!1;
25
+ module$exports$Blockly$PHP.phpGenerator.init=function(a){Object.getPrototypeOf(this).init.call(this);this.nameDB_?this.nameDB_.reset():this.nameDB_=new $.module$build$src$core$names.Names(this.RESERVED_WORDS_,"$");this.nameDB_.setVariableMap(a.getVariableMap());this.nameDB_.populateVariables(a);this.nameDB_.populateProcedures(a);this.isInitialized=!0};
26
+ module$exports$Blockly$PHP.phpGenerator.finish=function(a){const b=$.module$build$src$core$utils$object.values(this.definitions_);a=Object.getPrototypeOf(this).finish.call(this,a);this.isInitialized=!1;this.nameDB_.reset();return b.join("\n\n")+"\n\n\n"+a};module$exports$Blockly$PHP.phpGenerator.scrubNakedValue=function(a){return a+";\n"};module$exports$Blockly$PHP.phpGenerator.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"};
27
+ module$exports$Blockly$PHP.phpGenerator.multiline_quote_=function(a){return a.split(/\n/g).map(this.quote_).join(' . "\\n" .\n')};
28
+ module$exports$Blockly$PHP.phpGenerator.scrub_=function(a,b,c){let d="";if(!a.outputConnection||!a.outputConnection.targetConnection){var e=a.getCommentText();e&&(e=$.module$build$src$core$utils$string.wrap(e,this.COMMENT_WRAP-3),d+=this.prefixLines(e,"// ")+"\n");for(let f=0;f<a.inputList.length;f++)a.inputList[f].type===$.module$build$src$core$input_types.inputTypes.VALUE&&(e=a.inputList[f].connection.targetBlock())&&(e=this.allNestedComments(e))&&(d+=this.prefixLines(e,"// "))}a=a.nextConnection&&
26
29
  a.nextConnection.targetBlock();c=c?"":this.blockToCode(a);return d+b+c};
27
- module$contents$Blockly$PHP_PHP.getAdjusted=function(a,b,c,d,e){c=c||0;e=e||this.ORDER_NONE;a.workspace.options.oneBasedIndex&&c--;var f=a.workspace.options.oneBasedIndex?"1":"0",g=e;if(0<c)var h=g=this.ORDER_ADDITION;else 0>c?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;(0,$.module$exports$Blockly$utils$string.isNumber)(a)?(a=Number(a)+c,d&&(a=-a)):(0<c?a=a+" + "+c:0>c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e),h&&e>=h&&
28
- (a="("+a+")"));return a};$.Blockly.PHP=module$contents$Blockly$PHP_PHP;var module$exports$Blockly$PHP$variables={};$.Blockly.PHP.variables_get=function(a){return[$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.variables_set=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" = "+b+";\n"};var module$exports$Blockly$PHP$variablesDynamic={};$.Blockly.PHP.variables_get_dynamic=$.Blockly.PHP.variables_get;$.Blockly.PHP.variables_set_dynamic=$.Blockly.PHP.variables_set;var module$exports$Blockly$PHP$texts={};$.Blockly.PHP.text=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("TEXT")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.text_multiline=function(a){a=$.Blockly.PHP.multiline_quote_(a.getFieldValue("TEXT"));var b=-1!==a.indexOf(".")?$.Blockly.PHP.ORDER_STRING_CONCAT:$.Blockly.PHP.ORDER_ATOMIC;return[a,b]};
29
- $.Blockly.PHP.text_join=function(a){if(0===a.itemCount_)return["''",$.Blockly.PHP.ORDER_ATOMIC];if(1===a.itemCount_)return[$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_NONE)||"''",$.Blockly.PHP.ORDER_NONE];if(2===a.itemCount_){var b=$.Blockly.PHP.valueToCode(a,"ADD0",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";a=$.Blockly.PHP.valueToCode(a,"ADD1",$.Blockly.PHP.ORDER_STRING_CONCAT)||"''";return[b+" . "+a,$.Blockly.PHP.ORDER_STRING_CONCAT]}b=Array(a.itemCount_);for(var c=0;c<a.itemCount_;c++)b[c]=
30
- $.Blockly.PHP.valueToCode(a,"ADD"+c,$.Blockly.PHP.ORDER_NONE)||"''";return["implode('', array("+b.join(",")+"))",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.text_append=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE);a=$.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_ASSIGNMENT)||"''";return b+" .= "+a+";\n"};
31
- $.Blockly.PHP.text_length=function(a){var b=$.Blockly.PHP.provideFunction_("length","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($value) {\n if (is_string($value)) {\n return strlen($value);\n }\n return count($value);\n}\n");a=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"''";return[b+"("+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.text_isEmpty=function(a){return["empty("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"''")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
32
- $.Blockly.PHP.text_indexOf=function(a){var b="FIRST"===a.getFieldValue("END")?"strpos":"strrpos",c=$.Blockly.PHP.valueToCode(a,"FIND",$.Blockly.PHP.ORDER_NONE)||"''",d=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"''",e=" -1",f="";a.workspace.options.oneBasedIndex&&(e=" 0",f=" + 1");return[$.Blockly.PHP.provideFunction_("FIRST"===a.getFieldValue("END")?"text_indexOf":"text_lastIndexOf","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($text, $search) {\n $pos = "+b+"($text, $search);\n return $pos === false ? "+
33
- e+" : $pos"+f+";\n}\n")+"("+d+", "+c+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
34
- $.Blockly.PHP.text_charAt=function(a){var b=a.getFieldValue("WHERE")||"FROM_START",c=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"''";switch(b){case "FIRST":return["substr("+c+", 0, 1)",$.Blockly.PHP.ORDER_FUNCTION_CALL];case "LAST":return["substr("+c+", -1)",$.Blockly.PHP.ORDER_FUNCTION_CALL];case "FROM_START":return a=$.Blockly.PHP.getAdjusted(a,"AT"),["substr("+c+", "+a+", 1)",$.Blockly.PHP.ORDER_FUNCTION_CALL];case "FROM_END":return a=$.Blockly.PHP.getAdjusted(a,"AT",1,!0),
35
- ["substr("+c+", "+a+", 1)",$.Blockly.PHP.ORDER_FUNCTION_CALL];case "RANDOM":return[$.Blockly.PHP.provideFunction_("text_random_letter","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($text) {\n return $text[rand(0, strlen($text) - 1)];\n}\n")+"("+c+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]}throw Error("Unhandled option (text_charAt).");};
36
- $.Blockly.PHP.text_getSubstring=function(a){var b=a.getFieldValue("WHERE1"),c=a.getFieldValue("WHERE2"),d=$.Blockly.PHP.valueToCode(a,"STRING",$.Blockly.PHP.ORDER_NONE)||"''";if("FIRST"===b&&"LAST"===c)return[d,$.Blockly.PHP.ORDER_NONE];var e=$.Blockly.PHP.getAdjusted(a,"AT1");a=$.Blockly.PHP.getAdjusted(a,"AT2");return[$.Blockly.PHP.provideFunction_("text_get_substring","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($text, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = strlen($text) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = strlen($text) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = strlen($text) - $at1;\n } else {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n return substr($text, $at1, $length);\n}\n")+
37
- "("+d+", '"+b+"', "+e+", '"+c+"', "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.text_changeCase=function(a){var b=$.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''",c;"UPPERCASE"===a.getFieldValue("CASE")?c="strtoupper("+b+")":"LOWERCASE"===a.getFieldValue("CASE")?c="strtolower("+b+")":"TITLECASE"===a.getFieldValue("CASE")&&(c="ucwords(strtolower("+b+"))");return[c,$.Blockly.PHP.ORDER_FUNCTION_CALL]};
38
- $.Blockly.PHP.text_trim=function(a){var b={LEFT:"ltrim",RIGHT:"rtrim",BOTH:"trim"}[a.getFieldValue("MODE")];a=$.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''";return[b+"("+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.text_print=function(a){return"print("+($.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''")+");\n"};
39
- $.Blockly.PHP.text_prompt_ext=function(a){var b="readline("+(a.getField("TEXT")?$.Blockly.PHP.quote_(a.getFieldValue("TEXT")):$.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''")+")";"NUMBER"===a.getFieldValue("TYPE")&&(b="floatval("+b+")");return[b,$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.text_prompt=$.Blockly.PHP.text_prompt_ext;
40
- $.Blockly.PHP.text_count=function(a){var b=$.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''";a=$.Blockly.PHP.valueToCode(a,"SUB",$.Blockly.PHP.ORDER_NONE)||"''";return["strlen("+a+") === 0 ? strlen("+b+") + 1 : substr_count("+b+", "+a+")",$.Blockly.PHP.ORDER_CONDITIONAL]};
41
- $.Blockly.PHP.text_replace=function(a){var b=$.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''",c=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_NONE)||"''";a=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_NONE)||"''";return["str_replace("+c+", "+a+", "+b+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.text_reverse=function(a){return["strrev("+($.Blockly.PHP.valueToCode(a,"TEXT",$.Blockly.PHP.ORDER_NONE)||"''")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$procedures={};
42
- $.Blockly.PHP.procedures_defreturn=function(a){for(var b=[],c=a.workspace,d=(0,$.module$exports$Blockly$Variables.allUsedVarModels)(c)||[],e=0,f;f=d[e];e++)f=f.name,-1===a.getVars().indexOf(f)&&b.push($.Blockly.PHP.nameDB_.getName(f,$.module$exports$Blockly$Names.NameType.VARIABLE));c=(0,$.module$exports$Blockly$Variables.allDeveloperVariables)(c);for(d=0;d<c.length;d++)b.push($.Blockly.PHP.nameDB_.getName(c[d],$.module$exports$Blockly$Names.NameType.DEVELOPER_VARIABLE));c=b.length?$.Blockly.PHP.INDENT+
43
- "global "+b.join(", ")+";\n":"";b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("NAME"),$.module$exports$Blockly$Names.NameType.PROCEDURE);d="";$.Blockly.PHP.STATEMENT_PREFIX&&(d+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));$.Blockly.PHP.STATEMENT_SUFFIX&&(d+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a));d&&(d=$.Blockly.PHP.prefixLines(d,$.Blockly.PHP.INDENT));e="";$.Blockly.PHP.INFINITE_LOOP_TRAP&&(e=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.INFINITE_LOOP_TRAP,
44
- a),$.Blockly.PHP.INDENT));f=$.Blockly.PHP.statementToCode(a,"STACK");var g=$.Blockly.PHP.valueToCode(a,"RETURN",$.Blockly.PHP.ORDER_NONE)||"",h="";f&&g&&(h=d);g&&(g=$.Blockly.PHP.INDENT+"return "+g+";\n");for(var k=[],l=a.getVars(),m=0;m<l.length;m++)k[m]=$.Blockly.PHP.nameDB_.getName(l[m],$.module$exports$Blockly$Names.NameType.VARIABLE);c="function "+b+"("+k.join(", ")+") {\n"+c+d+e+f+h+g+"}";c=$.Blockly.PHP.scrub_(a,c);$.Blockly.PHP.definitions_["%"+b]=c;return null};
45
- $.Blockly.PHP.procedures_defnoreturn=$.Blockly.PHP.procedures_defreturn;$.Blockly.PHP.procedures_callreturn=function(a){for(var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("NAME"),$.module$exports$Blockly$Names.NameType.PROCEDURE),c=[],d=a.getVars(),e=0;e<d.length;e++)c[e]=$.Blockly.PHP.valueToCode(a,"ARG"+e,$.Blockly.PHP.ORDER_NONE)||"null";return[b+"("+c.join(", ")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
46
- $.Blockly.PHP.procedures_callnoreturn=function(a){return $.Blockly.PHP.procedures_callreturn(a)[0]+";\n"};
47
- $.Blockly.PHP.procedures_ifreturn=function(a){var b="if ("+($.Blockly.PHP.valueToCode(a,"CONDITION",$.Blockly.PHP.ORDER_NONE)||"false")+") {\n";$.Blockly.PHP.STATEMENT_SUFFIX&&(b+=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a),$.Blockly.PHP.INDENT));a.hasReturnValue_?(a=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"null",b+=$.Blockly.PHP.INDENT+"return "+a+";\n"):b+=$.Blockly.PHP.INDENT+"return;\n";return b+"}\n"};var module$exports$Blockly$PHP$math={};$.Blockly.PHP.math_number=function(a){a=Number(a.getFieldValue("NUM"));var b=0<=a?$.Blockly.PHP.ORDER_ATOMIC:$.Blockly.PHP.ORDER_UNARY_NEGATION;Infinity===a?a="INF":-Infinity===a&&(a="-INF");return[a,b]};
48
- $.Blockly.PHP.math_arithmetic=function(a){var b={ADD:[" + ",$.Blockly.PHP.ORDER_ADDITION],MINUS:[" - ",$.Blockly.PHP.ORDER_SUBTRACTION],MULTIPLY:[" * ",$.Blockly.PHP.ORDER_MULTIPLICATION],DIVIDE:[" / ",$.Blockly.PHP.ORDER_DIVISION],POWER:[" ** ",$.Blockly.PHP.ORDER_POWER]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=$.Blockly.PHP.valueToCode(a,"A",b)||"0";a=$.Blockly.PHP.valueToCode(a,"B",b)||"0";return[d+c+a,b]};
49
- $.Blockly.PHP.math_single=function(a){var b=a.getFieldValue("OP");if("NEG"===b)return a=$.Blockly.PHP.valueToCode(a,"NUM",$.Blockly.PHP.ORDER_UNARY_NEGATION)||"0","-"===a[0]&&(a=" "+a),["-"+a,$.Blockly.PHP.ORDER_UNARY_NEGATION];a="SIN"===b||"COS"===b||"TAN"===b?$.Blockly.PHP.valueToCode(a,"NUM",$.Blockly.PHP.ORDER_DIVISION)||"0":$.Blockly.PHP.valueToCode(a,"NUM",$.Blockly.PHP.ORDER_NONE)||"0";switch(b){case "ABS":var c="abs("+a+")";break;case "ROOT":c="sqrt("+a+")";break;case "LN":c="log("+a+")";
50
- break;case "EXP":c="exp("+a+")";break;case "POW10":c="pow(10,"+a+")";break;case "ROUND":c="round("+a+")";break;case "ROUNDUP":c="ceil("+a+")";break;case "ROUNDDOWN":c="floor("+a+")";break;case "SIN":c="sin("+a+" / 180 * pi())";break;case "COS":c="cos("+a+" / 180 * pi())";break;case "TAN":c="tan("+a+" / 180 * pi())"}if(c)return[c,$.Blockly.PHP.ORDER_FUNCTION_CALL];switch(b){case "LOG10":c="log("+a+") / log(10)";break;case "ASIN":c="asin("+a+") / pi() * 180";break;case "ACOS":c="acos("+a+") / pi() * 180";
51
- break;case "ATAN":c="atan("+a+") / pi() * 180";break;default:throw Error("Unknown math operator: "+b);}return[c,$.Blockly.PHP.ORDER_DIVISION]};$.Blockly.PHP.math_constant=function(a){return{PI:["M_PI",$.Blockly.PHP.ORDER_ATOMIC],E:["M_E",$.Blockly.PHP.ORDER_ATOMIC],GOLDEN_RATIO:["(1 + sqrt(5)) / 2",$.Blockly.PHP.ORDER_DIVISION],SQRT2:["M_SQRT2",$.Blockly.PHP.ORDER_ATOMIC],SQRT1_2:["M_SQRT1_2",$.Blockly.PHP.ORDER_ATOMIC],INFINITY:["INF",$.Blockly.PHP.ORDER_ATOMIC]}[a.getFieldValue("CONSTANT")]};
52
- $.Blockly.PHP.math_number_property=function(a){var b={EVEN:[""," % 2 == 0",$.Blockly.PHP.ORDER_MODULUS,$.Blockly.PHP.ORDER_EQUALITY],ODD:[""," % 2 == 1",$.Blockly.PHP.ORDER_MODULUS,$.Blockly.PHP.ORDER_EQUALITY],WHOLE:["is_int(",")",$.Blockly.PHP.ORDER_NONE,$.Blockly.PHP.ORDER_FUNCTION_CALL],POSITIVE:[""," > 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],NEGATIVE:[""," < 0",$.Blockly.PHP.ORDER_RELATIONAL,$.Blockly.PHP.ORDER_RELATIONAL],DIVISIBLE_BY:[null,null,$.Blockly.PHP.ORDER_MODULUS,
53
- $.Blockly.PHP.ORDER_EQUALITY],PRIME:[null,null,$.Blockly.PHP.ORDER_NONE,$.Blockly.PHP.ORDER_FUNCTION_CALL]},c=a.getFieldValue("PROPERTY");b=$.$jscomp.makeIterator(b[c]);var d=b.next().value,e=b.next().value,f=b.next().value;b=b.next().value;f=$.Blockly.PHP.valueToCode(a,"NUMBER_TO_CHECK",f)||"0";if("PRIME"===c)a=$.Blockly.PHP.provideFunction_("math_isPrime","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if ($n == 2 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n")+
54
- "("+f+")";else if("DIVISIBLE_BY"===c){a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";if("0"===a)return["false",$.Blockly.PHP.ORDER_ATOMIC];a=f+" % "+a+" == 0"}else a=d+f+e;return[a,b]};$.Blockly.PHP.math_change=function(a){var b=$.Blockly.PHP.valueToCode(a,"DELTA",$.Blockly.PHP.ORDER_ADDITION)||"0";return $.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE)+" += "+b+";\n"};$.Blockly.PHP.math_round=$.Blockly.PHP.math_single;
55
- $.Blockly.PHP.math_trig=$.Blockly.PHP.math_single;
56
- $.Blockly.PHP.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="array_sum("+a+")";break;case "MIN":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="min("+a+")";break;case "MAX":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()";a="max("+a+")";break;case "AVERAGE":b=$.Blockly.PHP.provideFunction_("math_mean","\nfunction "+
57
- $.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($myList) {\n return array_sum($myList) / count($myList);\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()";a=b+"("+a+")";break;case "MEDIAN":b=$.Blockly.PHP.provideFunction_("math_median","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n");
58
- a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=$.Blockly.PHP.provideFunction_("math_modes","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";
59
- a=b+"("+a+")";break;case "STD_DEV":b=$.Blockly.PHP.provideFunction_("math_standard_deviation","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b=
60
- $.Blockly.PHP.provideFunction_("math_random_list","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n");a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,$.Blockly.PHP.ORDER_FUNCTION_CALL]};
61
- $.Blockly.PHP.math_modulo=function(a){var b=$.Blockly.PHP.valueToCode(a,"DIVIDEND",$.Blockly.PHP.ORDER_MODULUS)||"0";a=$.Blockly.PHP.valueToCode(a,"DIVISOR",$.Blockly.PHP.ORDER_MODULUS)||"0";return[b+" % "+a,$.Blockly.PHP.ORDER_MODULUS]};
62
- $.Blockly.PHP.math_constrain=function(a){var b=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"0",c=$.Blockly.PHP.valueToCode(a,"LOW",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"HIGH",$.Blockly.PHP.ORDER_NONE)||"Infinity";return["min(max("+b+", "+c+"), "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
63
- $.Blockly.PHP.math_random_int=function(a){var b=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_NONE)||"0";a=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_NONE)||"0";return[$.Blockly.PHP.provideFunction_("math_random_int","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n")+"("+b+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
64
- $.Blockly.PHP.math_random_float=function(a){return["(float)rand()/(float)getrandmax()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.math_atan2=function(a){var b=$.Blockly.PHP.valueToCode(a,"X",$.Blockly.PHP.ORDER_NONE)||"0";return["atan2("+($.Blockly.PHP.valueToCode(a,"Y",$.Blockly.PHP.ORDER_NONE)||"0")+", "+b+") / pi() * 180",$.Blockly.PHP.ORDER_DIVISION]};var module$exports$Blockly$PHP$loops={};
65
- $.Blockly.PHP.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):$.Blockly.PHP.valueToCode(a,"TIMES",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0";var c=$.Blockly.PHP.statementToCode(a,"DO");c=$.Blockly.PHP.addLoopTrap(c,a);a="";var d=$.Blockly.PHP.nameDB_.getDistinctName("count",$.module$exports$Blockly$Names.NameType.VARIABLE),e=b;b.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(b)||(e=$.Blockly.PHP.nameDB_.getDistinctName("repeat_end",$.module$exports$Blockly$Names.NameType.VARIABLE),
66
- a+=e+" = "+b+";\n");return a+("for ("+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};$.Blockly.PHP.controls_repeat=$.Blockly.PHP.controls_repeat_ext;$.Blockly.PHP.controls_whileUntil=function(a){var b="UNTIL"===a.getFieldValue("MODE"),c=$.Blockly.PHP.valueToCode(a,"BOOL",b?$.Blockly.PHP.ORDER_LOGICAL_NOT:$.Blockly.PHP.ORDER_NONE)||"false",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"};
67
- $.Blockly.PHP.controls_for=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"FROM",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",d=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_ASSIGNMENT)||"0",e=$.Blockly.PHP.valueToCode(a,"BY",$.Blockly.PHP.ORDER_ASSIGNMENT)||"1",f=$.Blockly.PHP.statementToCode(a,"DO");f=$.Blockly.PHP.addLoopTrap(f,a);if((0,$.module$exports$Blockly$utils$string.isNumber)(c)&&(0,$.module$exports$Blockly$utils$string.isNumber)(d)&&
68
- (0,$.module$exports$Blockly$utils$string.isNumber)(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=(1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b))+(") {\n"+f+"}\n")}else a="",g=c,c.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(c)||(g=$.Blockly.PHP.nameDB_.getDistinctName(b+"_start",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||(0,$.module$exports$Blockly$utils$string.isNumber)(d)||
69
- (c=$.Blockly.PHP.nameDB_.getDistinctName(b+"_end",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=c+" = "+d+";\n"),d=$.Blockly.PHP.nameDB_.getDistinctName(b+"_inc",$.module$exports$Blockly$Names.NameType.VARIABLE),a+=d+" = ",a=(0,$.module$exports$Blockly$utils$string.isNumber)(e)?a+(Math.abs(e)+";\n"):a+("abs("+e+");\n"),a=a+("if ("+g+" > "+c+") {\n")+($.Blockly.PHP.INDENT+d+" = -"+d+";\n"),a+="}\n",a+="for ("+b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+
70
- "}\n";return a};$.Blockly.PHP.controls_forEach=function(a){var b=$.Blockly.PHP.nameDB_.getName(a.getFieldValue("VAR"),$.module$exports$Blockly$Names.NameType.VARIABLE),c=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_ASSIGNMENT)||"[]",d=$.Blockly.PHP.statementToCode(a,"DO");d=$.Blockly.PHP.addLoopTrap(d,a);return"foreach ("+c+" as "+b+") {\n"+d+"}\n"};
71
- $.Blockly.PHP.controls_flow_statements=function(a){var b="";$.Blockly.PHP.STATEMENT_PREFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));$.Blockly.PHP.STATEMENT_SUFFIX&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a));if($.Blockly.PHP.STATEMENT_PREFIX){var c=a.getSurroundLoop();c&&!c.suppressPrefixSuffix&&(b+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement.");
72
- };var module$exports$Blockly$PHP$logic={};
73
- $.Blockly.PHP.controls_if=function(a){var b=0,c="";$.Blockly.PHP.STATEMENT_PREFIX&&(c+=$.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_PREFIX,a));do{var d=$.Blockly.PHP.valueToCode(a,"IF"+b,$.Blockly.PHP.ORDER_NONE)||"false";var e=$.Blockly.PHP.statementToCode(a,"DO"+b);$.Blockly.PHP.STATEMENT_SUFFIX&&(e=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a),$.Blockly.PHP.INDENT)+e);c+=(0<b?" else ":"")+"if ("+d+") {\n"+e+"}";b++}while(a.getInput("IF"+b));if(a.getInput("ELSE")||
74
- $.Blockly.PHP.STATEMENT_SUFFIX)e=$.Blockly.PHP.statementToCode(a,"ELSE"),$.Blockly.PHP.STATEMENT_SUFFIX&&(e=$.Blockly.PHP.prefixLines($.Blockly.PHP.injectId($.Blockly.PHP.STATEMENT_SUFFIX,a),$.Blockly.PHP.INDENT)+e),c+=" else {\n"+e+"}";return c+"\n"};$.Blockly.PHP.controls_ifelse=$.Blockly.PHP.controls_if;
75
- $.Blockly.PHP.logic_compare=function(a){var b={EQ:"==",NEQ:"!=",LT:"<",LTE:"<=",GT:">",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?$.Blockly.PHP.ORDER_EQUALITY:$.Blockly.PHP.ORDER_RELATIONAL,d=$.Blockly.PHP.valueToCode(a,"A",c)||"0";a=$.Blockly.PHP.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]};
76
- $.Blockly.PHP.logic_operation=function(a){var b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?$.Blockly.PHP.ORDER_LOGICAL_AND:$.Blockly.PHP.ORDER_LOGICAL_OR,d=$.Blockly.PHP.valueToCode(a,"A",c);a=$.Blockly.PHP.valueToCode(a,"B",c);if(d||a){var e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};$.Blockly.PHP.logic_negate=function(a){var b=$.Blockly.PHP.ORDER_LOGICAL_NOT;return["!"+($.Blockly.PHP.valueToCode(a,"BOOL",b)||"true"),b]};
77
- $.Blockly.PHP.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.logic_null=function(a){return["null",$.Blockly.PHP.ORDER_ATOMIC]};
78
- $.Blockly.PHP.logic_ternary=function(a){var b=$.Blockly.PHP.valueToCode(a,"IF",$.Blockly.PHP.ORDER_CONDITIONAL)||"false",c=$.Blockly.PHP.valueToCode(a,"THEN",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";a=$.Blockly.PHP.valueToCode(a,"ELSE",$.Blockly.PHP.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,$.Blockly.PHP.ORDER_CONDITIONAL]};var module$exports$Blockly$PHP$lists={};$.Blockly.PHP.lists_create_empty=function(a){return["array()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_create_with=function(a){for(var b=Array(a.itemCount_),c=0;c<a.itemCount_;c++)b[c]=$.Blockly.PHP.valueToCode(a,"ADD"+c,$.Blockly.PHP.ORDER_NONE)||"null";b="array("+b.join(", ")+")";return[b,$.Blockly.PHP.ORDER_FUNCTION_CALL]};
79
- $.Blockly.PHP.lists_repeat=function(a){var b=$.Blockly.PHP.provideFunction_("lists_repeat","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($value, $count) {\n $array = array();\n for ($index = 0; $index < $count; $index++) {\n $array[] = $value;\n }\n return $array;\n}\n"),c=$.Blockly.PHP.valueToCode(a,"ITEM",$.Blockly.PHP.ORDER_NONE)||"null";a=$.Blockly.PHP.valueToCode(a,"NUM",$.Blockly.PHP.ORDER_NONE)||"0";return[b+"("+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
80
- $.Blockly.PHP.lists_length=function(a){var b=$.Blockly.PHP.provideFunction_("length","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($value) {\n if (is_string($value)) {\n return strlen($value);\n } else {\n return count($value);\n }\n}\n");a=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"''";return[b+"("+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
81
- $.Blockly.PHP.lists_isEmpty=function(a){return["empty("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_FUNCTION_CALL)||"array()")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
82
- $.Blockly.PHP.lists_indexOf=function(a){var b=$.Blockly.PHP.valueToCode(a,"FIND",$.Blockly.PHP.ORDER_NONE)||"''",c=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_MEMBER)||"[]",d=" -1",e="";a.workspace.options.oneBasedIndex&&(d=" 0",e=" + 1");return[("FIRST"===a.getFieldValue("END")?$.Blockly.PHP.provideFunction_("indexOf","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($haystack, $needle) {\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) return $index"+
83
- e+";\n }\n return "+d+";\n}\n"):$.Blockly.PHP.provideFunction_("lastIndexOf","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($haystack, $needle) {\n $last = "+d+";\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) $last = $index"+e+";\n }\n return $last;\n}\n"))+"("+c+", "+b+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
84
- $.Blockly.PHP.lists_getIndex=function(a){var b=a.getFieldValue("MODE")||"GET";switch(a.getFieldValue("WHERE")||"FROM_START"){case "FIRST":if("GET"===b)return[($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_MEMBER)||"array()")+"[0]",$.Blockly.PHP.ORDER_MEMBER];if("GET_REMOVE"===b)return["array_shift("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("REMOVE"===b)return"array_shift("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||
85
- "array()")+");\n";break;case "LAST":if("GET"===b)return["end("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("GET_REMOVE"===b)return["array_pop("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("REMOVE"===b)return"array_pop("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()")+");\n";break;case "FROM_START":var c=$.Blockly.PHP.getAdjusted(a,
86
- "AT");if("GET"===b)return[($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_MEMBER)||"array()")+"["+c+"]",$.Blockly.PHP.ORDER_MEMBER];if("GET_REMOVE"===b)return["array_splice("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()")+", "+c+", 1)[0]",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("REMOVE"===b)return"array_splice("+($.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()")+", "+c+", 1);\n";break;case "FROM_END":if("GET"===b)return b=$.Blockly.PHP.valueToCode(a,
87
- "VALUE",$.Blockly.PHP.ORDER_NONE)||"array()",a=$.Blockly.PHP.getAdjusted(a,"AT",1,!0),["array_slice("+b+", "+a+", 1)[0]",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("GET_REMOVE"===b||"REMOVE"===b){c=$.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()";a=$.Blockly.PHP.getAdjusted(a,"AT",1,!1,$.Blockly.PHP.ORDER_SUBTRACTION);a="array_splice("+c+", count("+c+") - "+a+", 1)[0]";if("GET_REMOVE"===b)return[a,$.Blockly.PHP.ORDER_FUNCTION_CALL];if("REMOVE"===b)return a+";\n"}break;case "RANDOM":a=
88
- $.Blockly.PHP.valueToCode(a,"VALUE",$.Blockly.PHP.ORDER_NONE)||"array()";if("GET"===b)return[$.Blockly.PHP.provideFunction_("lists_get_random_item","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list) {\n return $list[rand(0,count($list)-1)];\n}\n")+"("+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("GET_REMOVE"===b)return[$.Blockly.PHP.provideFunction_("lists_get_remove_random_item","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"(&$list) {\n $x = rand(0,count($list)-1);\n unset($list[$x]);\n return array_values($list);\n}\n")+
89
- "("+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL];if("REMOVE"===b)return $.Blockly.PHP.provideFunction_("lists_remove_random_item","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"(&$list) {\n unset($list[rand(0,count($list)-1)]);\n}\n")+"("+a+");\n"}throw Error("Unhandled combination (lists_getIndex).");};
90
- $.Blockly.PHP.lists_setIndex=function(a){var b=a.getFieldValue("MODE")||"GET",c=a.getFieldValue("WHERE")||"FROM_START",d=$.Blockly.PHP.valueToCode(a,"TO",$.Blockly.PHP.ORDER_ASSIGNMENT)||"null";switch(c){case "FIRST":if("SET"===b)return($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_MEMBER)||"array()")+"[0] = "+d+";\n";if("INSERT"===b)return"array_unshift("+($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()")+", "+d+");\n";break;case "LAST":a=$.Blockly.PHP.valueToCode(a,
91
- "LIST",$.Blockly.PHP.ORDER_NONE)||"array()";if("SET"===b)return $.Blockly.PHP.provideFunction_("lists_set_last_item","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"(&$list, $value) {\n $list[count($list) - 1] = $value;\n}\n")+"("+a+", "+d+");\n";if("INSERT"===b)return"array_push("+a+", "+d+");\n";break;case "FROM_START":c=$.Blockly.PHP.getAdjusted(a,"AT");if("SET"===b)return($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_MEMBER)||"array()")+"["+c+"] = "+d+";\n";if("INSERT"===b)return"array_splice("+
92
- ($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()")+", "+c+", 0, "+d+");\n";break;case "FROM_END":c=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()";a=$.Blockly.PHP.getAdjusted(a,"AT",1);if("SET"===b)return $.Blockly.PHP.provideFunction_("lists_set_from_end","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"(&$list, $at, $value) {\n $list[count($list) - $at] = $value;\n}\n")+"("+c+", "+a+", "+d+");\n";if("INSERT"===b)return $.Blockly.PHP.provideFunction_("lists_insert_from_end",
93
- "\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"(&$list, $at, $value) {\n return array_splice($list, count($list) - $at, 0, $value);\n}\n")+"("+c+", "+a+", "+d+");\n";break;case "RANDOM":a=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_REFERENCE)||"array()";if(a.match(/^\$\w+$/))c="";else{c=$.Blockly.PHP.nameDB_.getDistinctName("tmp_list",$.module$exports$Blockly$Names.NameType.VARIABLE);var e=c+" = &"+a+";\n";a=c;c=e}e=$.Blockly.PHP.nameDB_.getDistinctName("tmp_x",$.module$exports$Blockly$Names.NameType.VARIABLE);
94
- c+=e+" = rand(0, count("+a+")-1);\n";if("SET"===b)return c+(a+"["+e+"] = "+d+";\n");if("INSERT"===b)return c+("array_splice("+a+", "+e+", 0, "+d+");\n")}throw Error("Unhandled combination (lists_setIndex).");};
95
- $.Blockly.PHP.lists_getSublist=function(a){var b=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()",c=a.getFieldValue("WHERE1"),d=a.getFieldValue("WHERE2");if("FIRST"!==c||"LAST"!==d)if(b.match(/^\$\w+$/)||"FROM_END"!==c&&"FROM_START"===d){switch(c){case "FROM_START":c=$.Blockly.PHP.getAdjusted(a,"AT1");break;case "FROM_END":c=$.Blockly.PHP.getAdjusted(a,"AT1",1,!1,$.Blockly.PHP.ORDER_SUBTRACTION);c="count("+b+") - "+c;break;case "FIRST":c="0";break;default:throw Error("Unhandled option (lists_getSublist).");
96
- }switch(d){case "FROM_START":d=$.Blockly.PHP.getAdjusted(a,"AT2",0,!1,$.Blockly.PHP.ORDER_SUBTRACTION);d+=" - ";d=(0,$.module$exports$Blockly$utils$string.isNumber)(String(c))||String(c).match(/^\(.+\)$/)?d+c:d+("("+c+")");d+=" + 1";break;case "FROM_END":d=$.Blockly.PHP.getAdjusted(a,"AT2",0,!1,$.Blockly.PHP.ORDER_SUBTRACTION);d="count("+b+") - "+d+" - ";d=(0,$.module$exports$Blockly$utils$string.isNumber)(String(c))||String(c).match(/^\(.+\)$/)?d+c:d+("("+c+")");break;case "LAST":d="count("+b+") - ";
97
- d=(0,$.module$exports$Blockly$utils$string.isNumber)(String(c))||String(c).match(/^\(.+\)$/)?d+c:d+("("+c+")");break;default:throw Error("Unhandled option (lists_getSublist).");}b="array_slice("+b+", "+c+", "+d+")"}else{var e=$.Blockly.PHP.getAdjusted(a,"AT1");a=$.Blockly.PHP.getAdjusted(a,"AT2");b=$.Blockly.PHP.provideFunction_("lists_get_sublist","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = count($list) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = count($list) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = count($list) - $at1;\n } else {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n return array_slice($list, $at1, $length);\n}\n")+
98
- "("+b+", '"+c+"', "+e+", '"+d+"', "+a+")"}return[b,$.Blockly.PHP.ORDER_FUNCTION_CALL]};
99
- $.Blockly.PHP.lists_sort=function(a){var b=$.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"array()",c="1"===a.getFieldValue("DIRECTION")?1:-1;a=a.getFieldValue("TYPE");return[$.Blockly.PHP.provideFunction_("lists_sort","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($list, $type, $direction) {\n $sortCmpFuncs = array(\n 'NUMERIC' => 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n")+"("+
100
- b+', "'+a+'", '+c+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};$.Blockly.PHP.lists_split=function(a){var b=$.Blockly.PHP.valueToCode(a,"INPUT",$.Blockly.PHP.ORDER_NONE),c=$.Blockly.PHP.valueToCode(a,"DELIM",$.Blockly.PHP.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="explode";else if("JOIN"===a)b||(b="array()"),a="implode";else throw Error("Unknown mode: "+a);return[a+"("+c+", "+b+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
101
- $.Blockly.PHP.lists_reverse=function(a){return["array_reverse("+($.Blockly.PHP.valueToCode(a,"LIST",$.Blockly.PHP.ORDER_NONE)||"[]")+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$colour={};$.Blockly.PHP.colour_picker=function(a){return[$.Blockly.PHP.quote_(a.getFieldValue("COLOUR")),$.Blockly.PHP.ORDER_ATOMIC]};$.Blockly.PHP.colour_random=function(a){return[$.Blockly.PHP.provideFunction_("colour_random","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"() {\n return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);\n}\n")+"()",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
102
- $.Blockly.PHP.colour_rgb=function(a){var b=$.Blockly.PHP.valueToCode(a,"RED",$.Blockly.PHP.ORDER_NONE)||0,c=$.Blockly.PHP.valueToCode(a,"GREEN",$.Blockly.PHP.ORDER_NONE)||0;a=$.Blockly.PHP.valueToCode(a,"BLUE",$.Blockly.PHP.ORDER_NONE)||0;return[$.Blockly.PHP.provideFunction_("colour_rgb","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($r, $g, $b) {\n $r = round(max(min($r, 100), 0) * 2.55);\n $g = round(max(min($g, 100), 0) * 2.55);\n $b = round(max(min($b, 100), 0) * 2.55);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+
103
- "("+b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};
104
- $.Blockly.PHP.colour_blend=function(a){var b=$.Blockly.PHP.valueToCode(a,"COLOUR1",$.Blockly.PHP.ORDER_NONE)||"'#000000'",c=$.Blockly.PHP.valueToCode(a,"COLOUR2",$.Blockly.PHP.ORDER_NONE)||"'#000000'";a=$.Blockly.PHP.valueToCode(a,"RATIO",$.Blockly.PHP.ORDER_NONE)||.5;return[$.Blockly.PHP.provideFunction_("colour_blend","\nfunction "+$.Blockly.PHP.FUNCTION_NAME_PLACEHOLDER_+"($c1, $c2, $ratio) {\n $ratio = max(min($ratio, 1), 0);\n $r1 = hexdec(substr($c1, 1, 2));\n $g1 = hexdec(substr($c1, 3, 2));\n $b1 = hexdec(substr($c1, 5, 2));\n $r2 = hexdec(substr($c2, 1, 2));\n $g2 = hexdec(substr($c2, 3, 2));\n $b2 = hexdec(substr($c2, 5, 2));\n $r = round($r1 * (1 - $ratio) + $r2 * $ratio);\n $g = round($g1 * (1 - $ratio) + $g2 * $ratio);\n $b = round($b1 * (1 - $ratio) + $b2 * $ratio);\n $hex = '#';\n $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);\n $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);\n return $hex;\n}\n")+"("+
105
- b+", "+c+", "+a+")",$.Blockly.PHP.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$all={};
106
- $.Blockly.PHP.__namespace__=$;
107
- return $.Blockly.PHP;
30
+ module$exports$Blockly$PHP.phpGenerator.getAdjusted=function(a,b,c,d,e){c=c||0;e=e||this.ORDER_NONE;a.workspace.options.oneBasedIndex&&c--;let f=a.workspace.options.oneBasedIndex?"1":"0",g=e,h;0<c?h=g=this.ORDER_ADDITION:0>c?h=g=this.ORDER_SUBTRACTION:d&&(h=g=this.ORDER_UNARY_NEGATION);a=this.valueToCode(a,b,g)||f;$.module$build$src$core$utils$string.isNumber(a)?(a=Number(a)+c,d&&(a=-a)):(0<c?a=a+" + "+c:0>c&&(a=a+" - "+-c),d&&(a=c?"-("+a+")":"-"+a),h=Math.floor(h),e=Math.floor(e),h&&e>=h&&(a="("+
31
+ a+")"));return a};var module$exports$Blockly$PHP$variables={},module$contents$Blockly$PHP$variables_NameType=$.NameType$$module$build$src$core$names;module$exports$Blockly$PHP.phpGenerator.variables_get=function(a){return[module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("VAR"),$.NameType$$module$build$src$core$names.VARIABLE),module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC]};
32
+ module$exports$Blockly$PHP.phpGenerator.variables_set=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"0";return module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("VAR"),$.NameType$$module$build$src$core$names.VARIABLE)+" = "+b+";\n"};var module$exports$Blockly$PHP$variablesDynamic={};module$exports$Blockly$PHP.phpGenerator.variables_get_dynamic=module$exports$Blockly$PHP.phpGenerator.variables_get;module$exports$Blockly$PHP.phpGenerator.variables_set_dynamic=module$exports$Blockly$PHP.phpGenerator.variables_set;var module$exports$Blockly$PHP$texts={},module$contents$Blockly$PHP$texts_NameType=$.NameType$$module$build$src$core$names;module$exports$Blockly$PHP.phpGenerator.text=function(a){return[module$exports$Blockly$PHP.phpGenerator.quote_(a.getFieldValue("TEXT")),module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC]};
33
+ module$exports$Blockly$PHP.phpGenerator.text_multiline=function(a){a=module$exports$Blockly$PHP.phpGenerator.multiline_quote_(a.getFieldValue("TEXT"));const b=-1!==a.indexOf(".")?module$exports$Blockly$PHP.phpGenerator.ORDER_STRING_CONCAT:module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC;return[a,b]};
34
+ module$exports$Blockly$PHP.phpGenerator.text_join=function(a){if(0===a.itemCount_)return["''",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC];if(1===a.itemCount_)return[module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ADD0",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE];if(2===a.itemCount_){var b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ADD0",module$exports$Blockly$PHP.phpGenerator.ORDER_STRING_CONCAT)||"''";
35
+ a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ADD1",module$exports$Blockly$PHP.phpGenerator.ORDER_STRING_CONCAT)||"''";return[b+" . "+a,module$exports$Blockly$PHP.phpGenerator.ORDER_STRING_CONCAT]}b=Array(a.itemCount_);for(let c=0;c<a.itemCount_;c++)b[c]=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ADD"+c,module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";return["implode('', array("+b.join(",")+"))",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
36
+ module$exports$Blockly$PHP.phpGenerator.text_append=function(a){const b=module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("VAR"),$.NameType$$module$build$src$core$names.VARIABLE);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"''";return b+" .= "+a+";\n"};module$exports$Blockly$PHP.phpGenerator.text_length=function(a){const b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("length",`
37
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($value) {
38
+ if (is_string($value)) {
39
+ return strlen($value);
40
+ }
41
+ return count($value);
42
+ }
43
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";return[b+"("+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.text_isEmpty=function(a){return["empty("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
44
+ module$exports$Blockly$PHP.phpGenerator.text_indexOf=function(a){const b="FIRST"===a.getFieldValue("END")?"strpos":"strrpos",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"FIND",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''",d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";let e=" -1",f="";a.workspace.options.oneBasedIndex&&(e=" 0",f=" + 1");return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("FIRST"===
45
+ a.getFieldValue("END")?"text_indexOf":"text_lastIndexOf",`
46
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($text, $search) {
47
+ $pos = ${b}($text, $search);
48
+ return $pos === false ? ${e} : $pos${f};
49
+ }
50
+ `)+"("+d+", "+c+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
51
+ module$exports$Blockly$PHP.phpGenerator.text_charAt=function(a){const b=a.getFieldValue("WHERE")||"FROM_START",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";switch(b){case "FIRST":return["substr("+c+", 0, 1)",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];case "LAST":return["substr("+c+", -1)",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];case "FROM_START":return a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,
52
+ "AT"),["substr("+c+", "+a+", 1)",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];case "FROM_END":return a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT",1,!0),["substr("+c+", "+a+", 1)",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];case "RANDOM":return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("text_random_letter",`
53
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($text) {
54
+ return $text[rand(0, strlen($text) - 1)];
55
+ }
56
+ `)+"("+c+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]}throw Error("Unhandled option (text_charAt).");};
57
+ module$exports$Blockly$PHP.phpGenerator.text_getSubstring=function(a){const b=a.getFieldValue("WHERE1"),c=a.getFieldValue("WHERE2"),d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"STRING",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";if("FIRST"===b&&"LAST"===c)return[d,module$exports$Blockly$PHP.phpGenerator.ORDER_NONE];const e=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT1");a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT2");return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("text_get_substring",
58
+ `
59
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($text, $where1, $at1, $where2, $at2) {
60
+ if ($where1 == 'FROM_END') {
61
+ $at1 = strlen($text) - 1 - $at1;
62
+ } else if ($where1 == 'FIRST') {
63
+ $at1 = 0;
64
+ } else if ($where1 != 'FROM_START') {
65
+ throw new Exception('Unhandled option (text_get_substring).');
66
+ }
67
+ $length = 0;
68
+ if ($where2 == 'FROM_START') {
69
+ $length = $at2 - $at1 + 1;
70
+ } else if ($where2 == 'FROM_END') {
71
+ $length = strlen($text) - $at1 - $at2;
72
+ } else if ($where2 == 'LAST') {
73
+ $length = strlen($text) - $at1;
74
+ } else {
75
+ throw new Exception('Unhandled option (text_get_substring).');
76
+ }
77
+ return substr($text, $at1, $length);
78
+ }
79
+ `)+"("+d+", '"+b+"', "+e+", '"+c+"', "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
80
+ module$exports$Blockly$PHP.phpGenerator.text_changeCase=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";let c;"UPPERCASE"===a.getFieldValue("CASE")?c="strtoupper("+b+")":"LOWERCASE"===a.getFieldValue("CASE")?c="strtolower("+b+")":"TITLECASE"===a.getFieldValue("CASE")&&(c="ucwords(strtolower("+b+"))");return[c,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
81
+ module$exports$Blockly$PHP.phpGenerator.text_trim=function(a){const b={LEFT:"ltrim",RIGHT:"rtrim",BOTH:"trim"}[a.getFieldValue("MODE")];a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";return[b+"("+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
82
+ module$exports$Blockly$PHP.phpGenerator.text_print=function(a){return"print("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''")+");\n"};
83
+ module$exports$Blockly$PHP.phpGenerator.text_prompt_ext=function(a){let b="readline("+(a.getField("TEXT")?module$exports$Blockly$PHP.phpGenerator.quote_(a.getFieldValue("TEXT")):module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''")+")";"NUMBER"===a.getFieldValue("TYPE")&&(b="floatval("+b+")");return[b,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.text_prompt=module$exports$Blockly$PHP.phpGenerator.text_prompt_ext;
84
+ module$exports$Blockly$PHP.phpGenerator.text_count=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"SUB",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";return["strlen("+a+") === 0 ? strlen("+b+") + 1 : substr_count("+b+", "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_CONDITIONAL]};
85
+ module$exports$Blockly$PHP.phpGenerator.text_replace=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"FROM",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TO",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";return["str_replace("+c+", "+a+", "+b+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
86
+ module$exports$Blockly$PHP.phpGenerator.text_reverse=function(a){return["strrev("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TEXT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$procedures={},module$contents$Blockly$PHP$procedures_Variables=$.module$build$src$core$variables,module$contents$Blockly$PHP$procedures_NameType=$.NameType$$module$build$src$core$names;
87
+ module$exports$Blockly$PHP.phpGenerator.procedures_defreturn=function(a){var b=[],c=a.workspace,d=$.module$build$src$core$variables.allUsedVarModels(c)||[];for(let m=0,n;n=d[m];m++){var e=n.name;-1===a.getVars().indexOf(e)&&b.push(module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(e,$.NameType$$module$build$src$core$names.VARIABLE))}c=$.module$build$src$core$variables.allDeveloperVariables(c);for(d=0;d<c.length;d++)b.push(module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(c[d],$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE));
88
+ c=b.length?module$exports$Blockly$PHP.phpGenerator.INDENT+"global "+b.join(", ")+";\n":"";b=module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("NAME"),$.NameType$$module$build$src$core$names.PROCEDURE);d="";module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX&&(d+=module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX,a));module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX&&(d+=module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX,
89
+ a));d&&(d=module$exports$Blockly$PHP.phpGenerator.prefixLines(d,module$exports$Blockly$PHP.phpGenerator.INDENT));e="";module$exports$Blockly$PHP.phpGenerator.INFINITE_LOOP_TRAP&&(e=module$exports$Blockly$PHP.phpGenerator.prefixLines(module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.INFINITE_LOOP_TRAP,a),module$exports$Blockly$PHP.phpGenerator.INDENT));const f=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"STACK");let g=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,
90
+ "RETURN",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"",h="";f&&g&&(h=d);g&&(g=module$exports$Blockly$PHP.phpGenerator.INDENT+"return "+g+";\n");const k=[],l=a.getVars();for(let m=0;m<l.length;m++)k[m]=module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(l[m],$.NameType$$module$build$src$core$names.VARIABLE);c="function "+b+"("+k.join(", ")+") {\n"+c+d+e+f+h+g+"}";c=module$exports$Blockly$PHP.phpGenerator.scrub_(a,c);module$exports$Blockly$PHP.phpGenerator.definitions_["%"+b]=c;return null};
91
+ module$exports$Blockly$PHP.phpGenerator.procedures_defnoreturn=module$exports$Blockly$PHP.phpGenerator.procedures_defreturn;
92
+ module$exports$Blockly$PHP.phpGenerator.procedures_callreturn=function(a){const b=module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("NAME"),$.NameType$$module$build$src$core$names.PROCEDURE),c=[],d=a.getVars();for(let e=0;e<d.length;e++)c[e]=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ARG"+e,module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"null";return[b+"("+c.join(", ")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
93
+ module$exports$Blockly$PHP.phpGenerator.procedures_callnoreturn=function(a){return module$exports$Blockly$PHP.phpGenerator.procedures_callreturn(a)[0]+";\n"};
94
+ module$exports$Blockly$PHP.phpGenerator.procedures_ifreturn=function(a){let b="if ("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"CONDITION",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"false")+") {\n";module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX&&(b+=module$exports$Blockly$PHP.phpGenerator.prefixLines(module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX,a),module$exports$Blockly$PHP.phpGenerator.INDENT));a.hasReturnValue_?
95
+ (a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"null",b+=module$exports$Blockly$PHP.phpGenerator.INDENT+"return "+a+";\n"):b+=module$exports$Blockly$PHP.phpGenerator.INDENT+"return;\n";return b+"}\n"};var module$exports$Blockly$PHP$math={},module$contents$Blockly$PHP$math_NameType=$.NameType$$module$build$src$core$names;module$exports$Blockly$PHP.phpGenerator.math_number=function(a){a=Number(a.getFieldValue("NUM"));const b=0<=a?module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC:module$exports$Blockly$PHP.phpGenerator.ORDER_UNARY_NEGATION;Infinity===a?a="INF":-Infinity===a&&(a="-INF");return[a,b]};
96
+ module$exports$Blockly$PHP.phpGenerator.math_arithmetic=function(a){var b={ADD:[" + ",module$exports$Blockly$PHP.phpGenerator.ORDER_ADDITION],MINUS:[" - ",module$exports$Blockly$PHP.phpGenerator.ORDER_SUBTRACTION],MULTIPLY:[" * ",module$exports$Blockly$PHP.phpGenerator.ORDER_MULTIPLICATION],DIVIDE:[" / ",module$exports$Blockly$PHP.phpGenerator.ORDER_DIVISION],POWER:[" ** ",module$exports$Blockly$PHP.phpGenerator.ORDER_POWER]}[a.getFieldValue("OP")];const c=b[0];b=b[1];const d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,
97
+ "A",b)||"0";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"B",b)||"0";return[d+c+a,b]};
98
+ module$exports$Blockly$PHP.phpGenerator.math_single=function(a){const b=a.getFieldValue("OP");let c;if("NEG"===b)return a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"NUM",module$exports$Blockly$PHP.phpGenerator.ORDER_UNARY_NEGATION)||"0","-"===a[0]&&(a=" "+a),["-"+a,module$exports$Blockly$PHP.phpGenerator.ORDER_UNARY_NEGATION];a="SIN"===b||"COS"===b||"TAN"===b?module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"NUM",module$exports$Blockly$PHP.phpGenerator.ORDER_DIVISION)||"0":module$exports$Blockly$PHP.phpGenerator.valueToCode(a,
99
+ "NUM",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0";switch(b){case "ABS":c="abs("+a+")";break;case "ROOT":c="sqrt("+a+")";break;case "LN":c="log("+a+")";break;case "EXP":c="exp("+a+")";break;case "POW10":c="pow(10,"+a+")";break;case "ROUND":c="round("+a+")";break;case "ROUNDUP":c="ceil("+a+")";break;case "ROUNDDOWN":c="floor("+a+")";break;case "SIN":c="sin("+a+" / 180 * pi())";break;case "COS":c="cos("+a+" / 180 * pi())";break;case "TAN":c="tan("+a+" / 180 * pi())"}if(c)return[c,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];
100
+ switch(b){case "LOG10":c="log("+a+") / log(10)";break;case "ASIN":c="asin("+a+") / pi() * 180";break;case "ACOS":c="acos("+a+") / pi() * 180";break;case "ATAN":c="atan("+a+") / pi() * 180";break;default:throw Error("Unknown math operator: "+b);}return[c,module$exports$Blockly$PHP.phpGenerator.ORDER_DIVISION]};
101
+ module$exports$Blockly$PHP.phpGenerator.math_constant=function(a){return{PI:["M_PI",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC],E:["M_E",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC],GOLDEN_RATIO:["(1 + sqrt(5)) / 2",module$exports$Blockly$PHP.phpGenerator.ORDER_DIVISION],SQRT2:["M_SQRT2",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC],SQRT1_2:["M_SQRT1_2",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC],INFINITY:["INF",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC]}[a.getFieldValue("CONSTANT")]};
102
+ module$exports$Blockly$PHP.phpGenerator.math_number_property=function(a){var b={EVEN:[""," % 2 == 0",module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS,module$exports$Blockly$PHP.phpGenerator.ORDER_EQUALITY],ODD:[""," % 2 == 1",module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS,module$exports$Blockly$PHP.phpGenerator.ORDER_EQUALITY],WHOLE:["is_int(",")",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL],POSITIVE:[""," > 0",module$exports$Blockly$PHP.phpGenerator.ORDER_RELATIONAL,
103
+ module$exports$Blockly$PHP.phpGenerator.ORDER_RELATIONAL],NEGATIVE:[""," < 0",module$exports$Blockly$PHP.phpGenerator.ORDER_RELATIONAL,module$exports$Blockly$PHP.phpGenerator.ORDER_RELATIONAL],DIVISIBLE_BY:[null,null,module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS,module$exports$Blockly$PHP.phpGenerator.ORDER_EQUALITY],PRIME:[null,null,module$exports$Blockly$PHP.phpGenerator.ORDER_NONE,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};const c=a.getFieldValue("PROPERTY"),[d,e,f,g]=
104
+ b[c];b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"NUMBER_TO_CHECK",f)||"0";if("PRIME"===c)a=module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_isPrime",`
105
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($n) {
106
+ // https://en.wikipedia.org/wiki/Primality_test#Naive_methods
107
+ if ($n == 2 || $n == 3) {
108
+ return true;
109
+ }
110
+ // False if n is NaN, negative, is 1, or not whole.
111
+ // And false if n is divisible by 2 or 3.
112
+ if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {
113
+ return false;
114
+ }
115
+ // Check all the numbers of form 6k +/- 1, up to sqrt(n).
116
+ for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {
117
+ if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {
118
+ return false;
119
+ }
120
+ }
121
+ return true;
122
+ }
123
+ `)+"("+b+")";else if("DIVISIBLE_BY"===c){a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"DIVISOR",module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS)||"0";if("0"===a)return["false",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC];a=b+" % "+a+" == 0"}else a=d+b+e;return[a,g]};
124
+ module$exports$Blockly$PHP.phpGenerator.math_change=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"DELTA",module$exports$Blockly$PHP.phpGenerator.ORDER_ADDITION)||"0";return module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("VAR"),$.NameType$$module$build$src$core$names.VARIABLE)+" += "+b+";\n"};module$exports$Blockly$PHP.phpGenerator.math_round=module$exports$Blockly$PHP.phpGenerator.math_single;module$exports$Blockly$PHP.phpGenerator.math_trig=module$exports$Blockly$PHP.phpGenerator.math_single;
125
+ module$exports$Blockly$PHP.phpGenerator.math_on_list=function(a){var b=a.getFieldValue("OP");switch(b){case "SUM":a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL)||"array()";a="array_sum("+a+")";break;case "MIN":a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL)||"array()";a="min("+a+")";break;case "MAX":a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,
126
+ "LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL)||"array()";a="max("+a+")";break;case "AVERAGE":b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_mean",`
127
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($myList) {
128
+ return array_sum($myList) / count($myList);
129
+ }
130
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()";a=b+"("+a+")";break;case "MEDIAN":b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_median",`
131
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($arr) {
132
+ sort($arr,SORT_NUMERIC);
133
+ return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :
134
+ ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;
135
+ }
136
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "MODE":b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_modes",`
137
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($values) {
138
+ if (empty($values)) return array();
139
+ $counts = array_count_values($values);
140
+ arsort($counts); // Sort counts in descending order
141
+ $modes = array_keys($counts, current($counts), true);
142
+ return $modes;
143
+ }
144
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "STD_DEV":b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_standard_deviation",`
145
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($numbers) {
146
+ $n = count($numbers);
147
+ if (!$n) return null;
148
+ $mean = array_sum($numbers) / count($numbers);
149
+ foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);
150
+ return sqrt(array_sum($devs) / (count($devs) - 1));
151
+ }
152
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"[]";a=b+"("+a+")";break;case "RANDOM":b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_random_list",`
153
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($list) {
154
+ $x = rand(0, count($list)-1);
155
+ return $list[$x];
156
+ }
157
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"[]";a=b+"("+a+")";break;default:throw Error("Unknown operator: "+b);}return[a,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
158
+ module$exports$Blockly$PHP.phpGenerator.math_modulo=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"DIVIDEND",module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS)||"0";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"DIVISOR",module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS)||"0";return[b+" % "+a,module$exports$Blockly$PHP.phpGenerator.ORDER_MODULUS]};
159
+ module$exports$Blockly$PHP.phpGenerator.math_constrain=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LOW",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"HIGH",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"Infinity";return["min(max("+b+", "+c+"), "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
160
+ module$exports$Blockly$PHP.phpGenerator.math_random_int=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"FROM",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TO",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0";return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("math_random_int",`
161
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($a, $b) {
162
+ if ($a > $b) {
163
+ return rand($b, $a);
164
+ }
165
+ return rand($a, $b);
166
+ }
167
+ `)+"("+b+", "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.math_random_float=function(a){return["(float)rand()/(float)getrandmax()",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
168
+ module$exports$Blockly$PHP.phpGenerator.math_atan2=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"X",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0";return["atan2("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"Y",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0")+", "+b+") / pi() * 180",module$exports$Blockly$PHP.phpGenerator.ORDER_DIVISION]};var module$exports$Blockly$PHP$loops={},module$contents$Blockly$PHP$loops_stringUtils=$.module$build$src$core$utils$string,module$contents$Blockly$PHP$loops_NameType=$.NameType$$module$build$src$core$names;
169
+ module$exports$Blockly$PHP.phpGenerator.controls_repeat_ext=function(a){let b;b=a.getField("TIMES")?String(Number(a.getFieldValue("TIMES"))):module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TIMES",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"0";let c=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"DO");c=module$exports$Blockly$PHP.phpGenerator.addLoopTrap(c,a);a="";const d=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName("count",$.NameType$$module$build$src$core$names.VARIABLE);
170
+ let e=b;b.match(/^\w+$/)||$.module$build$src$core$utils$string.isNumber(b)||(e=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName("repeat_end",$.NameType$$module$build$src$core$names.VARIABLE),a+=e+" = "+b+";\n");return a+("for ("+d+" = 0; "+d+" < "+e+"; "+d+"++) {\n"+c+"}\n")};module$exports$Blockly$PHP.phpGenerator.controls_repeat=module$exports$Blockly$PHP.phpGenerator.controls_repeat_ext;
171
+ module$exports$Blockly$PHP.phpGenerator.controls_whileUntil=function(a){const b="UNTIL"===a.getFieldValue("MODE");let c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"BOOL",b?module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_NOT:module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"false",d=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"DO");d=module$exports$Blockly$PHP.phpGenerator.addLoopTrap(d,a);b&&(c="!"+c);return"while ("+c+") {\n"+d+"}\n"};
172
+ module$exports$Blockly$PHP.phpGenerator.controls_for=function(a){var b=module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("VAR"),$.NameType$$module$build$src$core$names.VARIABLE),c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"FROM",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"0",d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TO",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"0";const e=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,
173
+ "BY",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"1";let f=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"DO");f=module$exports$Blockly$PHP.phpGenerator.addLoopTrap(f,a);if($.module$build$src$core$utils$string.isNumber(c)&&$.module$build$src$core$utils$string.isNumber(d)&&$.module$build$src$core$utils$string.isNumber(e)){var g=Number(c)<=Number(d);a="for ("+b+" = "+c+"; "+b+(g?" <= ":" >= ")+d+"; "+b;b=Math.abs(Number(e));a=1===b?a+(g?"++":"--"):a+((g?" += ":" -= ")+b);
174
+ a+=") {\n"+f+"}\n"}else a="",g=c,c.match(/^\w+$/)||$.module$build$src$core$utils$string.isNumber(c)||(g=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName(b+"_start",$.NameType$$module$build$src$core$names.VARIABLE),a+=g+" = "+c+";\n"),c=d,d.match(/^\w+$/)||$.module$build$src$core$utils$string.isNumber(d)||(c=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName(b+"_end",$.NameType$$module$build$src$core$names.VARIABLE),a+=c+" = "+d+";\n"),d=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName(b+
175
+ "_inc",$.NameType$$module$build$src$core$names.VARIABLE),a+=d+" = ",a=$.module$build$src$core$utils$string.isNumber(e)?a+(Math.abs(e)+";\n"):a+("abs("+e+");\n"),a+="if ("+g+" > "+c+") {\n",a+=module$exports$Blockly$PHP.phpGenerator.INDENT+d+" = -"+d+";\n",a=a+"}\nfor ("+(b+" = "+g+"; "+d+" >= 0 ? "+b+" <= "+c+" : "+b+" >= "+c+"; "+b+" += "+d+") {\n"+f+"}\n");return a};
176
+ module$exports$Blockly$PHP.phpGenerator.controls_forEach=function(a){const b=module$exports$Blockly$PHP.phpGenerator.nameDB_.getName(a.getFieldValue("VAR"),$.NameType$$module$build$src$core$names.VARIABLE),c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"[]";let d=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"DO");d=module$exports$Blockly$PHP.phpGenerator.addLoopTrap(d,a);return"foreach ("+c+" as "+b+") {\n"+d+
177
+ "}\n"};
178
+ module$exports$Blockly$PHP.phpGenerator.controls_flow_statements=function(a){let b="";module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX&&(b+=module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX,a));module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX&&(b+=module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX,a));if(module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX){const c=a.getSurroundLoop();
179
+ c&&!c.suppressPrefixSuffix&&(b+=module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX,c))}switch(a.getFieldValue("FLOW")){case "BREAK":return b+"break;\n";case "CONTINUE":return b+"continue;\n"}throw Error("Unknown flow statement.");};var module$exports$Blockly$PHP$logic={};
180
+ module$exports$Blockly$PHP.phpGenerator.controls_if=function(a){let b=0,c="",d,e;module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX&&(c+=module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_PREFIX,a));do e=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"IF"+b,module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"false",d=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"DO"+b),module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX&&(d=
181
+ module$exports$Blockly$PHP.phpGenerator.prefixLines(module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX,a),module$exports$Blockly$PHP.phpGenerator.INDENT)+d),c+=(0<b?" else ":"")+"if ("+e+") {\n"+d+"}",b++;while(a.getInput("IF"+b));if(a.getInput("ELSE")||module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX)d=module$exports$Blockly$PHP.phpGenerator.statementToCode(a,"ELSE"),module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX&&(d=module$exports$Blockly$PHP.phpGenerator.prefixLines(module$exports$Blockly$PHP.phpGenerator.injectId(module$exports$Blockly$PHP.phpGenerator.STATEMENT_SUFFIX,
182
+ a),module$exports$Blockly$PHP.phpGenerator.INDENT)+d),c+=" else {\n"+d+"}";return c+"\n"};module$exports$Blockly$PHP.phpGenerator.controls_ifelse=module$exports$Blockly$PHP.phpGenerator.controls_if;
183
+ module$exports$Blockly$PHP.phpGenerator.logic_compare=function(a){const b={EQ:"==",NEQ:"!=",LT:"<",LTE:"<=",GT:">",GTE:">="}[a.getFieldValue("OP")],c="=="===b||"!="===b?module$exports$Blockly$PHP.phpGenerator.ORDER_EQUALITY:module$exports$Blockly$PHP.phpGenerator.ORDER_RELATIONAL,d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"A",c)||"0";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]};
184
+ module$exports$Blockly$PHP.phpGenerator.logic_operation=function(a){const b="AND"===a.getFieldValue("OP")?"&&":"||",c="&&"===b?module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_AND:module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_OR;let d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"A",c);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"B",c);if(d||a){const e="&&"===b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};
185
+ module$exports$Blockly$PHP.phpGenerator.logic_negate=function(a){const b=module$exports$Blockly$PHP.phpGenerator.ORDER_LOGICAL_NOT;return["!"+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"BOOL",b)||"true"),b]};module$exports$Blockly$PHP.phpGenerator.logic_boolean=function(a){return["TRUE"===a.getFieldValue("BOOL")?"true":"false",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC]};module$exports$Blockly$PHP.phpGenerator.logic_null=function(a){return["null",module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC]};
186
+ module$exports$Blockly$PHP.phpGenerator.logic_ternary=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"IF",module$exports$Blockly$PHP.phpGenerator.ORDER_CONDITIONAL)||"false",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"THEN",module$exports$Blockly$PHP.phpGenerator.ORDER_CONDITIONAL)||"null";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ELSE",module$exports$Blockly$PHP.phpGenerator.ORDER_CONDITIONAL)||"null";return[b+" ? "+c+" : "+a,module$exports$Blockly$PHP.phpGenerator.ORDER_CONDITIONAL]};var module$exports$Blockly$PHP$lists={},module$contents$Blockly$PHP$lists_stringUtils=$.module$build$src$core$utils$string,module$contents$Blockly$PHP$lists_NameType=$.NameType$$module$build$src$core$names;module$exports$Blockly$PHP.phpGenerator.lists_create_empty=function(a){return["array()",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
187
+ module$exports$Blockly$PHP.phpGenerator.lists_create_with=function(a){let b=Array(a.itemCount_);for(let c=0;c<a.itemCount_;c++)b[c]=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ADD"+c,module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"null";b="array("+b.join(", ")+")";return[b,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.lists_repeat=function(a){const b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_repeat",`
188
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($value, $count) {
189
+ $array = array();
190
+ for ($index = 0; $index < $count; $index++) {
191
+ $array[] = $value;
192
+ }
193
+ return $array;
194
+ }
195
+ `),c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"ITEM",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"null";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"NUM",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"0";return[b+"("+c+", "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.lists_length=function(a){const b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("length",`
196
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($value) {
197
+ if (is_string($value)) {
198
+ return strlen($value);
199
+ } else {
200
+ return count($value);
201
+ }
202
+ }
203
+ `);a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";return[b+"("+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.lists_isEmpty=function(a){return["empty("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL)||"array()")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
204
+ module$exports$Blockly$PHP.phpGenerator.lists_indexOf=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"FIND",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER)||"[]";let d=" -1",e="";a.workspace.options.oneBasedIndex&&(d=" 0",e=" + 1");return[("FIRST"===a.getFieldValue("END")?module$exports$Blockly$PHP.phpGenerator.provideFunction_("indexOf",`
205
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {
206
+ for ($index = 0; $index < count($haystack); $index++) {
207
+ if ($haystack[$index] == $needle) return $index${e};
208
+ }
209
+ return ${d};
210
+ }
211
+ `):module$exports$Blockly$PHP.phpGenerator.provideFunction_("lastIndexOf",`
212
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {
213
+ $last = ${d};
214
+ for ($index = 0; $index < count($haystack); $index++) {
215
+ if ($haystack[$index] == $needle) $last = $index${e};
216
+ }
217
+ return $last;
218
+ }
219
+ `))+"("+c+", "+b+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
220
+ module$exports$Blockly$PHP.phpGenerator.lists_getIndex=function(a){var b=a.getFieldValue("MODE")||"GET";switch(a.getFieldValue("WHERE")||"FROM_START"){case "FIRST":if("GET"===b)return[(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER)||"array()")+"[0]",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER];if("GET_REMOVE"===b)return["array_shift("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||
221
+ "array()")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("REMOVE"===b)return"array_shift("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+");\n";break;case "LAST":if("GET"===b)return["end("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("GET_REMOVE"===
222
+ b)return["array_pop("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("REMOVE"===b)return"array_pop("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+");\n";break;case "FROM_START":var c=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT");if("GET"===b)return[(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,
223
+ "VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER)||"array()")+"["+c+"]",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER];if("GET_REMOVE"===b)return["array_splice("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+", "+c+", 1)[0]",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("REMOVE"===b)return"array_splice("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||
224
+ "array()")+", "+c+", 1);\n";break;case "FROM_END":if("GET"===b)return b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()",a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT",1,!0),["array_slice("+b+", "+a+", 1)[0]",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("GET_REMOVE"===b||"REMOVE"===b){c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||
225
+ "array()";a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT",1,!1,module$exports$Blockly$PHP.phpGenerator.ORDER_SUBTRACTION);a="array_splice("+c+", count("+c+") - "+a+", 1)[0]";if("GET_REMOVE"===b)return[a,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("REMOVE"===b)return a+";\n"}break;case "RANDOM":a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"VALUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()";if("GET"===b)return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_get_random_item",
226
+ `
227
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($list) {
228
+ return $list[rand(0,count($list)-1)];
229
+ }
230
+ `)+"("+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("GET_REMOVE"===b)return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_get_remove_random_item",`
231
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}(&$list) {
232
+ $x = rand(0,count($list)-1);
233
+ unset($list[$x]);
234
+ return array_values($list);
235
+ }
236
+ `)+"("+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL];if("REMOVE"===b)return module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_remove_random_item",`
237
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}(&$list) {
238
+ unset($list[rand(0,count($list)-1)]);
239
+ }
240
+ `)+"("+a+");\n"}throw Error("Unhandled combination (lists_getIndex).");};
241
+ module$exports$Blockly$PHP.phpGenerator.lists_setIndex=function(a){const b=a.getFieldValue("MODE")||"GET";var c=a.getFieldValue("WHERE")||"FROM_START";const d=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"TO",module$exports$Blockly$PHP.phpGenerator.ORDER_ASSIGNMENT)||"null";switch(c){case "FIRST":if("SET"===b)return(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER)||"array()")+"[0] = "+d+";\n";if("INSERT"===b)return"array_unshift("+
242
+ (module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+", "+d+");\n";break;case "LAST":a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()";if("SET"===b)return module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_set_last_item",`
243
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}(&$list, $value) {
244
+ $list[count($list) - 1] = $value;
245
+ }
246
+ `)+"("+a+", "+d+");\n";if("INSERT"===b)return"array_push("+a+", "+d+");\n";break;case "FROM_START":c=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT");if("SET"===b)return(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_MEMBER)||"array()")+"["+c+"] = "+d+";\n";if("INSERT"===b)return"array_splice("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()")+", "+c+", 0, "+
247
+ d+");\n";break;case "FROM_END":c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()";a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT",1);if("SET"===b)return module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_set_from_end",`
248
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {
249
+ $list[count($list) - $at] = $value;
250
+ }
251
+ `)+"("+c+", "+a+", "+d+");\n";if("INSERT"===b)return module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_insert_from_end",`
252
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {
253
+ return array_splice($list, count($list) - $at, 0, $value);
254
+ }
255
+ `)+"("+c+", "+a+", "+d+");\n";break;case "RANDOM":a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_REFERENCE)||"array()";if(a.match(/^\$\w+$/))c="";else{c=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName("tmp_list",$.NameType$$module$build$src$core$names.VARIABLE);var e=c+" = &"+a+";\n";a=c;c=e}e=module$exports$Blockly$PHP.phpGenerator.nameDB_.getDistinctName("tmp_x",$.NameType$$module$build$src$core$names.VARIABLE);c+=e+" = rand(0, count("+
256
+ a+")-1);\n";if("SET"===b)return c+(a+"["+e+"] = "+d+";\n");if("INSERT"===b)return c+("array_splice("+a+", "+e+", 0, "+d+");\n")}throw Error("Unhandled combination (lists_setIndex).");};
257
+ module$exports$Blockly$PHP.phpGenerator.lists_getSublist=function(a){var b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()",c=a.getFieldValue("WHERE1"),d=a.getFieldValue("WHERE2");if("FIRST"!==c||"LAST"!==d)if(b.match(/^\$\w+$/)||"FROM_END"!==c&&"FROM_START"===d){switch(c){case "FROM_START":c=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT1");break;case "FROM_END":c=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,
258
+ "AT1",1,!1,module$exports$Blockly$PHP.phpGenerator.ORDER_SUBTRACTION);c="count("+b+") - "+c;break;case "FIRST":c="0";break;default:throw Error("Unhandled option (lists_getSublist).");}switch(d){case "FROM_START":d=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT2",0,!1,module$exports$Blockly$PHP.phpGenerator.ORDER_SUBTRACTION);d+=" - ";d=$.module$build$src$core$utils$string.isNumber(String(c))||String(c).match(/^\(.+\)$/)?d+c:d+("("+c+")");d+=" + 1";break;case "FROM_END":d=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,
259
+ "AT2",0,!1,module$exports$Blockly$PHP.phpGenerator.ORDER_SUBTRACTION);d="count("+b+") - "+d+" - ";d=$.module$build$src$core$utils$string.isNumber(String(c))||String(c).match(/^\(.+\)$/)?d+c:d+("("+c+")");break;case "LAST":d="count("+b+") - ";d=$.module$build$src$core$utils$string.isNumber(String(c))||String(c).match(/^\(.+\)$/)?d+c:d+("("+c+")");break;default:throw Error("Unhandled option (lists_getSublist).");}b="array_slice("+b+", "+c+", "+d+")"}else{const e=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,
260
+ "AT1");a=module$exports$Blockly$PHP.phpGenerator.getAdjusted(a,"AT2");b=module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_get_sublist",`
261
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($list, $where1, $at1, $where2, $at2) {
262
+ if ($where1 == 'FROM_END') {
263
+ $at1 = count($list) - 1 - $at1;
264
+ } else if ($where1 == 'FIRST') {
265
+ $at1 = 0;
266
+ } else if ($where1 != 'FROM_START') {
267
+ throw new Exception('Unhandled option (lists_get_sublist).');
268
+ }
269
+ $length = 0;
270
+ if ($where2 == 'FROM_START') {
271
+ $length = $at2 - $at1 + 1;
272
+ } else if ($where2 == 'FROM_END') {
273
+ $length = count($list) - $at1 - $at2;
274
+ } else if ($where2 == 'LAST') {
275
+ $length = count($list) - $at1;
276
+ } else {
277
+ throw new Exception('Unhandled option (lists_get_sublist).');
278
+ }
279
+ return array_slice($list, $at1, $length);
280
+ }
281
+ `)+"("+b+", '"+c+"', "+e+", '"+d+"', "+a+")"}return[b,module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};module$exports$Blockly$PHP.phpGenerator.lists_sort=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"array()",c="1"===a.getFieldValue("DIRECTION")?1:-1;a=a.getFieldValue("TYPE");return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("lists_sort",`
282
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($list, $type, $direction) {
283
+ $sortCmpFuncs = array(
284
+ 'NUMERIC' => 'strnatcasecmp',
285
+ 'TEXT' => 'strcmp',
286
+ 'IGNORE_CASE' => 'strcasecmp'
287
+ );
288
+ $sortCmp = $sortCmpFuncs[$type];
289
+ $list2 = $list;
290
+ usort($list2, $sortCmp);
291
+ if ($direction == -1) {
292
+ $list2 = array_reverse($list2);
293
+ }
294
+ return $list2;
295
+ }
296
+ `)+"("+b+', "'+a+'", '+c+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
297
+ module$exports$Blockly$PHP.phpGenerator.lists_split=function(a){let b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"INPUT",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE);const c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"DELIM",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"''";a=a.getFieldValue("MODE");if("SPLIT"===a)b||(b="''"),a="explode";else if("JOIN"===a)b||(b="array()"),a="implode";else throw Error("Unknown mode: "+a);return[a+"("+c+", "+b+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
298
+ module$exports$Blockly$PHP.phpGenerator.lists_reverse=function(a){return["array_reverse("+(module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"LIST",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"[]")+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$colour={};module$exports$Blockly$PHP.phpGenerator.colour_picker=function(a){return[module$exports$Blockly$PHP.phpGenerator.quote_(a.getFieldValue("COLOUR")),module$exports$Blockly$PHP.phpGenerator.ORDER_ATOMIC]};module$exports$Blockly$PHP.phpGenerator.colour_random=function(a){return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("colour_random",`
299
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}() {
300
+ return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
301
+ }
302
+ `)+"()",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
303
+ module$exports$Blockly$PHP.phpGenerator.colour_rgb=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"RED",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||0,c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"GREEN",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||0;a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"BLUE",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||0;return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("colour_rgb",`
304
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($r, $g, $b) {
305
+ $r = round(max(min($r, 100), 0) * 2.55);
306
+ $g = round(max(min($g, 100), 0) * 2.55);
307
+ $b = round(max(min($b, 100), 0) * 2.55);
308
+ $hex = '#';
309
+ $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);
310
+ $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);
311
+ $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);
312
+ return $hex;
313
+ }
314
+ `)+"("+b+", "+c+", "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};
315
+ module$exports$Blockly$PHP.phpGenerator.colour_blend=function(a){const b=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"COLOUR1",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"'#000000'",c=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"COLOUR2",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||"'#000000'";a=module$exports$Blockly$PHP.phpGenerator.valueToCode(a,"RATIO",module$exports$Blockly$PHP.phpGenerator.ORDER_NONE)||.5;return[module$exports$Blockly$PHP.phpGenerator.provideFunction_("colour_blend",
316
+ `
317
+ function ${module$exports$Blockly$PHP.phpGenerator.FUNCTION_NAME_PLACEHOLDER_}($c1, $c2, $ratio) {
318
+ $ratio = max(min($ratio, 1), 0);
319
+ $r1 = hexdec(substr($c1, 1, 2));
320
+ $g1 = hexdec(substr($c1, 3, 2));
321
+ $b1 = hexdec(substr($c1, 5, 2));
322
+ $r2 = hexdec(substr($c2, 1, 2));
323
+ $g2 = hexdec(substr($c2, 3, 2));
324
+ $b2 = hexdec(substr($c2, 5, 2));
325
+ $r = round($r1 * (1 - $ratio) + $r2 * $ratio);
326
+ $g = round($g1 * (1 - $ratio) + $g2 * $ratio);
327
+ $b = round($b1 * (1 - $ratio) + $b2 * $ratio);
328
+ $hex = '#';
329
+ $hex .= str_pad(dechex($r), 2, '0', STR_PAD_LEFT);
330
+ $hex .= str_pad(dechex($g), 2, '0', STR_PAD_LEFT);
331
+ $hex .= str_pad(dechex($b), 2, '0', STR_PAD_LEFT);
332
+ return $hex;
333
+ }
334
+ `)+"("+b+", "+c+", "+a+")",module$exports$Blockly$PHP.phpGenerator.ORDER_FUNCTION_CALL]};var module$exports$Blockly$PHP$all=module$exports$Blockly$PHP;
335
+ module$exports$Blockly$PHP.__namespace__=$;
336
+ return module$exports$Blockly$PHP;
108
337
  }));
109
338
 
110
339